【发布时间】:2013-04-30 13:27:39
【问题描述】:
对于Jedi,我们想要生成我们的test coverage。 stackoverflow 中有一个related question,但没有帮助。
我们使用 py.test 作为测试运行器。但是,我们无法将导入和其他“导入”的内容添加到报告中。例如__init__.py 总是被报告为未被发现:
Name Stmts Miss Cover
--------------------------------------------------
jedi/__init__ 5 5 0%
[..]
很明显,此文件正在导入,因此应报告为已测试。
我们开始这样的测试 [*]:
py.test --cov jedi
如您所见,我们使用的是pytest-coverage。
那么如何正确计算__init__.py 等文件的覆盖率?
[*] 我们还尝试在没有--doctest-modules(从pytest.ini 中删除)的情况下开始测试,并在之前通过py.test -p pytest_cov --cov jedi 激活覆盖模块。它们都不起作用。
我提供了赏金。请尝试在 Jedi 中修复它。它是公开的。
【问题讨论】:
-
你有没有偶然导入“jedi”的conftest.py文件?我猜在 pytest 初始化之后(包括在 CWD 读取 conftest.py 文件和 test*/ 如果它存在)你的绝地已经被导入了。
-
是的。我们有一个
conftest.py。它间接导入jedi。但是,将这些间接导入移动到函数中也没有帮助(或者这也是一个问题???)。文件在这里:github.com/davidhalter/jedi/blob/master/test/conftest.py -
什么是在
__init__.py?例如,导入函数与运行函数不同。 -
这是我们的
__init__.pygithub.com/davidhalter/jedi/blob/master/jedi/__init__.py
标签: python pytest coverage.py