'pytest config within pytest.ini not being registered when pytest.ini is in tests subdirectory rather than project root directory

pytest is issuing a warning due to an unknown custom mark when running my test suite despite (hopefully) registering it correctly as per the pytest documentation (see https://docs.pytest.org/en/stable/mark.html#registering-marks).

My Python project's structure is (simplified for the sake of this query):

my_project/
    src/
    tests/
        integration/
        unit/
        conftest.py
        pytest.ini

My pytest.ini is (again, simplified):

# pytest.ini
[pytest]
markers =
    incremental: marks related sequential tests to xfail after an earlier failure

because my conftest.py contains the @pytest.mark.incremental recipe outlined in the pytest documentation (see https://docs.pytest.org/en/latest/example/simple.html#incremental-testing-test-steps).

When I run pytest from the command line from within the root directory of my project (i.e. /my_project/ $ pytest), pytest issues the following warning:

PytestUnknownMarkWarning: Unknown pytest.mark.incremental - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
    @pytest.mark.incremental

-- Docs: https://docs.pytest.org/en/stable/warnings.html

However, if I tell pytest to run the tests directory (i.e. /my_project/ $ pytest tests) I get no such warning. Similarly if I move my pytest.ini file from within the tests directory back to the project root directory then again I don't get the error.

Is there a way to configure pytest so that I can keep my structure as tests/pytest.ini to avoid over-cluttering the project root directory, while still ensuring that my pytest.ini is read correctly by pytest when I just run /my_project/ $ pytest from the command line?

Extra info incase useful:

(my-project-env) /Users/me/Documents/my_project/ $ pytest
============================================= test session starts =============================================
platform darwin -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: /Users/me/Documents/my_project


Solution 1:[1]

I know this is an old question, but may I suggest that you run pytest from inside the folder where you put your pytest.ini file?

cd tests
pytest 

I think that may solve your problem.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Jesper Rønn-Jensen