如何重用使用 unittest.testcase 编写的测试

use*_*309 4 python python-unittest

我已经使用 unittest 编写了一些测试,如下所示,我想在另一个我遇到困难并需要帮助的类中重用它们。代码片段如下。

    MyTestClass.py
    Class MyTestClass(unittest.TestCase):   
        @classmethod
        def test_TC01_set(self):
            self.devAddr = "127.0.0.0"
            self.teststoSkip = 'TC02'

        def skip(type):
            if type in self.teststoSkip:
                self.skipTest('skipped!!') #unittest.Testcase method

        def test_TC02(self):
            self.skip('TC02')
            print 'test_TC02 will do other tasks'

        def test_TC03(self):
            self.skip('TC03')
            print 'test_TC03 will do other tasks'
Run Code Online (Sandbox Code Playgroud)

这将正常工作。现在我想在另一个类中重用相同的测试用例。说,

    RegressionMyTest.py
    from MyTestClass import MyTestClass
    Class RegressionMyTest(MyTestClass):
        @classmethod
        def setupmytest(self):
            self.test_TC01_set(self)#this will work fine since it is accessing classmethod
            self.tes_TC02(self)#cant access like this since it is not a class method
            self.tes_TC03(self)#cant access like this since it is not a class method
Run Code Online (Sandbox Code Playgroud)

我如何在 RegressionMyTest 中重用 MyTestClass 中的测试,以便 MyTestClass 和 RegressionMyTest 都可以工作,如果它们使用鼻子测试/单元测试单独运行。

dm0*_*514 5

通常测试应该断言代码以某种方式运行,所以我不确定在测试套件之间实际共享测试是否有意义,(我认为这不是很明确)

Python 测试用例只是 Python 类,测试运行程序会针对以test_. 因此,您可以像使用普通类一样使用继承。

如果您需要共享功能,您可以创建一个具有共享初始化方法/辅助方法的基类。或者使用跨测试所需的实用函数创建测试混合。

class BasetTestCase(unittest.TestCase):
  def setUp(self):
     # ran by all subclasses

  def helper(self):
    # help

class TestCaseOne(BaseTestCase):

   def setUp(self):
      # additional setup
      super(TestCaseOne, self).setUp()

  def test_something(self):
      self.helper() # <- from base
Run Code Online (Sandbox Code Playgroud)

也许您不想在基类上定义设置方法,而只想使用基类中定义的一些辅助方法在子类上定义?很多选择!