如何在PyTest和PyQt5中使用python3 setup.py测试?

时间:2016-07-07 10:43:50

标签: python python-3.x pyqt pytest pyqt5

是否可以在依赖于PyQt5的包中遵循Good Integration as http://pytest.org/latest/goodpractices.html? (我使用的是Ubuntu 14.04,不知道这是否会影响)

我使用两种建议的方法得到以下内容:

$ python3 setup.py test
running test
Searching for pyqt5
Reading https://pypi.python.org/simple/pyqt5/
No local packages or download links found for pyqt5
error: Could not find suitable distribution for Requirement.parse('pyqt5')

我可以pip3 install pyqt5,这就是我将pyqt5放在setup.py中的原因。在命令行中运行py.test也可以。

1 个答案:

答案 0 :(得分:1)

在命令行中运行py.test可在当前的Python环境中执行测试。

运行python3 setup.py test(使用pytest-runner符合pytest'良好的集成实践')会创建一个伪virtualenv。它将任何缺少的依赖项作为egg(将它们存储在 .eggs 目录中)引入,然后在上述环境中执行测试。

要明确,py.testpython3 setup.py test会做不同的事情。

为了说明这两个命令之间的区别,这里有几个场景:

py.test

  • py.test - 启动pytest,你的测试可能因为PyQt5不可导入而失败
  • pip3 install PyQt5 && py.test - 在当前环境中安装PyQt5的bdist_wheel然后启动pytest,你的测试可能会成功

pytest浇道

  • python3 setup.py test - 启动pytest-runner,检查 setup.py 中的依赖项,确定PyQt5不可用,尝试拉入一个鸡蛋(但不能像PyQt5那样只有可用作bdist_wheel,而不是源代码分发),然后吐出错误消息并退出
  • pip3 install PyQt5 && python3 setup.py test - 在当前环境中安装PyQt5的bdist_wheel然后启动pytest-runner,检查 setup.py 中的依赖项,确定所有依赖项都可用,启动pytest和测试大概是成功的

简单的答案是否定的,不可能做你所要求的。无论如何,您需要在运行测试之前将PyQt5安装到环境中。