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

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

Activity

  1. changed the title [-]@pytest.fixture(scope="package") works like session if placed in one conftest.py[/-] [+]@pytest.fixture(scope="package") works like session if placed in one file and used with pytest_plugins in conftest.py[/+] on May 20, 2020
  2. azhivovk commented on Jul 9, 2026

    @azhivovk

    I've faced the same issue on pytest-9.1.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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