參數化的Python 動態單元測試
簡介
參數化是單元中的一種技術使用不同的輸入資料集自動建立測試的測試。這使得開發人員可以在各種場景下徹底測試他們的程式碼,確保其健全性和可靠性。
使用 pytest 的裝飾器進行參數化
參數化的一個流行選項是使用 pytest 的裝飾器。只需將 @parametrize 裝飾器新增至您的測試類別中,然後新增以下值清單:
from pytest import mark class TestSequence(unittest.TestCase): @mark.parametrize( ["name", "a", "b"], [ ["foo", "a", "a"], ["bar", "a", "b"], ["lee", "b", "b"], ] ) def test_sequence(self, name, a, b): self.assertEqual(a, b)
此裝飾器將為清單中的每組值自動產生單獨的測試。
使用參數化函式庫進行參數化
另一個選擇是使用參數化函式庫。使用此函式庫進行相同測試的效果如下:
from parameterized import parameterized class TestSequence(unittest.TestCase): @parameterized.expand([ ["foo", "a", "a"], ["bar", "a", "b"], ["lee", "b", "b"], ]) def test_sequence(self, name, a, b): self.assertEqual(a, b)
在這兩種情況下,結果是相同的:根據提供的資料產生多個測試,使您可以徹底測試程式碼。
參數化的原始方法
雖然上述方法是現代且廣泛使用的,但動態產生測試方法的舊方法。然而,這種方法不再常用,僅出於歷史原因而被提及:
import unittest l = [["foo", "a", "a",], ["bar", "a", "b"], ["lee", "b", "b"]] class TestSequense(unittest.TestCase): pass def test_generator(a, b): def test(self): self.assertEqual(a,b) return test if __name__ == '__main__': for t in l: test_name = 'test_%s' % t[0] test = test_generator(t[1], t[2]) setattr(TestSequense, test_name, test) unittest.main()
以上是如何在Python中透過參數化實現動態單元測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!