非常によく似た複数のクラスを持つプログラムがあります。
class BlackBox1():
def calc(self, a, b):
return a + b
class BlackBox2():
def calc(self, a, b):
return a * b
...
ここで、これらすべてのクラスの単体テストを書きたいと思います。もちろん、Blackbox ごとに個別のテストを作成することもできます。とにかく、各ブラックボックスにはテストするメソッドがまったく同じcalc(a, b)
なので、クラスと期待される結果を抽象的なテストフレームワークに自動的に与える「ベストプラクティス」のようなものがあるのではないかと思います。
import unittest
class TestAbstractBox(unittest.TestCase):
def setUp(self):
self.box = blackbox()
self.param_a = a
self.param_b = b
self.expected_result = result
def test_calc_method(self):
real_result = self.box.calc(self.param_a, self.param_b)
self.assertEqual(real_result, self.expected_result,
"{0} gives wrong result".format(self.box.__class__))
TAbstractTest = unittest.defaultTestLoader.loadTestsFromTestCase(TestAbstractBox)
TestAbstractBox クラスに渡して同じコードを何度も持たないようにする方法はありますが、新しいブラックボックスを簡単にテストする方法はあります{"blackbox": Blackbox1, "a": 3, "b": 5, "result": 8}
か?{"blackbox": Blackbox2, "a": 4, "b": 7, "result": 28}