python3-unittest 重复执行多条测试并逐条返回测试结果

之前编写接口测试 因为我的项目接口均为post请求,接口json格式统一所以就不想写太多testcase,仅检查接口是否对于长度和参数类型进行校验。就产生了传入不同参数,重复执行testcase需求。

目前发现了两种方法第一种使用ddt这个库,优点在于简单方便逻辑不复杂,缺点在于仅支持一层循环,第二种方法是通过setattr来自动为已有的TestCase类添加成员函数这个方法好处在于可以多层循环。

方法一:

from ddt import data,ddt

@ddt
class test_suite (unittest.TestCase):
    global test_info
    #这里可以修改和添加test_info变量的内容和属性

    test_info =[]
    for i in range(100):
        test_data = (i,i+1)
        test_info.append(test_data)
    
    @data (*test_info)#这里很多教程会用 @unpack 其实不需要的打包好数据再重新放入test_info中
    def test_case(self,test_info):
        print(test_info)

if __name__ =='__main__':
    unittest.main()

就可以循环执行了,上面声明变量为全局变量后可以定义这个变量的内容和含义。

 

方法二:

# !/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
 
 
class TestCases(unittest.TestCase):
 
    def setUp(self):
        pass
 
    def action(self, arg1, arg2):
        print arg1, arg2
 
    @staticmethod
    def getTestFunc(arg1, arg2):
        def func(self):
            self.action(arg1, arg2)
        return func
#在这里可以定义循环次数以及其他内容
def __generateTestCases():
    arglists = [('arg11', 'arg12'), ('arg21', 'arg22'), ('arg31', 'arg32')]
    for args in arglists:
        setattr(TestCases, 'test_func_%s_%s' % (args[0], args[1]),
                TestCases.getTestFunc(*args))
#test_func_%s_%s 这里用来定义testcase名称
__generateTestCases()
 
if __name__ =='__main__':
    unittest.main()

第二种方法是再网上找到的,原网址在:https://blog.csdn.net/xm_csdn/article/details/77158979

 

总结:两种方法各有优略。具体要实现哪一种就看实际需求了。

你可能感兴趣的:(python3-unittest 重复执行多条测试并逐条返回测试结果)