2017-06-22 69 views
2

我有一些測試類與一些靜態方法以及常規方法。問題是pytest沒有收集靜態方法。我在文檔中找不到關於此的任何內容。我怎樣才能讓它收集靜態方法呢?Pytest沒有收集靜態方法

class TestFoo(object): 
    @staticmethod 
    def test_bar(): 
     assert 1 == 1 

    def test_bar2(self): 
     assert 1 == 1 

在上述類,僅test_bar2被收集並test_bar()不是。

我正在Python 2.7.13, pytest-3.1.2, py-1.4.34, pluggy-0.4.0

插件是xdist-1.17.1, leaks-0.2.2, cov-2.5.1

回答

2

當收集的測試功能,pytest ensure each functions are callable

靜態方法不調用,從https://docs.python.org/3/reference/datamodel.html

靜態方法的對象不是自身調用,雖然對象,他們通常是包裹。

見:

>>> class TestFoo(object): 
...  @staticmethod 
...  def test_bar(): 
...   assert 1 == 1 
... 
>>> hasattr(TestFoo.__dict__['test_bar'], '__call__') 
False 

對於這項工作,pytest本身應該進行修改,以接受靜態方法,我不知道如果這就是他們想要的東西,你可以在自己的問題跟蹤器打開的問題在github上,如果你認爲你真的需要它。

爲什麼你認爲靜態方法是一種解決方案?究竟是哪個問題?

+0

討論我們是否應該有靜態方法,或者如果他們解決任何問題不是重點。如果方法不使用self,我的代碼庫就有它們。儘管謝謝你的回答! – utkbansal