1、parameterized.parameterized
import unittest from parameterized import parameterized class TestAdd(unittest.TestCase): ss = [ {'username': '15669910105'}, {'password': 'a123456'}, {'username': '15669910105', 'password': '123456'}, {'username': '15669910105', 'password': 'a123456'} ] datas = [str(data) for data in ss] # str方法将字典转化为字符串 @parameterized.expand(datas) #取出的是list的元素 def test_add(self,body): print(body) if __name__ == '__main__': #Pycharm执行时注意鼠标需要放在 unittest.main(verbosity=2)代码块的位置,否则会报错 unittest.main(verbosity=2) # verbosity表示测试结果的信息复杂度
2、pytest.mark.parametrize
import pytest import requests datas = [ {'request': {'method': 'get', 'url': 'https://www.baidu.com'}, #请求 'assert': ['res.status_ code==200']}, #断言 {'request': {'method': 'post', 'url': ' http://127.0.0.1:5000/login','json':{'username': '15669910105', 'password': 'a123456'}}, 'assert': ['res.status_ code==200']}, ] @pytest.mark.parametrize("data",datas) def test_(data): print(data) da = data.get('request')#请求数据 res =requests.request(method=da.get("method"),url=da.get("url"),json=da.get("json")) print("响应数据",res) if __name__ == '__main__': pytest.main(['-s', 'demo8.py']) #以print信息显示
3、ddt、unpack
import unittest from ddt import ddt,data,unpack datas = [ {'first': 1, 'second': 3, 'third': 5}, {'first': 4, 'second': 7, 'third': 8} ] @ddt class MyTesting(unittest.TestCase): def setUp(self): print('this is the setUp') @data(*datas) #对于传过来的值需要指针 @unpack def test_dicts(self, first, second, third): print(first,second,third) def tearDown(self): print('this is tearDown') if __name__ == '__main__': unittest.main(verbosity=2)