Java 的 TestNG 有参数化功能,最近在学 Python,所以想试试 Python 能否参数化。
搜罗了一下资料,找到 parameterized 模块。主要参考资料https://www.cnblogs.com/fnng/p/6580636.html?utm_source=tuicool&utm_medium=referral。
在原资料的基础上添加了一个调用方法时的实例
被测试方法 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
下次补充接口测试实例