Pytest和Python 3

Joe*_*ate 41 pytest

我在Debian Linux下安装了pytest 2.3.4.默认情况下,它在Python 2.7下运行,但有时我想在Python 3.x下运行它,它也是安装的.我似乎无法找到关于如何做到这一点的任何指示.

PyPI Trove分类器显示Python :: 3,因此可能必须是可能的.除此之外py.test somedir/sometest.py,我可以使用python -m pytest ...,甚至python2.7 -m pytest ...,但如果我尝试,python3 -m pytest ...我会得到

/usr/bin/python3: No module named pytest

Joe*_*ate 51

我找到了一个解决方法:

  1. python3-pip使用aptitude 安装,创建/usr/bin/pip-3.2.
  2. 接下来pip-3.2 install pytest重新安装pytest,但是在python3.2路径下.
  3. 然后我就可以使用了python3 -m pytest somedir/sometest.py.

不像直接运行py.test那样方便,但可行.

  • 为了避免这种冲突,`py.test`应该_definitely_在安装在Python 3下时将其自身安装为`py.test3`或`py3.test`.它不会.可以说,这构成了一个错误.在修复此问题之前,请考虑为方便起见,在上面的列表中添加第四步:_4.将以下`py.test3` shell别名添加到`〜/ .bashrc`或`〜/ .zshrc`启动脚本中:_`alias py.test3 ='python3 -m pytest'`**完成.** (8认同)
  • 您可以使用`python3 -m pytest`(无路径)自动发现测试,至少在3.5中. (2认同)

Joe*_*Joe 26

python3没有安装py.test模块.如果可以,请安装该python3-pytest软件包.

如果你不能这样做试试这个:

  1. 安装virtualenv
  2. 为python3创建virtualenv
    • virtualenv --python=python3 env_name
  3. 激活virtualenv
    • source ./env_name/bin/activate
  4. 安装py.test
    • pip install py.test
  5. 现在使用这个virtualenv尝试运行您的测试


XPl*_*mer 7

这对我有用:

python3 $(which py.test) ...
Run Code Online (Sandbox Code Playgroud)


GPH*_*ley 5

除了上述之外python3 -m pytest,这也可能有效:

env pytest
Run Code Online (Sandbox Code Playgroud)