2012-11-29 44 views
6

我从这里安装pytest的插件:http://pypi.python.org/pypi/pytest-cov。然后,我有一个简单的测试代码:pytest和覆盖组合不起作用

pytest.py:

class TestNumbers: 
    def test_int_float(self): 
     assert 1 == 1.0 

    def test_int_str(self): 
     assert 1 == 1 

我试着用命令来测试它: 'py.test --cov,报告期内,公司--cov pytest.py'。但它不起作用。即使我给出pytest.py的绝对路径,它仍然没有收集数据。但是,如果我使用py.test pytest.py,它肯定会测试好的。

我很困惑这个问题,感谢您的帮助。

+1

使用前缀为“test_”的文件名,但无论如何不要使用“pytest.py”,它会影响实际的“pytest”模块。 – hpk42

回答

10

尝试:

py.test --cov-report term --cov=. test.py 

--cov参数接受一个参数说法路径来覆盖。在你的例子中,--cov会消耗test.py,但是之后没有为py.test留下什么参数来测试哪些文件。

UPDATE:正如@ hpk42指出的那样,您需要称呼您的示例,而不是pytest.py。当我在本地进行此操作时,我将其称为test.py

+0

如果“pytest.py”是用户模块,它将不起作用。它隐藏了实际的py.test(因为你执行“import pytest”来导入帮助器/东西)。 – hpk42

+0

Whups ......在我的例子中,它的意思是'test.py'。你当然是绝对正确的。 'py.test'确实至少会输出一条体面的错误消息,通知您这个问题。 – jszakmeister

+0

非常感谢。问题是用'pytest.py'作为文件名。改变之后,所有的测试都通过了Ok。你的回答是对的。命令应该是“py.test --cov-report term --cov =。test.py” – user1067671