Coder Social home page Coder Social logo

Comments (2)

seifertm avatar seifertm commented on June 21, 2024

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.

diman82 avatar diman82 commented on June 21, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.