zoukankan      html  css  js  c++  java
  • python3 应用 nose_parameterized 实现unittest 参数化

    一、读取变量的值,实现unittest 参数化

    import nose_parameterized,unittest
    
    def calc(a:int,b:int):
        return a+b
    case_data =[
        [10,20,30],
        [12,21,33],
        [15,21,36]
    ]
    class MyClass(unittest.TestCase):
        @nose_parameterized.parameterized.expand(case_data)
        def test_compare(self,a,b,expect):
            actual = calc(int(a),int(b))
            self.assertEqual(actual,expect)
    if __name__ == '__main__':
        unittest.main()

    定义了一个二维数组case_data,用来存值,使用时直接在test方法上方加

    @nose_parameterized.parameterized.expand(case_data)

    最后可以得到以下测试结果,说明测试成功。


    同样,也可以将case_date定义为下面的形式,也可以实现unittest参数化。
    case_data =[
        (10,20,30),
        (12,21,33),
        (15,21,36)
    ]

    二、读取文件的方式,实现unittest 参数化

    @nose_parameterized.parameterized.expand(case_date) 这句中的case_data, 
    只要写个函数,从文件格式读取的每一行放到一个list里,生成一个二维数组,,将这个二维数组赋给case_data就可以了。

    如下所示,调用类DataToParam中的text方法,从 case_data.txt 生成一个二维数组。

    @nose_parameterized.parameterized.expand(DataToParam.text('case_data.txt'))

    下面是读取txt文件的函数封装在类DataToParam 里, 要读取excel的话,可以在DataToParam里再加一个读取excel的函数,然后把判断文件单独拎出来,放一个函数里,这样可以公用。

    class DataToParam(object):
    @staticmethod
    def text(filename,seq=','):
    if os.path.isfile(filename):
    with open(filename,encoding='utf-8') as f:
    res = []
    for line in f:
    res.append(line.strip().split(seq))
    return res
    else:
    raise Exception('参数化文件不存在!') #主动抛出异常

    print(DataToParam.text('case_data.txt'))
  • 相关阅读:
    模拟电梯运行
    用户需求调研报告
    NABC需求分析
    大道至简---读书随笔3
    二维环形数组求最大子数组和
    结对开发之求最大数组溢出问题
    结对开发之环形数组
    结对开发之电梯调度
    我看“微软拼音”
    团队开发项目之典型用户和用户场景
  • 原文地址:https://www.cnblogs.com/nancyzhu/p/8551389.html
Copyright © 2011-2022 走看看