diff --git a/CHANGES.rst b/CHANGES.rst index dd23dc748af..fde0f75257e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -19,7 +19,7 @@ CHANGES - Accept `yarl.URL` by server redirections #1278 -- +- Return `yarl.URL` by `.make_url()` testing utility #1279 - diff --git a/aiohttp/test_utils.py b/aiohttp/test_utils.py index 8cffb3d6a21..4c39a9fa97f 100644 --- a/aiohttp/test_utils.py +++ b/aiohttp/test_utils.py @@ -10,6 +10,7 @@ from unittest import mock from multidict import CIMultiDict +from yarl import URL import aiohttp @@ -54,14 +55,22 @@ def start_server(self, **kwargs): if self.server: return self.port = unused_port() - self._root = '{}://{}:{}'.format(self.scheme, self.host, self.port) + self._root = URL('{}://{}:{}'.format(self.scheme, + self.host, + self.port)) self.handler = self.app.make_handler(**kwargs) self.server = yield from self._loop.create_server(self.handler, self.host, self.port) def make_url(self, path): - return self._root + path + assert path.startswith('/') + path = path[1:] + if path.startswith('?'): + # add a query to root path + return self._root.with_query(path[1:]) + else: + return self._root / path @asyncio.coroutine def close(self):