-
- Notifications
You must be signed in to change notification settings - Fork 2.9k
Closed
Labels
topic: fixturesanything involving fixtures directly or indirectlyanything involving fixtures directly or indirectlytype: bugproblem that needs to be addressedproblem that needs to be addressed
Description
Minimal failing example:
import numpy as np import pytest @pytest.fixture(scope="module", params=[0, np.ones(2)]) def my_fixture(request): return request.param def test_stuff(my_fixture): pass
pytest
output:
=============================================== test session starts ================================================ platform linux -- Python 3.8.1, pytest-5.3.3, py-1.8.1, pluggy-0.13.1 rootdir: /home/hkohr/git collected 2 items tmp.py .E [100%] ====================================================== ERRORS ====================================================== ____________________________________ ERROR at setup of test_stuff[my_fixture1] _____________________________________ cls = <class '_pytest.runner.CallInfo'>, func = <function call_runtest_hook.<locals>.<lambda> at 0x7f8b16fb03a0> when = 'setup', reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>) @classmethod def from_call(cls, func, when, reraise=None) -> "CallInfo": #: context of invocation: one of "setup", "call", #: "teardown", "memocollect" start = time() excinfo = None try: > result = func() ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/runner.py:235: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/runner.py:208: in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise ../miniconda/envs/tmp/lib/python3.8/site-packages/pluggy/hooks.py:286: in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) ../miniconda/envs/tmp/lib/python3.8/site-packages/pluggy/manager.py:93: in _hookexec return self._inner_hookexec(hook, methods, kwargs) ../miniconda/envs/tmp/lib/python3.8/site-packages/pluggy/manager.py:84: in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/runner.py:120: in pytest_runtest_setup item.session._setupstate.prepare(item) ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/runner.py:365: in prepare col.setup() ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/python.py:1449: in setup fixtures.fillfixtures(self) ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/fixtures.py:294: in fillfixtures request._fillfixtures() ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/fixtures.py:473: in _fillfixtures item.funcargs[argname] = self.getfixturevalue(argname) ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/fixtures.py:483: in getfixturevalue return self._get_active_fixturedef(argname).cached_result[0] ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/fixtures.py:499: in _get_active_fixturedef self._compute_fixture_value(fixturedef) ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/fixtures.py:580: in _compute_fixture_value fixturedef.execute(request=subrequest) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <FixtureDef argname='my_fixture' scope='module' baseid='tmp.py'> request = <SubRequest 'my_fixture' for <Function test_stuff[my_fixture1]>> def execute(self, request): for argname in self._dependee_fixture_argnames(request): fixturedef = request._get_active_fixturedef(argname) if argname != "request": fixturedef.addfinalizer(functools.partial(self.finish, request=request)) my_cache_key = self.cache_key(request) cached_result = getattr(self, "cached_result", None) if cached_result is not None: result, cache_key, err = cached_result > if my_cache_key == cache_key: E ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() ../miniconda/envs/tmp/lib/python3.8/site-packages/_pytest/fixtures.py:895: ValueError ============================================ 1 passed, 1 error in 0.35s ============================================
I'm not sure if there's a good way to fix this. If not, perhaps the docs should mention that arrays should not be used as parameter values, or only with function scope.
Metadata
Metadata
Assignees
Labels
topic: fixturesanything involving fixtures directly or indirectlyanything involving fixtures directly or indirectlytype: bugproblem that needs to be addressedproblem that needs to be addressed