1

私はこのようなテストをしています:

import unittest

class TestBase(unittest.TestCase):

   def setUp(self):
      self.decorator = None

   def testA(self):
      data = someGeneratorA().generate()
      self.assertTrue(self.decorator.someAction(data))  

   def testB(self):
      data = someGeneratorB().generate()
      self.assertTrue(self.decorator.someAction(data))  

   def testC(self):
      data = someGeneratorC().generate()
      self.assertTrue(self.decorator.someAction(data))  


class TestCaseA(TestBase):

   def setUp(self):
      self.decorator = SomeDecoratorA


class TestCaseB(TestBase):

   def setUp(self):
      self.decorator = SomeDecoratorB

ご覧のとおり、TestCaseATestCaseBは非常に似ているため、 testAtestBtestCメソッドの本体を実装するTestBaseクラスを作成しました。

TestCaseAは、TestCaseBのみのデコレータパラメータとは異なります。

それで、私は質問したいのですが、私のテストを整理するためのより良い方法はありますか?また、TestBaseクラス(テスト)を実行するべきではないため、問題が発生します(self.decoratorはNoneであるため、例外が発生します)

4

1 に答える 1

6

から継承するものunittest.TestCaseはすべて、一連のテストと見なされます。

代わりに、基本クラスを継承せずTestCaseに、その基本クラスを具体的なテストクラスに移動することができます。

class TestBase(object):
    # base tests to be reused

class TestCaseA(TestBase, unittest.TestCase):
    # Concrete tests, reusing tests defined on TestBase

class TestCaseB(TestBase, unittest.TestCase):
    # Concrete tests, reusing tests defined on TestBase
于 2013-02-19T14:09:44.430 に答える