基於Excel參數化你的Selenium2測試代碼

前言

今天我們就如何使用xlrd模塊來進行python selenium2 + excel自動化測試過程中的參數化進行演示說明,以解決大家在自動化測試實踐過程中參數化的疑問。

環境安裝

xlrd是python用於讀取excel的第三方擴展包,因此在使用xlrd前,需要使用以下命令來安裝xlrd。

pip install xlrd

xlrd基本用法

  1. 導入擴展包

    import xlrd

  2. 打開excel文件

    excel = xlrd.open_workbook(uexcelFile.xls)

  3. 獲取工作表

    通過索引順序獲取table = excel.sheets()[0]table = excel.sheet_by_index(0)通過工作表名獲取table = excel.sheet_by_name(uSheet1)

  4. 獲取行數和列數

    獲取行數nrows = table.nrows獲取列數ncols = table.ncols

  5. 獲取整行或整列的值

    其中i為行號, j為列號行號、列號索引從0開始row_values = table.row_values(i)col_values = table.col_values(j)

  6. 獲取指定單元格數據

    i 行號, j 列號value = table.cell(i, j).value例如獲取第一行、第一列的數據value = table.cell(0, 0).value

  7. 循環行遍歷列表數據

    先獲取行數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 彈出窗口處理

TAG:自動化測試 | Selenium | 軟體測試 |