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)
首先,導(dǎo)入 Parameterized 庫下面的 parameterized 類棺牧。
其次巫糙,通過@parameterized.expand()來裝飾測試用例 test_search()。
在@parameterized. expand()中颊乘,每個元組都可以被認(rèn)為是一條測試用例参淹。元組中的數(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,輸出更詳細(xì)的執(zhí)行日志冕茅。
運(yùn)行上面的測試用例伤极,結(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語言》