日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

python 數(shù)據(jù)驅(qū)動(dòng)(ddt,unpack)

 昵稱71011036 2020-08-10

dt 是第三方模塊,需安裝, pip install ddt

DDT包含類的裝飾器ddt和兩個(gè)方法裝飾器data(直接輸入測(cè)試數(shù)據(jù))

通常情況下,data中的數(shù)據(jù)按照一個(gè)參數(shù)傳遞給測(cè)試用例,如果data中含有多個(gè)數(shù)據(jù),以元組,列表,字典等數(shù)據(jù),需要自行在腳本中對(duì)數(shù)據(jù)進(jìn)行分解或者使用unpack分解數(shù)據(jù)。

  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的測(cè)試結(jié)果是OK的,因?yàn)閠est_data2作為一個(gè)整體傳給了data,所以value打印的值為test_data1
  22. ```
  23. @data(*test_data2)
  24. def test_ddt2(self, data):
  25. print(data['username'])
  26. ```
  27. test_ddt2的測(cè)試結(jié)果是OK的,因?yàn)閠est_data2作為一個(gè)整體傳給了data,然后根據(jù)字典取出value值
  28. ```
  29. @data([3,2,1],[5,3,2],[10,4,6])
  30. @unpack #@unpack,那么[3,2,1]被分解開,按照用例中的三個(gè)參數(shù)傳遞
  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的測(cè)試結(jié)果也是ok的,由于在 @ data(...)下加了 @ unpack, 代表會(huì)把數(shù)據(jù)分解,得到3組測(cè)試數(shù)據(jù)
  38. ```
  39. @data([2, 3], [4, 5]) #沒有@unpack,那么[2,3]當(dāng)成一個(gè)參數(shù)傳入用例運(yùn)行
  40. def test_compare(self, a, b):
  41. print(a,b)
  42. self.assertEqual(a, b)
  43. ```
  44. test_compare的測(cè)試結(jié)果是fail的,由于沒有加 @ unpack, 雖然還是會(huì)被理解成2組測(cè)試數(shù)據(jù),但是[2, 3]
  45. 作為一個(gè)整體被傳給了a, 因?yàn)閎就沒有值傳入了,所以一執(zhí)行后報(bào)了
  46. TypeError: test_compare() missing 1 required positional argument: 'b' 這句錯(cuò)
  47. ```
  48. if __name__ == "__main__":
  49. unittest.main()

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多