2012-11-29 45 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