diff --git a/tests/mockserver.py b/tests/mockserver.py
index e7953c4d4..336633f4b 100644
--- a/tests/mockserver.py
+++ b/tests/mockserver.py
@@ -7,6 +7,7 @@ from twisted.web.server import Site, NOT_DONE_YET
from twisted.web.resource import Resource
from twisted.internet import reactor, defer, ssl
from scrapy import twisted_version
+from scrapy.utils.python import to_bytes
if twisted_version < (11, 0, 0):
@@ -55,12 +56,12 @@ class LeafResource(Resource):
class Follow(LeafResource):
def render(self, request):
- total = getarg(request, "total", 100, type=int)
- show = getarg(request, "show", 1, type=int)
- order = getarg(request, "order", "desc")
- maxlatency = getarg(request, "maxlatency", 0, type=float)
- n = getarg(request, "n", total, type=int)
- if order == "rand":
+ total = getarg(request, b"total", 100, type=int)
+ show = getarg(request, b"show", 1, type=int)
+ order = getarg(request, b"order", b"desc")
+ maxlatency = getarg(request, b"maxlatency", 0, type=float)
+ n = getarg(request, b"n", total, type=int)
+ if order == b"rand":
nlist = [random.randint(1, total) for _ in range(show)]
else: # order == "desc"
nlist = range(n, max(n - show, 0), -1)
@@ -73,19 +74,19 @@ class Follow(LeafResource):
s = """
"""
args = request.args.copy()
for nl in nlist:
- args["n"] = [str(nl)]
+ args[b"n"] = [to_bytes(str(nl))]
argstr = urlencode(args, doseq=True)
s += "follow %d
" % (argstr, nl)
s += """"""
- request.write(s)
+ request.write(to_bytes(s))
request.finish()
class Delay(LeafResource):
def render_GET(self, request):
- n = getarg(request, "n", 1, type=float)
- b = getarg(request, "b", 1, type=int)
+ n = getarg(request, b"n", 1, type=float)
+ b = getarg(request, b"b", 1, type=int)
if b:
# send headers now and delay body
request.write('')
@@ -93,16 +94,16 @@ class Delay(LeafResource):
return NOT_DONE_YET
def _delayedRender(self, request, n):
- request.write("Response delayed for %0.3f seconds\n" % n)
+ request.write(to_bytes("Response delayed for %0.3f seconds\n" % n))
request.finish()
class Status(LeafResource):
def render_GET(self, request):
- n = getarg(request, "n", 200, type=int)
+ n = getarg(request, b"n", 200, type=int)
request.setResponseCode(n)
- return ""
+ return b""
class Raw(LeafResource):
@@ -114,7 +115,7 @@ class Raw(LeafResource):
render_POST = render_GET
def _delayedRender(self, request):
- raw = getarg(request, 'raw', 'HTTP 1.1 200 OK\n')
+ raw = getarg(request, b'raw', b'HTTP 1.1 200 OK\n')
request.startedWriting = 1
request.write(raw)
request.channel.transport.loseConnection()
@@ -128,7 +129,7 @@ class Echo(LeafResource):
'headers': dict(request.requestHeaders.getAllRawHeaders()),
'body': request.content.read(),
}
- return json.dumps(output)
+ return to_bytes(json.dumps(output))
class Partial(LeafResource):
@@ -146,7 +147,7 @@ class Partial(LeafResource):
class Drop(Partial):
def _delayedRender(self, request):
- abort = getarg(request, "abort", 0, type=int)
+ abort = getarg(request, b"abort", 0, type=int)
request.write(b"this connection will be dropped\n")
tr = request.channel.transport
try: