gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 16:33:04 25 4
gpt4 key购买 nike

我已经使用 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'

这会很好用。现在我想在另一个类中重用相同的测试用例。说,

    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

我如何在 RegressionMyTest 中重用 MyTestClass 中的测试,以便 MyTestClass 和 RegressionMyTest 在使用 nosetests/unittest 单独运行时都能正常工作。

最佳答案

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

Python 测试用例只是 python 类,测试运行器会自检以 test_ 开头的方法。因此,您可以像使用普通类一样使用继承。

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

    class BaseTestCase(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

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

关于python - 如何重用使用 unittest.testcase 编写的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29987488/

25 4 0
文章推荐: python - 异常 ('Exception caught in workbook destructor. Explicit close() may be required for workbook.'
文章推荐: python - 为什么 PDB 似乎不像普通的 Python 解释器那样支持所有对象的 help()?
文章推荐: javascript - 如何使用 Javascript 链接到外部
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com