日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

selenium小白学习笔记(6) - 使用parameterized参数化

發布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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文件中讀取的部分:

import unittest import time import csv from selenium import webdriver from parameterized import parameterizedwith open(r"I:\python\testBaidu.csv","r") as rf:myreader=csv.reader(rf)keylist=list(myreader)class testBaiduSearch(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver=webdriver.Chrome()cls.baseURL=r"https://www.baidu.com/"@parameterized.expand(keylist)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、先導入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参数化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。