2016-09-14 11 views
1

我想用py.test来运行Python项目的单元测试。直到最近我用鼻子,它运行测试对我的本地源代码,而不是安装的软件包,但py.test似乎要运行对已安装的软件包,这意味着我必须在每次测试运行之前运行python setup.py install有没有一种标准的方法来告诉py.test针对特定的代码运行?

该项目的组织,像这样:

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

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

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

回答

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中的目录。

+0

文档Skylar已更新以反映此问题 - https://docs.pytest.org/zh-CN/latest/nose.html#unsupported-idioms-known-issues –

相关问题