基于 Excel 参数化你的 Selenium2 测试代码

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

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

一、安装xlrd

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

pip install xlrd

这里写图片描述

二、xlrd 基本用法

以图片excl文件为例:

这里写图片描述

1.导入扩展包

import xlrd

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

excel = xlrd.open_workbook(u'excelFile.xls')

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

table = excel.sheets()[0]#通过索引顺序获取
table = excel.sheet_by_index(0)#通过索引顺序获取
table = excel.sheet_by_name('Sheet1')#通过名称获取

4.获取总行数和总列数

nrows = table.nrows#总行数
ncols = table.ncols#总列数
print nrows,ncols

执行结果:

3 2

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

table.row_values(0)#获取第一行的值
table.col_values(0)#获取第一列的值

执行结果:

[u'\u5e8f\u53f7', u'\u503c'] #第一行的值“序号”,“值”
[u'\u5e8f\u53f7', u'username', u'password']#第一列的值“序号”,“username”,“password”

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

x = table.cell_value(0,0)#获取1行1列的值
print x

或者

x = table.cell(0,0).value
print x

执行结果:

序号

7.循环行遍历列表数据

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

结果:

[u'\u5e8f\u53f7', u'\u503c']#第一行
[u'username', u'MTbaby']#第二行
[u'password', u'Mtbaby-csdn']#第三行

三、示例展示

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

这里写图片描述

代码实现

#-*- 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-workspace\selenium\mt.html" #在当前目录或者你自己喜欢的目录新建一个html文件,用于展示你的测试报告
    fp = open(htmlPath, "wb")
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"百度测试",description=u"测试用例结果")
    runner.run(testunit)
    fp.close()

html页面展示:

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值