Pytest CoV不会生成任何报告

Ziv*_*iva 3 python unit-testing code-coverage pytest python-2.7

我正在尝试为我的程序运行py.test cov,但是我仍然有一个信息:testFile.txt sCoverage.py warning: No data was collected. 即使在代码中仍然是未测试的函数(在我的示例diff中)。下面是测试命令的代码示例py.test --cov=testcov.py。我正在使用python 2.7.9

def suma(x,y):
    z = x + y
    return z

def diff(x,y):
    return x-y

if __name__ == "__main__":
    a = suma(2,3)
    b = diff(7,5)
    print a
    print b

## ------------------------TESTS-----------------------------   
import pytest

def testSuma():
    assert suma(2,3) == 5
Run Code Online (Sandbox Code Playgroud)

有人可以解释我,我在做什么错吗?

Ned*_*der 10

您尚未说出所有文件的名称,所以我不确定确切的答案。但是to的参数--cov应该是模块名称,而不是文件名。因此py.test --cov=testcov.py,您想要的不是py.test --cov=testcov


Rex*_*rus 8

对我有用的是:

py.test mytests/test_mytest.py --cov='.'
Run Code Online (Sandbox Code Playgroud)

'.'在这种情况下,指定路径会从覆盖率报告中删除不需要的文件。


Sör*_*ren 5

py.test寻找以开头的函数test_。您应该相应地重命名测试功能。要应用承保范围,请执行py.test --cov。如果您想要一个不错的HTML报告,还可以向您显示未覆盖的行,则可以使用py.test --cov --cov-report html


小智 0

默认情况下 py.test 查找匹配的文件test_*.py。您可以使用pytest.ini进行自定义

顺便提一句。根据 python 风格指南PEP 8它应该是test_suma- 但它对 py.test 没有影响。