如何确保自定义函数在每个 Python 单元测试执行后运行



我想确保自定义函数在每次测试后运行。

现在,我有以下解决方案,涉及在每个 unitTest 模块中添加一个 tearDown() 调用,这似乎有点过分了。

import unittest
custom_descr = []

def do_something(test):
    custom_descr.append('from '.format(test))

class Tester(unittest.TestCase):
   def test_1(self):
       do_something('test_1')
    def tearDown(self):
        for descr in custom_descr:
            print(descr)

是否可以按照以下想法通过在任何base_class中集中任何描述来避免在每个模块中编写tearDown()(尽管以下内容不起作用(:

import unittest
# in common_module.py
custom_descr = []

def do_something(test):
    custom_descr.append('from '.format(test))
class Test_Base(unittest.TestCase):           
    def tearDown(self):
        for descr in custom_descr:
            print(descr)
# in module1.py
class Tester1(Test_Base):
   def test_1(self):
       do_something('test_1')
# in module2.py
class Tester2(Test_Base):
   def test_2(self):
       do_something('test_2')

一个简单的解决方案是在每个测试模块的设置中添加self.tearDown = Test_Base.warn,但这与我想要的相去甚远 - 因为我仍然需要在每个模块中重复代码(无论多么小(

import unittest
// in common_module.py
custom_descr = []

def do_something(test):
    custom_descr.append('from '.format(test))
class Test_Base(unittest.TestCase):           
    def final(self):
        for descr in custom_descr:
            print(descr)
//in module1.py
class Tester1(Test_Base):
  def setUp(self):
       self.tearDown = Test_Base.final
   def test_1(self):
       do_something('test_1')
//in module2.py
class Tester2(Test_Base):
    def setUp(self):
       self.tearDown = Test_Base.final
   def test_2(self):
       do_something('test_2')

相关内容

  • 没有找到相关文章

最新更新