selenium小白学习笔记(6) - 使用parameterized参数化
參數化
假設對百度搜索功能進行測試,需要搜索很多個關鍵字。若對每一次搜索都寫一個測試方法,那么需要很多行代碼才能完成,而這些測試方法中只是搜索的關鍵字不同,其他操作步驟都是相同的。這樣的測試代碼看上去不夠整潔,更加不利于維護。
使用parameterized可以解決這個問題,由于是第三方模塊,所以需要自己手動安裝一下,安裝語句為pip install parameterized
(p.s.還有其他的參數化方法,如ddt,如果需要可以自己研究)
腳本例子
上腳本:
import unittest import time from selenium import webdriver from parameterized import parameterizedclass testBaiduSearch(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver=webdriver.Chrome()cls.baseURL=r"https://www.baidu.com/"@parameterized.expand([["case1","one"],["case2","two"],["case3","three"]])def test_search(self,case,keys):self.driver.get(self.baseURL)time.sleep(3)self.driver.find_element_by_id("kw").send_keys(keys)self.driver.find_element_by_id("su").click()time.sleep(3)self.assertEqual(self.driver.title,keys+"_百度搜索")@classmethoddef tearDownClass(cls):cls.driver.quit()if __name__=="__main__":unittest.main(verbosity=2)腳本說明
1、首先需要導入parameterized模塊
2、在百度搜索的測試方法test_search前,加上裝飾器@parameterized.expand(),expand中的參數是測試用例名字和百度搜索關鍵字。例子中是三個測試用例,用例case1的關鍵字是one,用例case2的關鍵字為two,用例case3的關鍵字為three。
3、在百度搜索的測試方法test_search的參數中加上測試用例名字和百度搜索關鍵字。
4、為了測試結果顯示的更加詳細,在unittest.main()函數中,加上了參數verbosity=2
5、執行結果
使用csv保存測試參數
若要使用的參數很多,可使用csv來維護參數列表,在執行測試時從csv文件中讀取內容再進行操作即可。
1、本地新建一個csv文件,如圖:
2、腳本修改一下,增加從csv文件中讀取的部分:
腳本說明:
1、先導入csv模塊
2、以下語句為從本地csv文件中讀取內容到keylist中
with open(r"I:\python\testBaidu.csv",“r”) as rf:
myreader=csv.reader(rf)
keylist=list(myreader)
3、將裝飾器@parameterized.expand()的參數設置為keylist
綜上來看,當測試的數據很多很多時,使用csv文件來維護會更加方便。
總結
以上是生活随笔為你收集整理的selenium小白学习笔记(6) - 使用parameterized参数化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李一男:走出百度
- 下一篇: mt6577驱动开发