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

How to use python3 setup.py test with PyTest and PyQt5?

是否可以在依赖于 PyQt5 的包中遵循此处 http://pytest.org/latest/goodpractices.html 的 Good Integration? (我用的是Ubuntu14.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 也可以正常工作。

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

运行 python3 setup.py test(根据pytest的'Good Integration Practices'使用pytest-runner)创建一个伪虚拟环境。它将任何缺失的依赖项作为 egg 引入(将它们存储在 .eggs 目录中),然后在上述环境中执行测试。

明确地说,py.testpython3 setup.py test 做不同的事情。


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

py.test

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

pytest-runner

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

简单的答案是否定的,不可能按照您的要求进行操作。不管怎样,您需要在 运行 测试之前将 PyQt5 安装到环境中。