Pytest and Python 3
PythonPython 3.xPytestPython Problem Overview
I've installed pytest 2.3.4 under Debian Linux. By default it runs under Python 2.7, but sometimes I'd like to run it under Python 3.x, which is also installed. I can't seem to find any instructions on how to do that.
The PyPI Trove classifiers show Python :: 3 so presumably it must be possible. Aside from py.test somedir/sometest.py
, I can use python -m pytest ...
, or even python2.7 -m pytest ...
, but if I try python3 -m pytest ...
I get
/usr/bin/python3: No module named pytest
Python Solutions
Solution 1 - Python
I found a workaround:
- Installed
python3-pip
using aptitude, which created/usr/bin/pip-3.2
. - Next
pip-3.2 install pytest
which re-installed pytest, but under a python3.2 path. - Then I was able to use
python3 -m pytest somedir/sometest.py
.
Not as convenient as running py.test directly, but workable.
Solution 2 - Python
python3 doesn't have the module py.test installed. If you can, install the python3-pytest
package.
If you can't do that try this:
- Install virtualenv
- Create a virtualenv for python3
virtualenv --python=python3 env_name
- Activate the virtualenv
source ./env_name/bin/activate
- Install py.test
pip install py.test
- Now using this virtualenv try to run your tests
Solution 3 - Python
This worked for me:
python3 $(which py.test) ...
Solution 4 - Python
In addition to the aforementioned python3 -m pytest
, this might also work:
env pytest
Solution 5 - Python
Install it with pip3:
pip3 install -U pytest
Solution 6 - Python
Debian Linux has the python3-pytest package where if installed you can simply run:
/usr/bin/pytest-3