我有以下结构:
main/
|-- __init__.py
|-- foo.py
|-- bar.py
|-- tests/
|-- __init__.py
|-- test_foo.py
|-- test_bar.py
在test_foo.py
中,我导入了一些包(例如os
,sys
),我还从foo.py
导入一个助手函数:
^{pr2}$
当我试图从main/
运行测试时:
$ pytest tests/
我看到函数testAllLevels
也被收集并作为测试运行(显然)失败了。我的问题是如何从测试发现中跳过此函数?在
Tags:
如果要防止}文件夹中。在
testAllLevels
被收集为测试,则必须创建一个名为pytest.ini
的文件,并将其放入main
或{pytest.ini
的内容应该如下所示:注意,这也意味着从现在起,所有的测试函数都必须有一个前缀
test_
。pytest
的默认行为是收集前缀为test
(不是test_
)的函数。在要回答关于
^{pr2}$why functions are run on import?
的问题,请尝试以下实验。在test_foo.py
中添加一行以获取对test_foo.py
模块本身的内部引用。在然后在同一个模块中,创建一个如下所示的测试用例:
在import语句执行之后,}的合法函数。这已经通过对
dir()
的输出将显示testAllLevels
已成为属于{test_foo.py
的引用调用函数来验证。我认为它被pytest收集是因为它是一个函数“属于”一个测试模块,它的函数名有一个test
前缀。在解决办法是改变
到
^{pr2}$然后用
foo.testAllLevels
调用它。像这样,testAllLevels
不是作为测试运行的。在有些东西告诉我这不是最佳解决方案。所以这个问题仍然悬而未决。如果有人知道这种行为的原因,那会有很大帮助。在
相关问题 更多 >
编程相关推荐