Pytest cov不会生成任何报告

时间:2016-03-17 11:08:10

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

我正在尝试为我的程序运行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

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

4 个答案:

答案 0 :(得分:7)

您还没有说出所有文件的名称,所以我不确定具体的答案。但是--cov的参数应该是模块名称,而不是文件名。因此,您需要py.test --cov=testcov.py而不是py.test --cov=testcov

答案 1 :(得分:2)

py.test查找以test_开头的函数。您应该相应地重命名测试功能。要申请保险,请执行py.test --cov。如果您想要一个漂亮的HTML报告,该报告还会显示未涵盖哪些行,您可以使用py.test --cov --cov-report html

答案 2 :(得分:0)

默认情况下,py.test会查找与test_*.py匹配的文件。您可以使用pytest.ini

对其进行自定义

顺便说一下。根据python样式指南PEP 8,它应该是test_suma - 但它对py.test没有影响。

答案 3 :(得分:0)

最适合我的是:

async invokeSearch() {
    this.setState({ searching: true })

    const fuse = new Fuse(arrayOfData, { keys: [name: 'title'] })
    const searchResults = await fuse.search(searchTerm)

    this.setState({ searching: false })
}

在这种情况下,指定路径py.test mytests/test_mytest.py --cov='.' 会从覆盖率报告中删除不需要的文件。