Using py.test is great and the support for test fixtures is pretty awesome. However, in order to share your fixtures across your entire module, py.test suggests you define all your fixtures within one single conftest.py
file. This is impractical if you have a large quantity of fixtures -- for better organization and readibility, you would much rather define your fixtures across multiple, well-named files. But how do you do that? ...No one on the internet seemed to know.
Turns out, however, you can define fixtures in individual files like this:
tests/fixtures/add.py
import pytest
@pytest.fixture
def add(x, y):
x + y
Then you can import these fixtures in your conftest.py
:
tests/conftest.py
import pytest
from fixtures.add import add
...and then you're good to test!
tests/adding_test.py
import pytest
@pytest.mark.usefixtures("add")
def test_adding(add):
assert add(2, 3) == 5
Because of the modularity, tests will have to be run with python -m py.test
instead of py.test
directly.
@christian-steinmeyer thank you for replying.
I saw that parmeterization concept i see, that applies to test method instead of fixture
Here is my fixture
The test function is like
When i run this function i get
below is the error
E fixture 'a' not found
i would like to call fixture and not test method with parameters as shown above.
My test function should take 2 parameters and give me the sum of them