【问题标题】:How to use python3 setup.py test with PyTest and PyQt5?如何在 PyTest 和 PyQt5 中使用 python3 setup.py 测试?
【发布时间】:2016-07-07 10:43:49
【问题描述】:

是否可以在依赖于 PyQt5 的包中遵循 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 也可以。

【问题讨论】:

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


    【解决方案1】:

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

    运行python3 setup.py test(根据 pytest 的“良好集成实践”使用 pytest-runner)创建一个伪虚拟环境。它将所有丢失的依赖项作为鸡蛋拉入(将它们存储在 .eggs 目录中),然后在上述环境中执行测试。

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


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

    py.test

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

    pytest-runner

    • 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 安装到环境中。

    【讨论】:

    • 我可以创建一个没有源的虚拟环境吗?我觉得不应该要求来源。我正在使用 python3,并认为我已经看到 pyenv 或 venv 可用。
    • 你可以将 PyQt5 安装到虚拟环境中没有问题。然后激活它,像往常一样运行你的测试。我假设您正在运行 Python 3.5.x,对吗?如果是这样,您可以使用python3 -m venv env 创建一个,然后激活它并将 PyQt5 安装到其中。或者你可以安装 virtualenv 并使用它。除非您需要在不同版本的 Python 之间切换,否则我不会打扰 pyenv。
    • 谢谢。我会试试的。我想这是 Python 3.5.2,我要离开我的电脑两天。
    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多