Skip to content

Failing test suite with pytest 7 due to deprecation warnings #6663

@bnavigator

Description

@bnavigator

Describe the bug

Pytest 7 deprecates the usage of pytest.warns(None). See pytest-dev/pytest#9404 for a discussion about it.

The test suite erroring out on any warning fails with pytest 7.1.1

To Reproduce

  1. Install a recent pytest (7.1.1)
  2. Run pytest on the aiohttp source

Expected behavior

Clean pass

Logs/tracebacks

[  106s] =================================== FAILURES ===================================
[  106s] ___________________________ test_async_with_session ____________________________
[  106s] 
[  106s]     async def test_async_with_session() -> None:
[  106s] >       with pytest.warns(None) as cm:
[  106s] 
[  106s] 
[  106s] tests/test_client_functional.py:2431: 
[  106s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  106s] 
[  106s] self = WarningsChecker(record=True), expected_warning = None, match_expr = None
[  106s] 
[  106s]     def __init__(
[  106s]         self,
[  106s]         expected_warning: Optional[
[  106s]             Union[Type[Warning], Tuple[Type[Warning], ...]]
[  106s]         ] = Warning,
[  106s]         match_expr: Optional[Union[str, Pattern[str]]] = None,
[  106s]         *,
[  106s]         _ispytest: bool = False,
[  106s]     ) -> None:
[  106s]         check_ispytest(_ispytest)
[  106s]         super().__init__(_ispytest=True)
[  106s]     
[  106s]         msg = "exceptions must be derived from Warning, not %s"
[  106s]         if expected_warning is None:
[  106s] >           warnings.warn(WARNS_NONE_ARG, stacklevel=4)
[  106s] E           pytest.PytestRemovedIn8Warning: Passing None has been deprecated.
[  106s] E           See https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.
[  106s] 
[  106s] __class__  = <class '_pytest.recwarn.WarningsChecker'>
[  106s] _ispytest  = True
[  106s] expected_warning = None
[  106s] match_expr = None
[  106s] msg        = 'exceptions must be derived from Warning, not %s'
[  106s] self       = WarningsChecker(record=True)
[  106s] 
[  106s] /usr/lib/python3.9/site-packages/_pytest/recwarn.py:246: PytestRemovedIn8Warning
[  106s] _________________________ test_session_close_awaitable _________________________
[  106s] 
[  106s]     async def test_session_close_awaitable() -> None:
[  106s]         session = aiohttp.ClientSession()
[  106s] >       with pytest.warns(None) as cm:
[  106s] 
[  106s] session    = <aiohttp.client.ClientSession object at 0x7f74353d5400>
[  106s] 
[  106s] tests/test_client_functional.py:2441: 
[  106s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  106s] /usr/lib/python3.9/site-packages/_pytest/recwarn.py:246: in __init__
[  106s]     warnings.warn(WARNS_NONE_ARG, stacklevel=4)
[  106s]         __class__  = <class '_pytest.recwarn.WarningsChecker'>
[  106s]         _ispytest  = True
[  106s]         expected_warning = None
[  106s]         match_expr = None
[  106s]         msg        = 'exceptions must be derived from Warning, not %s'
[  106s]         self       = WarningsChecker(record=True)
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:338: in from_call
[  106s]     result: Optional[TResult] = func()
[  106s]         cls        = <class '_pytest.runner.CallInfo'>
[  106s]         duration   = 0.0002979149999191577
[  106s]         excinfo    = <ExceptionInfo PytestRemovedIn8Warning('Passing None has been deprecated.\nSee https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.') tblen=2>
[  106s]         func       = <function call_runtest_hook.<locals>.<lambda> at 0x7f74333c05e0>
[  106s]         precise_start = 880.992611685
[  106s]         precise_stop = 880.9929096
[  106s]         reraise    = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
[  106s]         result     = None
[  106s]         start      = 1648463406.1733868
[  106s]         stop       = 1648463406.1736853
[  106s]         when       = 'call'
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:259: in <lambda>
[  106s]     lambda: ihook(item=item, **kwds), when=when, reraise=reraise
[  106s]         ihook      = <_HookCaller 'pytest_runtest_call'>
[  106s]         item       = <Function test_async_with_session>
[  106s]         kwds       = {}
[  106s] /usr/lib/python3.9/site-packages/pluggy/_hooks.py:265: in __call__
[  106s]     return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
[  106s]         argname    = 'item'
[  106s]         args       = ()
[  106s]         firstresult = False
[  106s]         kwargs     = {'item': <Function test_async_with_session>}
[  106s]         self       = <_HookCaller 'pytest_runtest_call'>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_manager.py:80: in _hookexec
[  106s]     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
[  106s]         firstresult = False
[  106s]         hook_name  = 'pytest_runtest_call'
[  106s]         kwargs     = {'item': <Function test_async_with_session>}
[  106s]         methods    = [<HookImpl plugin_name='runner', plugin=<module '_pytest.runner' from '/usr/lib/python3.9/site-packages/_pytest/runner.py'>>,
[  106s]  <HookImpl plugin_name='skipping', plugin=<module '_pytest.skipping' from '/usr/lib/python3.9/site-packages/_pytest/skipping.py'>>,
[  106s]  <HookImpl plugin_name='timeout', plugin=<module 'pytest_timeout' from '/usr/lib/python3.9/site-packages/pytest_timeout.py'>>,
[  106s]  <HookImpl plugin_name='capturemanager', plugin=<CaptureManager _method='fd' _global_capturing=<MultiCapture out=<FDCapture 1 oldfd=5 _state='suspended' tmpfile=<_io.TextIOWrapper name="<_io.FileIO name=6 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>> err=<FDCapture 2 oldfd=7 _state='suspended' tmpfile=<_io.TextIOWrapper name="<_io.FileIO name=8 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>> in_=<FDCapture 0 oldfd=3 _state='started' tmpfile=<_io.TextIOWrapper name='/dev/null' mode='r' encoding='UTF-8'>> _state='suspended' _in_suspended=False> _capture_fixture=None>>,
[  106s]  <HookImpl plugin_name='logging-plugin', plugin=<_pytest.logging.LoggingPlugin object at 0x7f7435a2d910>>,
[  106s]  <HookImpl plugin_name='unraisableexception', plugin=<module '_pytest.unraisableexception' from '/usr/lib/python3.9/site-packages/_pytest/unraisableexception.py'>>,
[  106s]  <HookImpl plugin_name='threadexception', plugin=<module '_pytest.threadexception' from '/usr/lib/python3.9/site-packages/_pytest/threadexception.py'>>]
[  106s]         self       = <_pytest.config.PytestPluginManager object at 0x7f7437ca8f70>
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:174: in pytest_runtest_call
[  106s]     raise e
[  106s]         item       = <Function test_async_with_session>
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:166: in pytest_runtest_call
[  106s]     item.runtest()
[  106s]         item       = <Function test_async_with_session>
[  106s] /usr/lib/python3.9/site-packages/_pytest/python.py:1761: in runtest
[  106s]     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
[  106s]         self       = <Function test_async_with_session>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_hooks.py:265: in __call__
[  106s]     return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
[  106s]         argname    = 'pyfuncitem'
[  106s]         args       = ()
[  106s]         firstresult = True
[  106s]         kwargs     = {'pyfuncitem': <Function test_async_with_session>}
[  106s]         self       = <_HookCaller 'pytest_pyfunc_call'>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_manager.py:80: in _hookexec
[  106s]     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
[  106s]         firstresult = True
[  106s]         hook_name  = 'pytest_pyfunc_call'
[  106s]         kwargs     = {'pyfuncitem': <Function test_async_with_session>}
[  106s]         methods    = [<HookImpl plugin_name='python', plugin=<module '_pytest.python' from '/usr/lib/python3.9/site-packages/_pytest/python.py'>>,
[  106s]  <HookImpl plugin_name='aiohttp.pytest_plugin', plugin=<module 'aiohttp.pytest_plugin' from '/home/abuild/rpmbuild/BUILDROOT/python-aiohttp-3.8.1-0.x86_64/usr/lib64/python3.9/site-packages/aiohttp/pytest_plugin.py'>>]
[  106s]         self       = <_pytest.config.PytestPluginManager object at 0x7f7437ca8f70>
[  106s] ../../BUILDROOT/python-aiohttp-3.8.1-0.x86_64/usr/lib64/python3.9/site-packages/aiohttp/pytest_plugin.py:186: in pytest_pyfunc_call
[  106s]     _loop.run_until_complete(pyfuncitem.obj(**testargs))
[  106s]         _loop      = <_UnixSelectorEventLoop running=False closed=False debug=False>
[  106s]         existing_loop = None
[  106s]         fast       = False
[  106s]         pyfuncitem = <Function test_async_with_session>
[  106s]         testargs   = {}
[  106s] /usr/lib64/python3.9/asyncio/base_events.py:642: in run_until_complete
[  106s]     return future.result()
[  106s]         future     = <Task finished name='Task-1096' coro=<test_async_with_session() done, defined at /home/abuild/rpmbuild/BUILD/aiohttp-3.8.1/tests/test_client_functional.py:2430> exception=PytestRemovedIn8Warning('Passing None has been deprecated.\nSee https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.')>
[  106s]         new_task   = True
[  106s]         self       = <_UnixSelectorEventLoop running=False closed=False debug=False>
[  106s] tests/test_client_functional.py:2431: in test_async_with_session
[  106s]     with pytest.warns(None) as cm:
[  106s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  106s] 
[  106s] self = WarningsChecker(record=True), expected_warning = None, match_expr = None
[  106s] 
[  106s]     def __init__(
[  106s]         self,
[  106s]         expected_warning: Optional[
[  106s]             Union[Type[Warning], Tuple[Type[Warning], ...]]
[  106s]         ] = Warning,
[  106s]         match_expr: Optional[Union[str, Pattern[str]]] = None,
[  106s]         *,
[  106s]         _ispytest: bool = False,
[  106s]     ) -> None:
[  106s]         check_ispytest(_ispytest)
[  106s]         super().__init__(_ispytest=True)
[  106s]     
[  106s]         msg = "exceptions must be derived from Warning, not %s"
[  106s]         if expected_warning is None:
[  106s] >           warnings.warn(WARNS_NONE_ARG, stacklevel=4)
[  106s] E           pytest.PytestRemovedIn8Warning: Passing None has been deprecated.
[  106s] E           See https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.
[  106s] 
[  106s] __class__  = <class '_pytest.recwarn.WarningsChecker'>
[  106s] _ispytest  = True
[  106s] expected_warning = None
[  106s] match_expr = None
[  106s] msg        = 'exceptions must be derived from Warning, not %s'
[  106s] self       = WarningsChecker(record=True)
[  106s] 
[  106s] /usr/lib/python3.9/site-packages/_pytest/recwarn.py:246: PytestRemovedIn8Warning
[  106s] _________________ test_close_run_until_complete_not_deprecated _________________
[  106s] 
[  106s]     async def test_close_run_until_complete_not_deprecated() -> None:
[  106s]         session = aiohttp.ClientSession()
[  106s]     
[  106s] >       with pytest.warns(None) as cm:
[  106s] 
[  106s] session    = <aiohttp.client.ClientSession object at 0x7f74330d5100>
[  106s] 
[  106s] tests/test_client_functional.py:2451: 
[  106s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  106s] /usr/lib/python3.9/site-packages/_pytest/recwarn.py:246: in __init__
[  106s]     warnings.warn(WARNS_NONE_ARG, stacklevel=4)
[  106s]         __class__  = <class '_pytest.recwarn.WarningsChecker'>
[  106s]         _ispytest  = True
[  106s]         expected_warning = None
[  106s]         match_expr = None
[  106s]         msg        = 'exceptions must be derived from Warning, not %s'
[  106s]         self       = WarningsChecker(record=True)
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:338: in from_call
[  106s]     result: Optional[TResult] = func()
[  106s]         cls        = <class '_pytest.runner.CallInfo'>
[  106s]         duration   = 0.00033854299999802606
[  106s]         excinfo    = <ExceptionInfo PytestRemovedIn8Warning('Passing None has been deprecated.\nSee https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.') tblen=15>
[  106s]         func       = <function call_runtest_hook.<locals>.<lambda> at 0x7f7434aa0dc0>
[  106s]         precise_start = 881.032735979
[  106s]         precise_stop = 881.033074522
[  106s]         reraise    = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
[  106s]         result     = None
[  106s]         start      = 1648463406.2135112
[  106s]         stop       = 1648463406.21385
[  106s]         when       = 'call'
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:259: in <lambda>
[  106s]     lambda: ihook(item=item, **kwds), when=when, reraise=reraise
[  106s]         ihook      = <_HookCaller 'pytest_runtest_call'>
[  106s]         item       = <Function test_session_close_awaitable>
[  106s]         kwds       = {}
[  106s] /usr/lib/python3.9/site-packages/pluggy/_hooks.py:265: in __call__
[  106s]     return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
[  106s]         argname    = 'item'
[  106s]         args       = ()
[  106s]         firstresult = False
[  106s]         kwargs     = {'item': <Function test_session_close_awaitable>}
[  106s]         self       = <_HookCaller 'pytest_runtest_call'>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_manager.py:80: in _hookexec
[  106s]     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
[  106s]         firstresult = False
[  106s]         hook_name  = 'pytest_runtest_call'
[  106s]         kwargs     = {'item': <Function test_session_close_awaitable>}
[  106s]         methods    = [<HookImpl plugin_name='runner', plugin=<module '_pytest.runner' from '/usr/lib/python3.9/site-packages/_pytest/runner.py'>>,
[  106s]  <HookImpl plugin_name='skipping', plugin=<module '_pytest.skipping' from '/usr/lib/python3.9/site-packages/_pytest/skipping.py'>>,
[  106s]  <HookImpl plugin_name='timeout', plugin=<module 'pytest_timeout' from '/usr/lib/python3.9/site-packages/pytest_timeout.py'>>,
[  106s]  <HookImpl plugin_name='capturemanager', plugin=<CaptureManager _method='fd' _global_capturing=<MultiCapture out=<FDCapture 1 oldfd=5 _state='suspended' tmpfile=<_io.TextIOWrapper name="<_io.FileIO name=6 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>> err=<FDCapture 2 oldfd=7 _state='suspended' tmpfile=<_io.TextIOWrapper name="<_io.FileIO name=8 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>> in_=<FDCapture 0 oldfd=3 _state='started' tmpfile=<_io.TextIOWrapper name='/dev/null' mode='r' encoding='UTF-8'>> _state='suspended' _in_suspended=False> _capture_fixture=None>>,
[  106s]  <HookImpl plugin_name='logging-plugin', plugin=<_pytest.logging.LoggingPlugin object at 0x7f7435a2d910>>,
[  106s]  <HookImpl plugin_name='unraisableexception', plugin=<module '_pytest.unraisableexception' from '/usr/lib/python3.9/site-packages/_pytest/unraisableexception.py'>>,
[  106s]  <HookImpl plugin_name='threadexception', plugin=<module '_pytest.threadexception' from '/usr/lib/python3.9/site-packages/_pytest/threadexception.py'>>]
[  106s]         self       = <_pytest.config.PytestPluginManager object at 0x7f7437ca8f70>
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:174: in pytest_runtest_call
[  106s]     raise e
[  106s]         item       = <Function test_session_close_awaitable>
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:166: in pytest_runtest_call
[  106s]     item.runtest()
[  106s]         item       = <Function test_session_close_awaitable>
[  106s] /usr/lib/python3.9/site-packages/_pytest/python.py:1761: in runtest
[  106s]     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
[  106s]         self       = <Function test_session_close_awaitable>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_hooks.py:265: in __call__
[  106s]     return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
[  106s]         argname    = 'pyfuncitem'
[  106s]         args       = ()
[  106s]         firstresult = True
[  106s]         kwargs     = {'pyfuncitem': <Function test_session_close_awaitable>}
[  106s]         self       = <_HookCaller 'pytest_pyfunc_call'>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_manager.py:80: in _hookexec
[  106s]     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
[  106s]         firstresult = True
[  106s]         hook_name  = 'pytest_pyfunc_call'
[  106s]         kwargs     = {'pyfuncitem': <Function test_session_close_awaitable>}
[  106s]         methods    = [<HookImpl plugin_name='python', plugin=<module '_pytest.python' from '/usr/lib/python3.9/site-packages/_pytest/python.py'>>,
[  106s]  <HookImpl plugin_name='aiohttp.pytest_plugin', plugin=<module 'aiohttp.pytest_plugin' from '/home/abuild/rpmbuild/BUILDROOT/python-aiohttp-3.8.1-0.x86_64/usr/lib64/python3.9/site-packages/aiohttp/pytest_plugin.py'>>]
[  106s]         self       = <_pytest.config.PytestPluginManager object at 0x7f7437ca8f70>
[  106s] ../../BUILDROOT/python-aiohttp-3.8.1-0.x86_64/usr/lib64/python3.9/site-packages/aiohttp/pytest_plugin.py:186: in pytest_pyfunc_call
[  106s]     _loop.run_until_complete(pyfuncitem.obj(**testargs))
[  106s]         _loop      = <_UnixSelectorEventLoop running=False closed=False debug=False>
[  106s]         existing_loop = None
[  106s]         fast       = False
[  106s]         pyfuncitem = <Function test_session_close_awaitable>
[  106s]         testargs   = {}
[  106s] /usr/lib64/python3.9/asyncio/base_events.py:642: in run_until_complete
[  106s]     return future.result()
[  106s]         future     = <Task finished name='Task-1097' coro=<test_session_close_awaitable() done, defined at /home/abuild/rpmbuild/BUILD/aiohttp-3.8.1/tests/test_client_functional.py:2439> exception=PytestRemovedIn8Warning('Passing None has been deprecated.\nSee https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.')>
[  106s]         new_task   = True
[  106s]         self       = <_UnixSelectorEventLoop running=False closed=False debug=False>
[  106s] tests/test_client_functional.py:2441: in test_session_close_awaitable
[  106s]     with pytest.warns(None) as cm:
[  106s]         session    = <aiohttp.client.ClientSession object at 0x7f74353d5400>
[  106s] /usr/lib/python3.9/site-packages/_pytest/recwarn.py:246: in __init__
[  106s]     warnings.warn(WARNS_NONE_ARG, stacklevel=4)
[  106s]         __class__  = <class '_pytest.recwarn.WarningsChecker'>
[  106s]         _ispytest  = True
[  106s]         expected_warning = None
[  106s]         match_expr = None
[  106s]         msg        = 'exceptions must be derived from Warning, not %s'
[  106s]         self       = WarningsChecker(record=True)
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:338: in from_call
[  106s]     result: Optional[TResult] = func()
[  106s]         cls        = <class '_pytest.runner.CallInfo'>
[  106s]         duration   = 0.0002979149999191577
[  106s]         excinfo    = <ExceptionInfo PytestRemovedIn8Warning('Passing None has been deprecated.\nSee https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.') tblen=2>
[  106s]         func       = <function call_runtest_hook.<locals>.<lambda> at 0x7f74333c05e0>
[  106s]         precise_start = 880.992611685
[  106s]         precise_stop = 880.9929096
[  106s]         reraise    = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>)
[  106s]         result     = None
[  106s]         start      = 1648463406.1733868
[  106s]         stop       = 1648463406.1736853
[  106s]         when       = 'call'
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:259: in <lambda>
[  106s]     lambda: ihook(item=item, **kwds), when=when, reraise=reraise
[  106s]         ihook      = <_HookCaller 'pytest_runtest_call'>
[  106s]         item       = <Function test_async_with_session>
[  106s]         kwds       = {}
[  106s] /usr/lib/python3.9/site-packages/pluggy/_hooks.py:265: in __call__
[  106s]     return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
[  106s]         argname    = 'item'
[  106s]         args       = ()
[  106s]         firstresult = False
[  106s]         kwargs     = {'item': <Function test_async_with_session>}
[  106s]         self       = <_HookCaller 'pytest_runtest_call'>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_manager.py:80: in _hookexec
[  106s]     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
[  106s]         firstresult = False
[  106s]         hook_name  = 'pytest_runtest_call'
[  106s]         kwargs     = {'item': <Function test_async_with_session>}
[  106s]         methods    = [<HookImpl plugin_name='runner', plugin=<module '_pytest.runner' from '/usr/lib/python3.9/site-packages/_pytest/runner.py'>>,
[  106s]  <HookImpl plugin_name='skipping', plugin=<module '_pytest.skipping' from '/usr/lib/python3.9/site-packages/_pytest/skipping.py'>>,
[  106s]  <HookImpl plugin_name='timeout', plugin=<module 'pytest_timeout' from '/usr/lib/python3.9/site-packages/pytest_timeout.py'>>,
[  106s]  <HookImpl plugin_name='capturemanager', plugin=<CaptureManager _method='fd' _global_capturing=<MultiCapture out=<FDCapture 1 oldfd=5 _state='suspended' tmpfile=<_io.TextIOWrapper name="<_io.FileIO name=6 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>> err=<FDCapture 2 oldfd=7 _state='suspended' tmpfile=<_io.TextIOWrapper name="<_io.FileIO name=8 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>> in_=<FDCapture 0 oldfd=3 _state='started' tmpfile=<_io.TextIOWrapper name='/dev/null' mode='r' encoding='UTF-8'>> _state='suspended' _in_suspended=False> _capture_fixture=None>>,
[  106s]  <HookImpl plugin_name='logging-plugin', plugin=<_pytest.logging.LoggingPlugin object at 0x7f7435a2d910>>,
[  106s]  <HookImpl plugin_name='unraisableexception', plugin=<module '_pytest.unraisableexception' from '/usr/lib/python3.9/site-packages/_pytest/unraisableexception.py'>>,
[  106s]  <HookImpl plugin_name='threadexception', plugin=<module '_pytest.threadexception' from '/usr/lib/python3.9/site-packages/_pytest/threadexception.py'>>]
[  106s]         self       = <_pytest.config.PytestPluginManager object at 0x7f7437ca8f70>
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:174: in pytest_runtest_call
[  106s]     raise e
[  106s]         item       = <Function test_async_with_session>
[  106s] /usr/lib/python3.9/site-packages/_pytest/runner.py:166: in pytest_runtest_call
[  106s]     item.runtest()
[  106s]         item       = <Function test_async_with_session>
[  106s] /usr/lib/python3.9/site-packages/_pytest/python.py:1761: in runtest
[  106s]     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
[  106s]         self       = <Function test_async_with_session>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_hooks.py:265: in __call__
[  106s]     return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
[  106s]         argname    = 'pyfuncitem'
[  106s]         args       = ()
[  106s]         firstresult = True
[  106s]         kwargs     = {'pyfuncitem': <Function test_async_with_session>}
[  106s]         self       = <_HookCaller 'pytest_pyfunc_call'>
[  106s] /usr/lib/python3.9/site-packages/pluggy/_manager.py:80: in _hookexec
[  106s]     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
[  106s]         firstresult = True
[  106s]         hook_name  = 'pytest_pyfunc_call'
[  106s]         kwargs     = {'pyfuncitem': <Function test_async_with_session>}
[  106s]         methods    = [<HookImpl plugin_name='python', plugin=<module '_pytest.python' from '/usr/lib/python3.9/site-packages/_pytest/python.py'>>,
[  106s]  <HookImpl plugin_name='aiohttp.pytest_plugin', plugin=<module 'aiohttp.pytest_plugin' from '/home/abuild/rpmbuild/BUILDROOT/python-aiohttp-3.8.1-0.x86_64/usr/lib64/python3.9/site-packages/aiohttp/pytest_plugin.py'>>]
[  106s]         self       = <_pytest.config.PytestPluginManager object at 0x7f7437ca8f70>
[  106s] ../../BUILDROOT/python-aiohttp-3.8.1-0.x86_64/usr/lib64/python3.9/site-packages/aiohttp/pytest_plugin.py:186: in pytest_pyfunc_call
[  106s]     _loop.run_until_complete(pyfuncitem.obj(**testargs))
[  106s]         _loop      = <_UnixSelectorEventLoop running=False closed=False debug=False>
[  106s]         existing_loop = None
[  106s]         fast       = False
[  106s]         pyfuncitem = <Function test_async_with_session>
[  106s]         testargs   = {}
[  106s] /usr/lib64/python3.9/asyncio/base_events.py:642: in run_until_complete
[  106s]     return future.result()
[  106s]         future     = <Task finished name='Task-1096' coro=<test_async_with_session() done, defined at /home/abuild/rpmbuild/BUILD/aiohttp-3.8.1/tests/test_client_functional.py:2430> exception=PytestRemovedIn8Warning('Passing None has been deprecated.\nSee https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.')>
[  106s]         new_task   = True
[  106s]         self       = <_UnixSelectorEventLoop running=False closed=False debug=False>
[  106s] tests/test_client_functional.py:2431: in test_async_with_session
[  106s]     with pytest.warns(None) as cm:
[  106s] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[  106s] 
[  106s] self = WarningsChecker(record=True), expected_warning = None, match_expr = None
[  106s] 
[  106s]     def __init__(
[  106s]         self,
[  106s]         expected_warning: Optional[
[  106s]             Union[Type[Warning], Tuple[Type[Warning], ...]]
[  106s]         ] = Warning,
[  106s]         match_expr: Optional[Union[str, Pattern[str]]] = None,
[  106s]         *,
[  106s]         _ispytest: bool = False,
[  106s]     ) -> None:
[  106s]         check_ispytest(_ispytest)
[  106s]         super().__init__(_ispytest=True)
[  106s]     
[  106s]         msg = "exceptions must be derived from Warning, not %s"
[  106s]         if expected_warning is None:
[  106s] >           warnings.warn(WARNS_NONE_ARG, stacklevel=4)
[  106s] E           pytest.PytestRemovedIn8Warning: Passing None has been deprecated.
[  106s] E           See https://docs.pytest.org/en/latest/how-to/capture-warnings.html#additional-use-cases-of-warnings-in-tests for alternatives in common use cases.
[  106s] 
[  106s] __class__  = <class '_pytest.recwarn.WarningsChecker'>
[  106s] _ispytest  = True
[  106s] expected_warning = None
[  106s] match_expr = None
[  106s] msg        = 'exceptions must be derived from Warning, not %s'
[  106s] self       = WarningsChecker(record=True)
[  106s] 
[  106s] /usr/lib/python3.9/site-packages/_pytest/recwarn.py:246: PytestRemovedIn8Warning

Python Version

[   22s] ============================= test session starts ==============================
[   22s] platform linux -- Python 3.9.10, pytest-7.1.1, pluggy-1.0.0 -- /usr/bin/python3.9
[   22s] cachedir: .pytest_cache
[   22s] rootdir: /home/abuild/rpmbuild/BUILD/aiohttp-3.8.1, configfile: setup.cfg, testpaths: tests/
[   22s] plugins: timeout-2.0.2, mock-3.6.1

aiohttp Version

3.8.1

multidict Version

6.0.2

yarl Version

1.7.2

OS

openSUSE Tumbleweed Linux

Related component

Server, Client

Additional context

No response

Code of Conduct

  • I agree to follow the aio-libs Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions