相信大家和我有相同的經歷,在寫自動化用例腳本的時候,用例的操作是一樣的,但是就是參數不同,比如說要測一個付款的接口,付款有很多種渠道,另外只有部分參數不一樣,如果我們一個渠道一個渠道的寫,在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)
報告,可以看到用例后顯示了英文注釋

