Pytest和python3

Pytest和python3,python,python-3.x,pytest,Python,Python 3.x,Pytest,我已经在DebianLinux下安装了pytest 2.3.4。默认情况下,它在Python2.7下运行,但有时我希望在Python3.x下运行,Python3.x也已安装。我似乎找不到任何关于如何做的说明 PyPI-Trove分类器显示Python::3,因此推测它一定是可能的。除了py.test somedir/sometest.py,我还可以使用python-m pytest…,甚至python2.7-m pytest…,但是如果我尝试python3-m pytest…,我会 /usr/b

我已经在DebianLinux下安装了pytest 2.3.4。默认情况下,它在Python2.7下运行,但有时我希望在Python3.x下运行,Python3.x也已安装。我似乎找不到任何关于如何做的说明

PyPI-Trove分类器显示Python::3,因此推测它一定是可能的。除了
py.test somedir/sometest.py
,我还可以使用
python-m pytest…
,甚至
python2.7-m pytest…
,但是如果我尝试
python3-m pytest…
,我会


/usr/bin/python3:没有名为pytest的模块未安装py.test。如果可以,请安装
python3 pytest
软件包

如果您无法做到这一点,请尝试以下方法:

  • 安装virtualenv
  • 为python3创建一个virtualenv
    • virtualenv--python=python3环境名称
  • 激活virtualenv
    • source./env_name/bin/activate
  • 安装py.test
    • pip安装py.test
  • 现在使用这个virtualenv尝试运行您的测试
  • 我找到了一个解决办法:

  • 使用aptitude安装了
    python3pip
    ,它创建了
    /usr/bin/pip-3.2
  • 下一步
    pip-3.2安装pytest
    ,它重新安装了pytest,但位于python3.2路径下
  • 然后我能够使用
    python3-m pytest somedir/sometest.py
  • 不像直接运行py.test那样方便,但它是可行的。

    这对我来说很有用:

    python3 $(which py.test) ...
    

    除了前面提到的
    python3-m pytest
    ,这可能还可以工作:

    env pytest
    

    Debian Linux有python3 pytest包,如果安装了该包,您只需运行:

    /usr/bin/pytest-3
    
    使用pip3安装它:
    pip3安装-U pytest

    在Debian(Wheezy)中,python3 pytest(和python pytest)的版本是2.2.4,这就是我使用pip安装pytest 2.3.4的原因。我也在使用tox,所以我已经有了py32 tox病毒。然而,有时直接使用python3或python3.2或python3.3调用测试是很方便的。目前,我所有的测试都是unittest,所以我可以很容易地调用它们,例如,
    python3-m unittest discover…
    python3.3测试/sometest.py
    ,但我似乎无法用pytest做类似的事情。由于我不熟悉的原因,在虚拟环境之间切换可能需要使用
    哈希-r
    刷新路径。作为临时解决方法,您可以替换py.test-3.x中的shebang行以指向python3解释器。为我工作。至少在3.5中,您可以使用
    python3-m pytest
    (不带路径)自动发现测试。为了避免这种冲突,
    py.test
    在Python 3下安装时,肯定应该将自身安装为
    py.test3
    py3.test
    。没有。可以说,这是一个bug。直到这是固定的,考虑添加第四个步骤以上列表为方便:4。将以下
    py.test3
    shell别名添加到您的
    ~/.bashrc
    ~/.zshrc
    启动脚本中:
    alias py.test3='python3-m pytest'
    完成。Goncalo,Mark,Cecil,谢谢。我应该指出,很长一段时间以来,我一直在使用Debian包
    python3-pytest
    ,它安装脚本
    py.test-3
    (以及Python 3.5下的
    py.test-3-5
    ),所以这不再是一个问题。很好,这解决了我在
    six
    上遇到的一个问题(
    six.PY3
    是错误的),尽管pytest是用python3安装在虚拟环境中的。事实上,上面提到的问题是通过
    hash-r
    解决的@Joe Abbate的答案是正确的。尽管这是三年前提出的问题,并且我在此后不久发布了一个解决方案,但人们似乎一直在寻找它并添加评论。为了记录在案,Debian和pytest已经向前发展,所以现在安装了
    python-pytest
    python3-pytest
    ,很长一段时间以来,我一直在运行
    py.test
    py.test-3
    ,从中进行选择,因此,也没有必要采取变通办法。7年前已经有两个答案给出了基本相同的答案。请不要重复已有的答案。对不起,我看不到。我想这对我来说是可行的,使用虚拟环境pytest?