?? 動動手指分享到朋友圈是一個好習(xí)慣 ??
前言
今天我們就如何使用xlrd模塊來進(jìn)行python selenium2 + excel自動化測試過程中的參數(shù)化進(jìn)行演示說明须尚,以解決大家在自動化測試實(shí)踐過程中參數(shù)化的疑問振愿。
環(huán)境安裝
xlrd是python用于讀取excel的第三方擴(kuò)展包,因此在使用xlrd前红选,需要使用以下命令來安裝xlrd澜公。
pip install xlrd
xlrd基本用法
- 導(dǎo)入擴(kuò)展包
import xlrd
- 打開excel文件
excel = xlrd.open_workbook(u'excelFile.xls')
- 獲取工作表
通過索引順序獲取
table = excel.sheets()[0]
table = excel.sheet_by_index(0)
通過工作表名獲取
table = excel.sheet_by_name(u'Sheet1')
- 獲取行數(shù)和列數(shù)
獲取行數(shù)
nrows = table.nrows
獲取列數(shù)
ncols = table.ncols
- 獲取整行或整列的值
其中i為行號, j為列號
行號喇肋、列號索引從0開始
row_values = table.row_values(i)
col_values = table.col_values(j)
- 獲取指定單元格數(shù)據(jù)
i 行號坟乾, j 列號
value = table.cell(i, j).value
例如獲取第一行、第一列的數(shù)據(jù)
value = table.cell(0, 0).value
- 循環(huán)行遍歷列表數(shù)據(jù)
先獲取行數(shù)
nrows = table.nrows
遍歷打印所有行數(shù)據(jù)
for i in range(0, nrows):
print table.row_values(i)
至此我們將xlrd基本常用的技巧和方法都一一列舉完畢蝶防,下面我們一起看一下如何利用xlrd來實(shí)現(xiàn)python selenium2自動化測試參數(shù)化甚侣。
代碼示例
我們以上一章我們的第一個python selenium2測試代碼為藍(lán)本,進(jìn)行改造间学,從excel中讀取以下格式的數(shù)據(jù)來進(jìn)行測試殷费,
請將下列表格數(shù)據(jù)存入名為baidu_search.xlsx的excel文件。
#將以下代碼保存到first_webdriver.py中
#-*- coding:utf-8 -*-
__author__ = u'苦葉子'
from selenium import webdriver
import unittest
import HTMLTestRunner
import sys
from time import sleep
import xlrd
reload(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]
# 獲取行數(shù)
nrows = table.nrows
# 從第二行開始遍歷數(shù)據(jù)
# 存入一個list中
test_data = []
for i in range(1, nrows):
test_data.append(table.row_values(i))
# 返回讀取的數(shù)據(jù)列表
return test_data
class 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]百度搜索"
# 加載測試數(shù)據(jù)
test_excel = LoadBaiduSearchTestData(self.path)
data = test_excel.load_data()
print data
# 循環(huán)參數(shù)化
for d in data:
# 打開百度首頁
driver.get(self.base_url)
# 驗(yàn)證標(biāo)題
self.assertEqual(driver.title, u"百度一下菱鸥,你就知道")
sleep(1)
driver.find_element_by_id("kw").clear()
# 參數(shù)化 搜索詞
driver.find_element_by_id("kw").send_keys(d[1])
sleep(1)
driver.find_element_by_id("su").click()
sleep(1)
# 驗(yàn)證搜索結(jié)果標(biāo)題
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'))
# 定義報(bào)告輸出路徑
htmlPath = u"testReport.html"
fp = file(htmlPath, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
title=u"百度測試",
description=u"測試用例結(jié)果")
runner.run(testunit)
fp.close()
總結(jié)
在上文中宗兼,我們詳細(xì)的描述了xlrd操作excel的各種方法和技巧,以及封裝xlrd讀取excel實(shí)現(xiàn)在python selenium自動化測試過程參數(shù)化相應(yīng)的輸入數(shù)據(jù)和期望結(jié)果氮采。
最重要的還是需要大家自己多練習(xí)相關(guān)的代碼殷绍,并能做相應(yīng)的擴(kuò)展, 同時(shí)要去有針對性的學(xué)習(xí)對應(yīng)的庫鹊漠,深入了解其使用方法和技巧主到,甚至原理茶行。