klen / muffin

Muffin is a fast, simple and asyncronous web-framework for Python 3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Py.test client fixture causes error

0nkery opened this issue · comments

Добавил в тесты 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-файла.

Эта библиотека с кода muffin и списана, там даже ремарка есть. Почему у вас тесты упали, сходу не понял, будет время посмотрю.

На версиях питона ниже 3.5.1 такой ошибки не возникает.

Ссылка на источник ошибки (99.9%) - вот.

Спасибо.