1、parameterized.parameterized
import unittest from parameterized import parameterized,param class TestAdd(unittest.TestCase): ss = [ {'first': 1, 'second': 3, 'third': 5}, {'first': 4, 'second': 7, 'third': 8}, {"first": {'username': '15669910105'}}] @parameterized.expand([param(s) for s in ss]) #只能取出list的str元素 def test_add(self,data): print(data) print(data["first"]) if __name__ == '__main__': #Pycharm执行时注意鼠标需要放在 unittest.main(verbosity=2)代码块的位置,否则会报错 unittest.main(verbosity=2) # verbosity表示测试结果的信息复杂度
2、pytest.mark.parametrize
import pytest datas = [ {'first': 1, 'second': 3, 'third': 5}, {'first': 4, 'second': 7, 'third': 8}, {"first": {'username': '15669910105'}} ] @pytest.mark.parametrize("data",datas) def test_(data): print(data) if __name__ == '__main__': pytest.main(['-s', 'demo8.py']) #以print信息显示
3、ddt、unpack
datas可以是列表,也可以是元祖
@data(datas) 取的是整改列表
@data(*datas) 取的是列表元素
@data(*datas)@unpack 取的是列表元素中子元素
import unittest from ddt import ddt,data,unpack datas = [ {'first': 1, 'second': 3, 'third': 5}, {'first': 4, 'second': 7, 'third': 8} ] @ddt class TestCases(unittest.TestCase): """ datas可以是列表,也可以是元祖 @data(datas) 取的是整改列表 @data(*datas) 取的是列表元素 @data(*datas)@unpack 取的是列表元素中子元素 """ @data(datas) def test_dicts(self,value): print(value) @data(*datas) def test_dict(self,value): print(value) @data(*datas) @unpack def test_dict_element(self, first, second, third): print(first,second,third) if __name__ == '__main__': unittest.main(verbosity=2)