I have a project organized as follows:
project
├── project
│ ├── module1
│ │ ├── api.py
│ │ ├── _cpython_foo.py
│ │ └── _cython_foo.pyx
│ └──
I know about two ways of marrying pytest
with cythonized extensions:
Do not invoke the tests via pytest
directly; instead, use in-place test command with the setup script. To do that, install pytest-runner
plugin that adds a pytest
command:
$ pip install pytest-runner
Now you should be able to invoke the tests with pytest
by issuing
$ python setup.py pytest
This approach, however, will require some changes in the way the command line args are passed: the pendant to command
$ pytest --arg1 --arg2
will be
$ python setup.py pytest --addopts "--arg1 --arg2"
If you want to continue using the pytest
command: install the project in development mode (ideally, in a virtualenv).
(myenv) $ pip install --editable dir/
where dir/
is the directory containing the setup.py
script. Now the extensions will be prebuilt and pytest
will be able to resolve them.