基于Excel参数化你的Selenium2测试-xlrd

前言

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

环境安装

xlrd是python用于读取excel的第三方扩展包,因此在使用xlrd前,需要使用以下命令来安装xlrd。

pip install xlrd

xlrd基本用法

  1. 导入扩展包

import xlrd

  1. 打开excel文件

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

  1. 获取工作表

# 通过索引顺序获取

table = excel.sheets()[0] table = excel.sheet_by_index(0)

# 通过工作表名获取

table = excel.sheet_by_name(u‘Sheet1‘)

  1. 获取行数和列数

# 获取行数

nrows = table.nrows

# 获取列数

ncols = table.ncols

  1. 获取整行或整列的值

# 其中i为行号, j为列号# 行号、列号索引从0开始

row_values = table.row_values(i)

col_values = table.col_values(j)

  1. 获取指定单元格数据

# i-行号, j-列号

value = table.cell(i, j).value

# 例如获取第一行、第一列的数据

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

  1. 循环行遍历列表数据

# 先获取行数

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文件。

序号 搜索词 期望结果
1 开源优测 开源优测_百度搜索
2 别啊 别啊_百度搜索
3 尼玛,能不能动手分享下? 尼玛,能不能动手分享下?_百度搜索

# 将以下代码保存到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]

  # 获取行数

  nrows = table.nrows

  # 从第二行开始遍历数据

  # 存入一个list中

  test_data = []

  for i in range(1, nrows):

    test_data.append(table.row_values(i))

# 返回读取的数据列表

    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]百度搜索"

    # 加载测试数据

    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自动化测试过程参数化相应的输入数据和期望结果。

时间: 2024-10-16 01:32:51

基于Excel参数化你的Selenium2测试-xlrd的相关文章

基于USB3.0的双目相机测试小结之CC1605配合CS5642 双目 500w摄像头

基于USB3.0的双目相机测试小结之CC1605配合CS5642  双目 500w摄像头 CC1605双目相机评估板可以配合使用柴草电子绝大多数摄像头应用 如:OV5640.OV5642.MT9P031.MT9V034.MT9M001.MT9F002等等 本次测试以CS5642V3摄像头为例,sensor为OV5642 测试分辨率为 1280*720:720p 1280*1024:SXGA 1920*1080:1080p 2048*1024 2048*1536:3M 测试帧率:15fps 一.U

基于Eclipse的Android JNI层测试应用开发过程记录

前言 本文记录一个Java层与JNI层参数与数据交互的应用程序开发过程,为实现一个功能完整的带Java与JNI的应用程序打下基础.本文假设读者已搭建好Android的Eclipse与NDK开发环境,包括通过ADB连接手机的配置. 1. 构建基本的Android应用程序 1.1 引导界面配置 打开Eclipse,"File"->"New"->"Android Application Project",在弹出界面,配置如下(红色框表示不是

一种基于动态插件系统的移动测试黑科技

百度MTC是业界领先的移动应用测试服务平台,为广大开发者在移动应用测试中面临的成本.技术和效率问题提供解决方案.同时分享行业领先的百度技术,作者来自百度员工和业界领袖等. 本文作者:hyxbiao && tony xin 背景 移动APP插件化是平台化产品解决系统限制(65535).模块解耦.和多团队协作的利器.它的最大特点是模块动态下发,给产品带来的收益显而易见,但是,在百度,这套系统给移动端测试技术带来了新思路 移动端线上问题定位的几个场景: 场景一: 云端用户反馈某功能不可用,RD猜

基于VMware的eCos应用程序测试(hello wold)

(1)脚本配置ecosconfig new pccdl_component CYG_HAL_STARTUP { # Flavor: data # No user value, uncomment the following line to provide one. user_value FLOPPY (此处为修改的位置) # value_source default # Default value: RAM # Legal values: "RAM" "FLOPPY"

vue-cli 脚手架基于Nightwatch的端到端测试环境的过程

不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试,并为回归测试提供反馈. 端到端测试又简称E2E(End-To-End test)测试,它不同于单元测试侧重于检验函数的输出结果,端到端测试将尽可能从用户的视角,对真实系统的访问行为进行仿真.对于Web应用来说,这意味着需要打开浏览器.加载页面.运行JavaScript,以及进行与DOM交互等操作.

MockMVC - 基于RESTful风格的SpringMVC的测试

MockMVC - 基于RESTful风格的SpringMVC的测试 对于前后端分离的项目而言,无法直接从前端静态代码中测试接口的正确性,因此可以通过MockMVC来模拟HTTP请求.基于RESTful风格的SpringMVC的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试. package test.example.controller; import com.DemoApplication; import com.example.enti

基于linux下的NIST数字测试(下)——测试过程

基于linux下的NIST数字测试(下)--测试过程 1.下载安装Matlab--来自微信公众号,软件安装管家 利用Matlab生成随机数x = randsrc(1,32e3,[0,1]) 把数据复制到txt文本中 然后把随机数矩阵的文本suijishu.txt复制到ubuntu 的NIST数字测试目录下 2.准备环境,进行测试 按着提示进行选择,并且输入文件名 选择测试类型 分别对应以下15种测试类型 1.频率(单比特)测试 2.块内频数测试(Frequency Test within a B

一个基于.NET平台的自动化/压力测试系统设计简述(可独立运行,提供源码)

AutoTest系统设计概述 AutoTest是一个基于.NET平台实现的自动化/压力测试的系统,可独立运行于windows平台下,支持分布式部署,不需要其他配置或编译器的支持.(本质是一个基于协议的测试工具),前面还有一篇对其功能的简单介绍[http://www.cnblogs.com/lulianqi/p/4773146.html] AutoTest用于发布的部分有2个部分,主程序[AutoTest.exe]及分布式部署程序[RemoteService.exe](用于将将测试业务分布式部署到

接口自动化---简单的数据驱动框架ATP(基于excel)

数据驱动测试:根据数据进行测试.将用例写入excel文件,用代码读取文件中的数据,从而实现自动化测试. 自动化框架实现步骤: 1.获取用例 2.调用接口 3.校验结果 4.发送测试报告 5.异常处理 6.日志一.首先准备好用例 在excel文件中用例写好,格式如下:数据一定要填写正确. 二.编写框架结构 ATP框架结构搭建:lib目录下放一些处理操作,logs目录下存放日志文件,cof文件夹放一些配置文件,bin文件夹作为启动文件,cases目录下放我们准备好的用例 注意:文件目录建好以后,必须