打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python 数据驱动(ddt,unpack)

dt 是第三方模块,需安装, pip install ddt

DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)

通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。

  1. from ddt import ddt,data,unpack
  2. import unittest
  3. test_data1 = [{"username": "zhangsan", "pwd": "zhangsan"},
  4. {"username": "lisi", "pwd": "lisi"},
  5. {"username": "wangwu", "pwd": "wangwu"},
  6. ]
  7. test_data2 = [{"username": "wukong", "pwd": "wukong"},
  8. {"username": "wuneng", "pwd": "woneng"},
  9. {"username": "wujing", "pwd": "wujing"},
  10. ]
  11. @ddt
  12. class Test(unittest.TestCase):
  13. def setUp(self):
  14. print("===Start!===")
  15. def tearDown(self):
  16. print("===end!===")
  17. @data(*test_data1)
  18. def test_ddt1(self, data):
  19. print(data)
  20. ```
  21. test_ddt1的测试结果是OK的,因为test_data2作为一个整体传给了data,所以value打印的值为test_data1
  22. ```
  23. @data(*test_data2)
  24. def test_ddt2(self, data):
  25. print(data['username'])
  26. ```
  27. test_ddt2的测试结果是OK的,因为test_data2作为一个整体传给了data,然后根据字典取出value值
  28. ```
  29. @data([3,2,1],[5,3,2],[10,4,6])
  30. @unpack #@unpack,那么[3,2,1]被分解开,按照用例中的三个参数传递
  31. def test_minus(self,a,b,expected):
  32. actual = int(a)-int(b)
  33. expected = int(expected)
  34. print(actual,expected)
  35. self.assertEqual(actual, expected)
  36. ```
  37. test_minus的测试结果也是ok的,由于在 @ data(...)下加了 @ unpack, 代表会把数据分解,得到3组测试数据
  38. ```
  39. @data([2, 3], [4, 5]) #没有@unpack,那么[2,3]当成一个参数传入用例运行
  40. def test_compare(self, a, b):
  41. print(a,b)
  42. self.assertEqual(a, b)
  43. ```
  44. test_compare的测试结果是fail的,由于没有加 @ unpack, 虽然还是会被理解成2组测试数据,但是[2, 3]
  45. 作为一个整体被传给了a, 因为b就没有值传入了,所以一执行后报了
  46. TypeError: test_compare() missing 1 required positional argument: 'b' 这句错
  47. ```
  48. if __name__ == "__main__":
  49. unittest.main()
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何将 Python 的一个类方法变为多个方法?
selenium数据驱动
自动化测试项目实战09:数据驱动
自动化搭建环境及基础理论
unittest测试基本操作
python学习杂记
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服