Pytest and Python 3
Question:
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
Answers:
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
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.
This worked for me:
python3 $(which py.test) ...
In addition to the aforementioned python3 -m pytest
, this might also work:
env pytest
Debian Linux has the python3-pytest package where if installed you can simply run:
/usr/bin/pytest-3
Install it with pip3:
pip3 install -U pytest
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
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
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.
This worked for me:
python3 $(which py.test) ...
In addition to the aforementioned python3 -m pytest
, this might also work:
env pytest
Debian Linux has the python3-pytest package where if installed you can simply run:
/usr/bin/pytest-3
Install it with pip3:
pip3 install -U pytest