Parameterized 是 Python 的一個參數(shù)化庫,同時支持 unittest、Nose 和 pytest 單元測試
框架。
GitHub 地址:https://github.com/wolever/parameterized。
Parameterized 支持 pip 安裝。
使用命令:pip install parameterized
import unittest
from time import sleep
from selenium import webdriver
from parameterized import parameterized
class TestBaidu(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.base_url = "https://www.baidu.com"
def baidu_search(self,search_key):
self.driver.get(self.base_url)
self.driver.find_element_by_id("kw").send_keys(search_key)
self.driver.find_element_by_id("su").click()
sleep(2)
#通過Parameterized實現(xiàn)參數(shù)化
@parameterized.expand([
("case1","selenium"),
("case2","unittest"),
("case3","parameterized"),
])
def test_search(self,name,search_key):
self.baidu_search(search_key)
self.assertEqual(self.driver.title,search_key+"_百度搜索")
@classmethod
def tearDownClass(cls):
cls.driver.quit()
if __name__ == '__main__':
unittest.main(verbosity=2)
首先,導入 Parameterized 庫下面的 parameterized 類。
其次,通過@parameterized.expand()來裝飾測試用例 test_search()。
在@parameterized. expand()中,每個元組都可以被認為是一條測試用例。元組中的數(shù)據(jù)
為該條測試用例變化的值。在測試用例中,通過參數(shù)來取每個元組中的數(shù)據(jù)。
在 test_search()中,name 參數(shù)對應(yīng)元組中第一列數(shù)據(jù),即“case1”“case2”“case3”,
用來定義測試用例的名稱;search_key 參數(shù)對應(yīng)元組中第二列數(shù)據(jù),即“selenium”“unittest”
“parameterized”,用來定義搜索的關(guān)鍵字。
最后,使用 unittest 的 main()方法,設(shè)置 verbosity 參數(shù)為 2,輸出更詳細的執(zhí)行日志。
運行上面的測試用例,結(jié)果如下。

通過測試結(jié)果可以看到,因為是根據(jù)@parameterized.expand()中元組的個數(shù)來統(tǒng)計測試
用例數(shù)的,所以產(chǎn)生了 3 條測試用例。test_search 為定義的測試用例的名稱。參數(shù)化會自
動加上“0”、“1”和“2”來區(qū)分每條測試用例,在元組中定義的“case1”“case2”“case3”
也會作為每條測試用例名稱的后綴出現(xiàn)。
--來源蟲師《Selenium3自動化測試實戰(zhàn)——基于Python語言》