def sum1(list1):
return sum(list1)
def sum2(list1):
res = 0
for x in list1:
res += x
return res
import unittest
from ddt import ddt, data
@ddt
class SumTest(unittest.TestCase):
@data(sum1, sum2)
def test_sum(self, param):
self.assertEqual(param([1, 2, 3]), 6)
if __name__ == '__main__':
unittest.main()
我的方法是在一个不继承
TestCase
的类中编写测试,然后编写多个测试类,这些测试类分别是继承自TestCase
和这些测试,但它们要么有一个工厂方法,要么有类的class属性来实例化:将参数化测试与测试函数一起用作参数。在
例如,使用
ddt
模块进行参数化测试:在本例中,有两个函数“sum1”和“sum2”实现相同的算法:列表元素的求和。在测试类中,只有一个测试方法“test_sum”,它将具体的求和函数作为参数。这两个求和函数被指定为参数化测试的值列表。在
您可以使用pip安装“ddt”:
^{pr2}$如果您
import
使用相同名称的不同实现,则可以保持测试不变。要测试impl1
,请执行以下操作:在你的测试代码中。要测试
^{pr2}$impl2
,请执行以下操作:如果
impl1
和impl2
具有相同的接口,则其他所有内容都可以保持不变。在编辑:您可以将这些导入包装在
if
子句中,并使用命令行参数选择一个。在使用这种方法,您不必更改测试。在
相关问题 更多 >
编程相关推荐