接口测试 unittest 参数化 parameterized

Ihaveapen233 · 2018年02月06日 · 最后由 119 回复于 2018年10月08日 · 2184 次阅读

资料来源

Java 的 TestNG 有参数化功能,最近在学 Python,所以想试试 Python 能否参数化。
搜罗了一下资料,找到 parameterized 模块。主要参考资料https://www.cnblogs.com/fnng/p/6580636.html?utm_source=tuicool&utm_medium=referral

环境

  • Python3.6.0
  • Pycharm

简单实例

在原资料的基础上添加了一个调用方法时的实例

  • 被测试方法 module.py

    class Calculator():
    def __init__(self, a, b):
        self.a = int(a)
        self.b = int(b)
    
    def add(self):
        return self.a + self.b
    
  • 测试 test.py

import unittest
from unittest_demo.module import Calculator
from nose_parameterized import parameterized

class TestAdd0(unittest.TestCase):
    @parameterized.expand([
        ('x',4,5,9),
        ('y',5,6,11),
    ])

    def test_add_0(self,name,a,b,c):
        # 函数在断言里面
        self.assertEqual(a + b, c)

class TestAdd(unittest.TestCase):
    @parameterized.expand([
        ('x', 4, 5, 9),
        ('y', 5, 6, 11),
        ('z', 6, 6, 12),
    ])

    def test_add(self,name,a,b,c):
        # 调用方法
        cal = Calculator(a, b).add()
        self.assertEqual(cal, c)

if __name__ == '__main__':
    unittest.main(verbosity=2)  # verbosity表示测试结果的信息复杂度

注意

Pycharm 执行时注意鼠标需要放在 unittest.main(verbosity=2) 代码块的位置,否则会报错:TypeError: 'NoneType' object is not callable

下次补充接口测试实例

共收到 2 条回复 时间 点赞

参数化之后不能输出到 HTMLTestRunner 有什么解决办法吗

刚开始学习这个,如果不能输出到 HTMLTestRunner 的话,那么测试报告是什么样的呢?现在有可以解决的办法了吗?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册