pip install ddt
版本不能太高 1.1.2即可
简单案例
import ddt import unittest # 准备的测试数据 dates = [ {"user": "test", "psw": "test", "exp": "结果1"}, {"user": "test1", "psw": "test1", "exp": "结果"}, {"user": "test1", "psw": "test1", "exp": "结果1"}, ] @ddt.ddt class TestLogin(unittest.TestCase): @ddt.data(*dates) def test_01(self, xx):#xx是接受@ddt.data(*dates)准备的测试数据 print(xx) user= xx['user'] psw = xx['psw'] exp = xx['exp'] act = "结果" # 获取的 实际结果 self.assertEqual(exp, act) if __name__ == '__main__': #一定要在if中运行 unittest.main()

登录案例
import unittest import requests from ke15.login_cls_api import TestXadmin import ddt dates = [ {"user": "test", "psw": "test", "exp": True}, {"user": "test111", "psw": "11", "exp": False}, {"user": "test222", "psw": "22", "exp": False}, {"user": "test", "psw": "test", "exp": True}, ] @ddt.ddt class TestLogin(unittest.TestCase): def setUp(self): self.s = requests.session() self.x = TestXadmin(self.s) def tearDown(self): self.s.close() @ddt.data(*dates) def test_login_01(self, xxx): '''登录数据: test test ''' print("测试数据:%s" % str(xxx)) user = xxx["user"] psw = xxx["psw"] exp = xxx["exp"] print("期望结果:%s"%exp) t = self.x.login(user, psw ) # 登录 res = self.x.is_login_sucess(t) # 获取实际结果 print("实际结果:%s"%res) self.assertEqual(res, exp) if __name__ == '__main__': unittest.main()
使用excel读取数据
exce中数字都要转换-设置单元格格式-格式为文本(先编辑,后设置,不然没有效果)
import unittest import requests from ke15.login_cls_api import TestXadmin import ddt from ke16.read_excel import ExcelUtil data = ExcelUtil(excelPath="test.xlsx", sheetName="Sheet1") dates = data.dict_data() print(dates) # dates = [ # {"user": "test", "psw": "test", "exp": True}, # {"user": "test111", "psw": "11", "exp": False}, # {"user": "test222", "psw": "22", "exp": False}, # {"user": "test", "psw": "test", "exp": True}, # ] @ddt.ddt class TestLogin(unittest.TestCase): @classmethod def setUpClass(cls): cls.s = requests.session() cls.x = TestXadmin(cls.s) @classmethod def tearDownClass(cls): cls.s.close() def setUp(self): pass # self.s = requests.session() # self.x = TestXadmin(self.s) def tearDown(self): self.s.cookies.clear() # 清空cookies # # self.s.close() @ddt.data(*dates) def test_login_01(self, xxx): '''登录数据: test test ''' print("测试数据:%s" % str(xxx)) user = xxx["user"] psw = xxx["psw"] exp = bool(xxx["exp"]) #加个bool函数自动转换 0转为true 1转为False print("期望结果:%s"%exp) t = self.x.login(user, psw ) # 登录 res = self.x.is_login_sucess(t) # 获取实际结果 print("实际结果:%s"%res) self.assertEqual(res, exp) if __name__ == '__main__': unittest.main()
三个断言的区别
assertEqual(a,b,msg=none) a是否和b相等,值不等测试失败,msg,可有可无,用于测试失败提供的重要信息
assertTrue(x,msg=none) x是否为0或者none
assertIn(a,b,msg=none) b是否包含a
assertIs(a,b,msg=none) a和b是否为同一对象
11111
浙公网安备 33010602011771号