python -- unittest测试用例函数无法传参的处理方法(ddt)

1、超继承

  重写测试用例类的init方法,如下所示。

import requests
import unittest

class XiaoheiCases(unittest.TestCase):
    def __init__(self,methodName,url,data,cookies=None):
        super(XiaoheiCases,self).__init__(methodName)
        self.url = url
        self.data = data
        self.cookies = cookies

2、ddt模块

'''
ddt结合unittest来进行数据处理的第三方库,很强大
安装pip install ddt
ddt需要和unittest或pytest结合使用
'''
from ddt import ddt,data,unpack
import unittest
test_print = [1,3]
test_b = [[1,2,3],[4,5,6]]

@ddt #装饰测试类
class TestMath(unittest.TestCase):

    @data(test_print) #装饰测试函数,通过这种方式传参,如果通过*test_data传参,则有几个参数,执行几次测试用例
    def test_print(self,item):
        print('item:{0}'.format(item))

    @data(*test_b)
    @unpack   #当要取内层嵌套,如test_b的值时,用unpack修饰
    def test_b(self,i,j,k): #使用unpack后,必须内层嵌套的值都以变量的形式传入,否则报错
        print('我是i:{0},j:{1},k:{2}'.format(i,j))

  注意:ddt模块在加载测试用例的时候,不能使用实例化的方式加载(suit.addTest(XiaoheiCases(‘test1’)),而应使用加载器的方式加载(loadder)

原文地址:https://www.cnblogs.com/hzgq/p/11979684.html