Comments (2)
This is the issue tracker for pytest-asyncio, a pytest plugin to simplify running of asyncio code in tests.
I don't see how your code example has anything to do with pytest-asyncio or event pytest. Maybe you've posted this in the wrong project?
That said, your error message is caused by the fact that a
is of type AsyncMock
. Change this to a = Mock()
and it works.
from pytest-asyncio.
Get the same error for my test function:
main logic fn:
async def check_website_and_log_error_to_db(website: Website, db_wrapper: PostgresWrapper,
session: aiohttp.ClientSession):
request_start_time = time.time()
async with session.get(website.url) as response:
html = await response.text()
response_time = time.time()
if not response.ok: # == failure, write to db
website_db = WebsiteDBModel(id=str(uuid.uuid4()), website_url=website.url, website_name=website.name,
request_ts=request_start_time, response_ts=response_time,
status_code=response.status, contents=html,
failure_details='response status not 2XX')
db_wrapper.write_failed_site(website_db)
test fn:
@pytest.mark.asyncio
async def test_website_check_availability_200():
website = Website('http://facebook.com', 'Facebook', 10, 'abracadabra2')
session_mock = MagicMock()
response_mock = AsyncMock()
response_mock.status = 200
session_mock.get = AsyncMock(return_value=response_mock)
mock_postgres_wrapper = TestingPostgresWrapper()
res = await check_website_and_log_error_to_db(website, mock_postgres_wrapper, session_mock)
assert res.status == 200
error:
test_asyncio.py::test_website_check_availability_200 FAILED [100%]
test_asyncio.py:9 (test_website_check_availability_200)
@pytest.mark.asyncio
async def test_website_check_availability_200():
website = Website('http://facebook.com', 'Facebook', 10, 'abracadabra2')
session_mock = MagicMock()
response_mock = AsyncMock()
response_mock.status = 200
session_mock.get = AsyncMock(return_value=response_mock)
mock_postgres_wrapper = TestingPostgresWrapper()
> res = await check_website_and_log_error_to_db(website, mock_postgres_wrapper, session_mock)
test_asyncio.py:20:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
website = Website(url='http://facebook.com', name='Facebook', check_interval=10, regexp='abracadabra2')
db_wrapper = <tests.tests_postgres.TestingPostgresWrapper object at 0x000001A7B82D5A90>
session = <MagicMock id='1819861148752'>
async def check_website_and_log_error_to_db(website: Website, db_wrapper: PostgresWrapper,
session: aiohttp.ClientSession):
request_start_time = time.time()
> async with session.get(website.url) as response:
E TypeError: 'coroutine' object does not support the asynchronous context manager protocol
from pytest-asyncio.
Related Issues (20)
- AsyncGenerator early exit doesn't raise CancelledError and doesn't run `finally` branch HOT 4
- RuntimeError: "Timeout context manager should be used inside a task" in aiohttp with version 0.23 pytest-asyncio HOT 1
- pytest 8.0.0 AttributeError: 'Package' object has no attribute 'obj' HOT 2
- AttributeError: '_UnixSelectorEventLoop' object has no attribute '_compute_internal_coro' HOT 1
- Drop support for pytest 7
- Factory fixtures are causing `'Coroutine' object is not callable` warning in UI, but tests still run HOT 3
- Configuration option for default loop scope
- Parametrizing `event_loop_policy` parametrizes all tests
- Not compatible with --doctest-modules --doctest-ignore-import-errors HOT 1
- How to use event_loop_policy without triggering warnings? HOT 1
- "The test […] is not an async function" when `asyncio` marker is added via `pytest_collection_modifyitems()` HOT 1
- Warn when passing scope as positional argument
- iter_markers_with_node() has double entries for async test functions HOT 3
- Weird interaction with pytest-mock: not requesting event_loop fixture leads to errors
- pytest-asyncio 0.23 doesn't allow class-scoped fixtures outside of class definition HOT 1
- "OSError: could not get source code" Came Up When "pytest_fixture_setup()" Executed HOT 4
- async fixtures yield async_generator instead of the object yielded HOT 1
- You need to install a suitable plugin for your async framework, for example:
- The event loop of Motor unexpected closed when I using fastapi.testclient.TestClient to test my api HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pytest-asyncio.