我是靠谱客的博主 高兴小丸子,这篇文章主要介绍基于 Excel 参数化你的 Selenium2 测试代码,现在分享给大家,希望可以做个参考。

在测试过程中直接读取本地excl文件中的数据,一方面,将数据存放本地进行测试非常方便,不需要在代码中一个一个传参;另一方面,简化了代码,是你的测试代码看起来非常简洁易懂。

今天我们就如何使用 xlrd 模块来进行 python selenium2 + excel 自动化测试过程中的参数化进行演示说明,以解决大家在自动化测试实践过程中参数化的疑问。

一、安装xlrd

进入Python安装目录下的site-packages,在此目录下打开cmd,输入

复制代码
1
pip install xlrd

这里写图片描述

二、xlrd 基本用法

以图片excl文件为例:

这里写图片描述

1.导入扩展包

复制代码
1
import xlrd

2.打开 excel 文件,参数是你的excl文件路径

复制代码
1
excel = xlrd.open_workbook(u'excelFile.xls')

3.获取工作表(以下三种方法任意一种都可以获取,大家选一种即可)

复制代码
1
2
3
table = excel.sheets()[0]#通过索引顺序获取 table = excel.sheet_by_index(0)#通过索引顺序获取 table = excel.sheet_by_name('Sheet1')#通过名称获取

4.获取总行数和总列数

复制代码
1
2
3
nrows = table.nrows#总行数 ncols = table.ncols#总列数 print nrows,ncols

执行结果:

复制代码
1
3 2

5.分别获取第一行和第一列的值(注意这里的结果是第一行的值、第二列的值都会被打印出来)

复制代码
1
2
3
table.row_values(0)#获取第一行的值 table.col_values(0)#获取第一列的值

执行结果:

复制代码
1
2
[u'u5e8fu53f7', u'u503c'] #第一行的值“序号”,“值” [u'u5e8fu53f7', u'username', u'password']#第一列的值“序号”,“username”,“password”

6.i代表行号,j代表列号;获取第i行j列的值(以下两种方法都可以)

复制代码
1
2
x = table.cell_value(0,0)#获取1行1列的值 print x

或者

复制代码
1
2
x = table.cell(0,0).value print x

执行结果:

复制代码
1
序号

7.循环行遍历列表数据

复制代码
1
2
3
hs = table.nrows #先获取行数 for i in range(0,hs):#遍历打印所有行数据 print table.row_values(i)

结果:

复制代码
1
2
3
[u'u5e8fu53f7', u'u503c']#第一行 [u'username', u'MTbaby']#第二行 [u'password', u'Mtbaby-csdn']#第三行

三、示例展示

看一下如何利用 xlrd 来实现 python selenium2 自动化测试参数化。
我们将excl中的数据进行百度搜索,搜索值与期望值进行对比,从而验证测试结果。
将以下数据保存在test.xlsx文件中

这里写图片描述

代码实现

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#-*- coding:utf-8 -*- from selenium import webdriver import time import HTMLTestRunner import xlrd import unittest class BDtestdate: def __init__(self,path): self.path = path def load_data(self): #打开excel文件 excel = xlrd.open_workbook(self.path) # 获取第一个工作表 table = excel.sheet_by_name('Sheet1') #获取行数 nrows = table.nrows # 从第二行开始遍历数据,存入一个list中 test_list = [] for i in range(1,nrows): test_list.append(table.row_values(i)) # 返回读取的数据列表 return test_list class BDtest(unittest.TestCase): u"""百度首页搜索测试用例""" def setUp(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(10) self.url = u"https://www.baidu.com/" self.path = u'test.xlsx' #这就是你的excel文件地址 def BDsearch(self): driver = self.driver print u"开始百度搜索" # 加载测试数据 test_excel = BDtestdate(self.path) data = test_excel.load_data() print data # 循环参数化 for d in date: #打开百度首页 driver.get(self.url) #验证标题 self.assertEqual(driver.title,u"百度一下,你就知道") time.sleep(2) driver.find_element_by_id('kw').clear() # 参数化 搜索词 driver.find_element_by_id('kw').send_keys(d[1]) time.sleep(2) driver.find_element_by_id('su').click() # 验证搜索结果标题 time.sleep(2) self.assertEqual(driver.title,d[2]) time.sleep(2) def tearDown(self): self.driver.quit() if __name__ == '__main__': testunit = unittest.TestSuite() testunit.addTest(BDtest('BDsearch')) # 定义报告输出路径 htmlPath = r"F:pycharm-workspaceseleniummt.html" #在当前目录或者你自己喜欢的目录新建一个html文件,用于展示你的测试报告 fp = open(htmlPath, "wb") runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"百度测试",description=u"测试用例结果") runner.run(testunit) fp.close()

html页面展示:

这里写图片描述

最后

以上就是高兴小丸子最近收集整理的关于基于 Excel 参数化你的 Selenium2 测试代码的全部内容,更多相关基于内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部