题 我如何在virtualenv中使用pytest?


我将pytest安装到virtualenv并从该虚拟环境运行它,但它没有使用我在该虚拟环境中安装的软件包。相反,它使用主系统包。 (使用“python -m unittest discover”,我实际上可以使用正确的python和包运行我的测试,但我想使用py.test框架。)

是否有可能py.test实际上没有在virtualenv中运行pytest,我必须指定运行哪个pytest?

如何让py.test只使用我的virtualenv中的python和包?

另外,由于我的系统上有几个pythons,我如何判断哪个python pytest正在使用?它会在我的virtualenv中自动使用python,还是我必须以某种方式指定?


14
2018-01-27 18:16


起源


你真的在安装和运行pytest之前激活了你创建的virtualenv吗?即 source venv/bin/activate - Filip Jukić
当然。我使用virtualenvwrapper,当激活时,当前激活的virtualenv会出现在我的提示符上。另外,我可以看到当前virtualenv使用pip冻结安装的软件包。 - Henry Grantham
我得到了这个工作。它只需要终端重启。 - Henry Grantham


答案:


在您的环境中,您可以尝试

python -m pytest

15
2018-02-01 02:42





在我的情况下,我不得不离开venv(停用),删除pytest(pip uninstall pytest),输入venv(source / my / path / to / venv),然后重新安装pytest(pip install pytest)。我不知道为什么pip拒绝在venv中安装pytest(它说它已经存在)。

我希望这有帮助


3
2017-08-30 15:32



我在我的基础环境中有pytest,但在我的venv中没有,所以当我打电话时 py.test -v 在venv它正在使用pytest 外 venv而不是找到我的包裹。无论如何,只需激活venv然后再做 conda install pytest 为我工作。 (pip也有效,我猜。) - seth127


你必须在每次想要运行你的python脚本时激活你的python env,你有几种方法来激活它,我们假设你的virtualenv安装在/ home / venv下:

1-基础是用一个命令行运行python >>> /home/venv/bin/python <your python file.py>

2-在python脚本文件的顶部添加此行 #! /home/venv/bin/python 然后跑 python <you python file.py>

3-激活你的python环境 source /home/venv/bin/activate 然后运行你的脚本 python <you python file.py>

4-使用 virtualenvwrapper 管理和激活你的python环境


0
2018-01-27 21:34



我每次运行任何脚本时都会激活我的env,并在完成后停用它。 - Henry Grantham
我的活跃virtualenv是我提示的一部分。我让py.test通过重启我的终端来使用我的virtualenv。 - Henry Grantham