pytest fixture of fixture, not found

Based on this stackoverflow: pytest fixture of fixtures

I have the following code in the same file:

@pytest.fixture def form_data(): return { ... } @pytest.fixture def example_event(form_data): return {... 'data': form_data, ... } 

But when I run pytest, it complains that fixture 'form_data' not found

I am new to pytest so I am not even sure if this is possible?

2

1 Answer

Yes, it is possible.

If you have the test and all the fixtures in 1 file: test.py

import pytest @pytest.fixture def foo(): return "foo" @pytest.fixture def bar(foo): return foo, "bar" def test_foo_bar(bar): expected = ("foo", "bar") assert bar == expected 

and run pytest test.py then Success!!!

======================================= test session starts ======================================== platform darwin -- Python 3.6.8, pytest-4.3.0 collected 1 item test.py . [100%] ===================================== 1 passed in 0.02 seconds ===================================== 

But if you put the fixtures in a different file: test_foo_bar.py

from test import bar def test_foo_bar(bar): expected = ("foo", "bar") assert bar == expected 

and run pytest test_foo_bar.py expecting (like I did) that importing only the bar fixture is enough since on importing it would already have executed the foo fixture then you get the error you are getting.

======================================= test session starts ======================================== platform darwin -- Python 3.6.8, pytest-4.3.0 collected 1 item test2.py E [100%] ============================================== ERRORS ============================================== __________________________________ ERROR at setup of test_foo_bar __________________________________ file .../test_foo_bar.py, line 3 def test_foo_bar(bar): .../test.py, line 7 @pytest.fixture def bar(foo): E fixture 'foo' not found > available fixtures: TIMEOUT, bar, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, cov, doctest_namespace, monkeypatch, no_cover, once_without_docker, pytestconfig, record_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory > use 'pytest --fixtures [testpath]' for help on them. .../test.py:7 ===================================== 1 error in 0.03 seconds ====================================== 

To fix this also import the foo fixture in the test_foo_bar.py module.

2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like