0

4つのクラス(Python)の連携を作成しました。

class A:
    ## A, B, C are nested classes of A
    class B:
        ...
    class C:
        ...
    class D:
        ...
    ## example methods
    def newB(self):
        return self.B()
    def newC(self):
        return self.C(self.newB())

4 つのテストケースで 60 のテストメソッドを書きましたが、これは大変な作業でした。

B、C、D は多くの動作を提供しないため、A、B、C、D クラスをサブクラス化して新しい動作を追加する必要があります。

問題:

A、B、C、D が正しく連携することを確認するために、多くのテスト コードを作成しました。A、B、C、D を A2、B2、C2、D2 にサブクラス化する場合、A、B、C、D をテストしたのと同じ方法で、A2、B2、C2、D2 の動作をテストする必要があります。

どうすればいいですか?

  1. データベースの新しいサブクラスを作成するたびに、すべての単体テストをサブクラス化しますか?
  2. メソッドによってテストケースとスイートを生成しますか?
  3. ...

サブクラス化されたデータベースが正しく機能し、間違いがないことを保証するために、どのような方法がありますか?

指定: unittests、データベースのクラス、およびサブクラス

現在存在するテスト:

class TestA(unittest.TestCase):
    A = A
    def setUp(self):
        self.a = self.A()
    def test_something(self):
        ...

class MockB(A.B):
    ...
class AWithMock(A):
    B = MockB
class TestAWithMock(TestA):
    A = AWithMock
    def setUp(self):
        self.a = self.A()
    def test_something_new(self):
        ...

class MockB2(A.B):
    ...
class MockC2(A.C):
    ...
class MockD2(A.D):
    ...
class TestWithMock(unittest.TestCase):
    def test_b(self):
        b = MockB2()
        ...
    def test_c(self):
        ...
    def test_d(self):
        ...
4

1 に答える 1

0
import unittest
class TestCaseA(unittest.TestCase):
    def setUp(self):
        self.thing = A()

    def test_does_x():
        self.assertTrue(self.thing.does_x())

サブクラス A2 を定義します。

class A2(A):
    ...

私はあなたのテストケースをサブクラス化しますが、サブクラスの残りの API はと一致する必要があるため、 setUp/メソッドのみをオーバーライドします。setupA2A

したがって、テスト サブクラスは次のようになります。

class TestA2(TestCaseA):
    def setUp(self):
        self.thing = A2()
于 2012-08-05T13:55:08.680 に答える