I have written pytest unit tests for a package I've written with a structure like below:
- packagedir
- setup.py
- mypackage
- __init__.py
- functionpackage
- __init__.py
- functionmodule.py
- test
- __init__.py
- conftest.py
- unit_tests
- __init__.py
- functionmodule_test.py
Now packagedir/mypackage/test/conftest.py establishes two required command line parameters to be created as fixtures for the tests. When I run something like:
pytest packagedir/mypackage/ --var1 foo --var2 bar
All the tests run and the command line parameters are read in correctly. However, when I pip install the package (which installs the test and unit_tests packages correctly) and then try something like this:
pytest --pyargs mypackage --var1 foo --var2 bar
I get an error like this:
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: unrecognized arguments: --var1 foo --var2 bar
If I run:
pytest --pyargs mypackage
the tests run but fail because the command line arguments are not present.
Can someone explain to me what might be going wrong here? I could guess and say this is because the --pyargs argument changes the interpretation of the command line parameters for pytest, but it's just a guess. I'd like to know if there is an actual way I could fix this.
The overarching goal would be to allow someone to pip install mypackage and then be able to easily test it without navigating to the site-packages location of the install.