相信大家和我有相同的經歷,在寫自動化用例腳本的時候,用例的操作是一樣的,但是就是參數不同,比如說要測一個付款的接口,付款有很多種渠道,另外只有部分參數不一樣,如果我們一個渠道一個渠道的寫,在unittest里面就要寫很多個用例腳本,而且大部分內容都是一樣的,這樣腳本就顯得比較冗余了。
我們可以把不同的參數寫在一個列表中,然后循環列表獲取參數執行用例,python有第三方模塊parameterized來實現循環列表獲取參數執行用例的功能。
另外,之前寫用例腳本,每個用例下面增加三引號注釋,可以增加腳本可讀性,而且在報告中也可以顯示注釋,但是,現在接口用例只寫一個,里面的參數都參數化了,如何顯示不同參數情況下的用例的注釋呢?parameterized下的expand方法已經給我們做好了這些,唯一的缺點是,報告中只能顯示英文注釋,不能顯示中文注釋。
完整用例代碼:
import os, sys path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, path) import unittest from core import HTMLTestRunner from parameterized import parameterized from core import logger import inspect from core.tools import p def cacl(a, b): return a + b class MyCacl2(unittest.TestCase): def setUp(self): pass # print('測試用例開始執行...') def tearDown(self): pass # print('測試用例執行完成...') @parameterized.expand( [ ("fushujiaxiaoshu",-1, 1.5, 0.5), # 負數加小數 ("xiaoshujiaxiaoshu",1.1, 2.2, 3.3), # 小數相加 ] ) def test_cacl(self,a, b, c, d): # 此處a不能省略 try: res = cacl(b, c) except TypeError as e: res = '類型錯誤' self.assertEqual(res, d)
報告,可以看到用例后顯示了英文注釋