Joe Abbate
Joe Abbate

Reputation: 1740

Pytest and Python 3

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

Upvotes: 64

Views: 76824

Answers (6)

mjakic
mjakic

Reputation: 383

Install it with pip3: pip3 install -U pytest

Upvotes: 4

Paul Back
Paul Back

Reputation: 1319

Debian Linux has the python3-pytest package where if installed you can simply run:

/usr/bin/pytest-3

Upvotes: 1

GPHemsley
GPHemsley

Reputation: 595

In addition to the aforementioned python3 -m pytest, this might also work:

env pytest

Upvotes: 5

XPlatformer
XPlatformer

Reputation: 1218

This worked for me:

python3 $(which py.test) ...

Upvotes: 9

Joe Abbate
Joe Abbate

Reputation: 1740

I found a workaround:

  1. Installed python3-pip using aptitude, which created /usr/bin/pip-3.2.
  2. Next pip-3.2 install pytest which re-installed pytest, but under a python3.2 path.
  3. Then I was able to use python3 -m pytest somedir/sometest.py.

Not as convenient as running py.test directly, but workable.

Upvotes: 72

Joe
Joe

Reputation: 3059

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:

  1. Install virtualenv
  2. Create a virtualenv for python3
    • virtualenv --python=python3 env_name
  3. Activate the virtualenv
    • source ./env_name/bin/activate
  4. Install py.test
    • pip install py.test
  5. Now using this virtualenv try to run your tests

Upvotes: 28

Related Questions