Py.test client fixture causes error
0nkery opened this issue · comments
Dmitry commented
Добавил в тесты client-fixture.
def test_with_name(client):
response = client.get("/test")
assert response.status_code == 200
assert "Hello test!" in response.text
При прогоне тестов - ошибка.
app/tests.py:16: in test_with_name
response = client.get("/test")
/usr/lib/python3.5/site-packages/webtest/app.py:323: in get
expect_errors=expect_errors)
/usr/lib/python3.5/site-packages/webtest/app.py:606: in do_request
res = req.get_response(app, catch_exc_info=True)
/usr/lib/python3.5/site-packages/webob/request.py:1313: in send
application, catch_exc_info=True)
/usr/lib/python3.5/site-packages/webob/request.py:1281: in call_application
app_iter = application(self.environ, start_response)
/usr/lib/python3.5/site-packages/webtest/lint.py:198: in lint_app
iterator = application(environ, start_response_wrapper)
/usr/lib/python3.5/site-packages/muffin/pytest.py:95: in handle
loop_.run_until_complete(coro)
/usr/lib/python3.5/asyncio/base_events.py:337: in run_until_complete
return future.result()
/usr/lib/python3.5/asyncio/futures.py:274: in result
raise self._exception
/usr/lib/python3.5/asyncio/tasks.py:239: in _step
result = coro.send(None)
/usr/lib/python3.5/site-packages/aiohttp/web.py:97: in handle_request
yield from resp.write_eof()
/usr/lib/python3.5/site-packages/aiohttp/web_reqrep.py:856: in write_eof
yield from super().write_eof()
/usr/lib/python3.5/site-packages/aiohttp/web_reqrep.py:755: in write_eof
yield from self._resp_impl.write_eof()
/usr/lib/python3.5/asyncio/streams.py:305: in drain
if self._transport.is_closing():
E AttributeError: '_io.BytesIO' object has no attribute 'is_closing'
Окружение:
platform linux -- Python 3.5.1, pytest-2.8.7
(билд питона от 9 декабря 2015 г.)alpine linux
Запускаю в контейнере Docker, но не думаю, что это влияет на что бы то ни было.
Нашел такую интеграцию webtest и aiohttp.
Но для использования этой библиотечки требуются Ваши хаки aiohttp.StreamWriter, a именно:
monkeypatch.setattr(aiohttp.parsers.StreamWriter, 'set_tcp_cork', lambda s, v: True)
monkeypatch.setattr(aiohttp.parsers.StreamWriter, 'set_tcp_nodelay', lambda s, v: True)
PS. Про приложение - это пример в ~10 строк с README-файла.
Kirill Klenov commented
Эта библиотека с кода muffin и списана, там даже ремарка есть. Почему у вас тесты упали, сходу не понял, будет время посмотрю.
Dmitry commented
На версиях питона ниже 3.5.1 такой ошибки не возникает.
Ссылка на источник ошибки (99.9%) - вот.
Dmitry commented
Спасибо.