你可以只啓動類,方法或函數的名稱用下劃線和鼻子會忽略它。
@nottest
有它的用途,但我發現它不能很好地工作,當類相互派生和一些基類必須被鼻子忽略。這經常發生在我有一系列類似的Django視圖要測試時。他們經常分享需要測試的特徵。例如,只有具有特定權限的用戶才能訪問它們。我並沒有爲它們寫出相同的權限檢查,而是將這樣的共享測試放在其他類從其派生的初始類中。但問題是,基類只能由後面的類派生,並不意味着要自行運行。這裏的問題的一個例子:
from unittest import TestCase
class Base(TestCase):
def test_something(self):
print "Testing something in " + self.__class__.__name__
class Derived(Base):
def test_something_else(self):
print "Testing something else in " + self.__class__.__name__
而且從流鼻水它的輸出:
$ nosetests test.py -s
Testing something in Base
.Testing something in Derived
.Testing something else in Derived
.
----------------------------------------------------------------------
Ran 3 tests in 0.000s
OK
的Base
類包含在測試中。
我不能在Base
上啪啪@nottest
,因爲它會標記整個層次結構。事實上,如果您只需將@nottest
添加到class Base
前面的代碼中,那麼鼻子將不會運行任何測試。
我要做的就是在基類的前面加上一個下劃線:
from unittest import TestCase
class _Base(TestCase):
def test_something(self):
print "Testing something in " + self.__class__.__name__
class Derived(_Base):
def test_something_else(self):
print "Testing something else in " + self.__class__.__name__
並運行它_Base
時被忽略:
$ nosetests test3.py -s
Testing something in Derived
.Testing something else in Derived
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
這種行爲是不是有據可查的,但代碼選擇測試explicitly checks for an underscore at the start of class names。
類似的測試是通過在函數和方法名稱上進行的,所以可以通過在名稱的開頭添加下劃線來排除它們。
這些downvotes變得愚蠢。 – 2014-12-26 03:33:19
爲什麼不刪除這個帖子並贏得你的'同伴壓力'徽章? – 2015-04-02 02:45:37
這爲什麼這麼嚴重downvoted?推理不清楚。 – CaffeineConnoisseur 2015-10-02 00:44:46