Skip to content

@pytest.fixture(scope="package") works like session if placed in one file and used with pytest_plugins in conftest.py #7232

Open
@twitt

Description

@twitt

Hello.
I'm using pytest==5.4.1.
I have conftest.py file in root of the directory with content like this:

pytest_plugins = ['fixtures.configuration', 'fixtures.global']

my fixtures are placed in separate folder 'fixtures'.

When I run some fixture, which is defined in fixtures.configuration with scope "package" it's executed as session fixture. So I suppose this package scope realted to where fixtures are placed, than to where they're called. Is it expected behavior? if I want to use pytest_plugins in conftest.py this looks a bit inconvenient.

This can be tested by.

Creating conftest.py in root of directory with content:

pytest_plugins = ['fixtures.myfixtures']

Creating fixtures folder with myfxitures.py file inside of it with content.

@pytest.fixture(scope="package")
def hello_package():
      print('hello')
      yield
      print('world')

Creating package 'some' with two packages inside: 'hello', 'world'.

with files inside with content like
hello_test.py

def test_hello(hello_package):
        pass

world_test.py

def test_world(hello_package):
        pass

running: pytest -sv some

result:

collected 2 items                                                                                                                                                                                                                        

some/hello/hello_test.py::test_hello setup
PASSED
some/hworld/world_test.py::test_world PASSEDteardown

expected result:

collected 2 items                                                                                                                                                                                                                        

some/hello/hello_test.py::test_hello setup
PASSEDteardown

some/hworld/world_test.py::test_world setup
PASSEDteardown

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic: fixturesanything involving fixtures directly or indirectly

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions