【问题标题】:Is there a standard way to tell py.test to run against specific code?有没有标准的方法来告诉 py.test 针对特定代码运行?
【发布时间】:2016-09-14 21:30:39
【问题描述】:

我正在尝试使用 py.test 运行 Python 项目的单元测试。直到最近我才使用nose,它针对我的本地源代码而不是已安装的包运行测试,但 py.test 似乎想要针对已安装的包运行,这意味着我必须在每次测试运行之前运行python setup.py install

项目的组织方式如下:

/project
    /project  
        __init__.py
        project_file.py
    /test
        __init__.py
        /test_project
            test_project_file.py

我发现让 py.test 针对本地代码运行的唯一方法是在顶部 /project 文件夹中运行 python -m pytest。这很奇怪,因为在同一位置运行 py.test 会针对已安装的代码运行。根据the docs,这些命令应该是等效的,并且 --version 为两者返回相同的信息。

是否有标准的方法告诉 py.test 针对特定代码运行?我一直没能在 py.test 的文档中找到明确的答案。

【问题讨论】:

    标签: python python-2.7 unit-testing testing pytest


    【解决方案1】:

    我的第一个错误是使用python setup.py install 而不是python setup.py develop 设置我的项目。 Pytest 希望您使用后者,这似乎是一种很好的做法。

    如果在安装相同代码时需要针对本地代码运行,似乎有办法做到这一点。 This SO post 提到了 pytest 的“隐藏功能”,您可以在根目录中放置一个 conftest.py 文件来告诉 pytest 使用您的本地代码运行。 Pytest 似乎使用您的整体配置文件的位置来确定它认为您的根目录是什么。这个文件在我的例子中是 pytest.ini。

    出于好奇,我认为 python -m pytest 使用本地代码运行而 py.test 没有运行是由于 Python 将调用它的目录添加到 sys.path 的默认行为。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2022-10-04
    相关资源
    最近更新 更多