基於Excel參數化你的Selenium2測試代碼
前言
今天我們就如何使用xlrd模塊來進行python selenium2 + excel自動化測試過程中的參數化進行演示說明,以解決大家在自動化測試實踐過程中參數化的疑問。
環境安裝
xlrd是python用於讀取excel的第三方擴展包,因此在使用xlrd前,需要使用以下命令來安裝xlrd。
pip install xlrd
xlrd基本用法
- 導入擴展包
import xlrd
- 打開excel文件
excel = xlrd.open_workbook(uexcelFile.xls)
- 獲取工作表
通過索引順序獲取table = excel.sheets()[0]table = excel.sheet_by_index(0)通過工作表名獲取table = excel.sheet_by_name(uSheet1)
- 獲取行數和列數
獲取行數nrows = table.nrows獲取列數ncols = table.ncols
- 獲取整行或整列的值
其中i為行號, j為列號行號、列號索引從0開始row_values = table.row_values(i)col_values = table.col_values(j)
- 獲取指定單元格數據
i 行號, j 列號value = table.cell(i, j).value例如獲取第一行、第一列的數據value = table.cell(0, 0).value
- 循環行遍歷列表數據
先獲取行數nrows = table.nrows遍歷列印所有行數據for i in range(0, nrows): print table.row_values(i)
至此我們將xlrd基本常用的技巧和方法都一一列舉完畢,下面我們一起看一下如何利用xlrd來實現python selenium2自動化測試參數化。
代碼示例
我們以上一章我們的第一個python selenium2測試代碼為藍本,進行改造,從excel中讀取以下格式的數據來進行測試,
請將下列表格數據存入名為baidu_search.xlsx的excel文件。
excel_demo.png
#將以下代碼保存到first_webdriver.py中#-*- coding:utf-8 -*-__author__ = u苦葉子from selenium import webdriverimport unittestimport HTMLTestRunner import sysfrom time import sleepimport xlrdreload(sys)sys.setdefaultencoding("utf-8")class LoadBaiduSearchTestData: def __init__(self, path): self.path = path def load_data(self): # 打開excel文件 excel = xlrd.open_workbook(self.path) # 獲取第一個工作表 table = excel.sheets()[0] # 獲取行數 nrows = table.nrows # 從第二行開始遍曆數據 # 存入一個list中 test_data = [] for i in range(1, nrows): test_data.append(table.row_values(i)) # 返回讀取的數據列表 return test_dataclass BaiduTest(unittest.TestCase): """百度首頁搜索測試用例""" def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = u"http://www.baidu.com" self.path = u"baidu_search.xlsx" def test_baidu_search(self): driver = self.driver print u"開始[case_0001]百度搜索" # 載入測試數據 test_excel = LoadBaiduSearchTestData(self.path) data = test_excel.load_data() print data # 循環參數化 for d in data: # 打開百度首頁 driver.get(self.base_url) # 驗證標題 self.assertEqual(driver.title, u"百度一下,你就知道") sleep(1) driver.find_element_by_id("kw").clear() # 參數化 搜索詞 driver.find_element_by_id("kw").send_keys(d[1]) sleep(1) driver.find_element_by_id("su").click() sleep(1) # 驗證搜索結果標題 self.assertEqual(driver.title, d[2]) sleep(2) def tearDown(self): self.driver.quit()if __name__ == __main__: testunit = unittest.TestSuite() testunit.addTest(BaiduTest(test_baidu_search)) # 定義報告輸出路徑 htmlPath = u"testReport.html" fp = file(htmlPath, "wb") runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"百度測試", description=u"測試用例結果") runner.run(testunit) fp.close()
總結
在上文中,我們詳細的描述了xlrd操作excel的各種方法和技巧,以及封裝xlrd讀取excel實現在python selenium自動化測試過程參數化相應的輸入數據和期望結果。
最重要的還是需要大家自己多練習相關的代碼,並能做相應的擴展, 同時要去有針對性的學習對應的庫,深入了解其使用方法和技巧,甚至原理。
推薦閱讀:
※零基礎如何學習自動化測試
※Pycharm—FileNotFoundError: [WinError 2] 系統找不到指定的文件?
※selenium自動化測試入門n Alert/Confirm/Prompt 彈出窗口處理