Python&Selenium 数据驱动【unittest+ddt+Excel】
一、摘要
一般情况下我们为了更好的管理测试数据会选择将测试数据存储在Excel文件当中去,本节内容将展示给读者将测试数据存储在Excel文档中的案例。
二、创建存储测试数据的Excel
创建一个Excel文件TestData.xlsx,并将如下表格数据写入到Excel文件中,作为测试数据。
| 序号 | 搜索词 | 期望结果 | 
| 1 | 北京 | 北京 | 
| 2 | 上海 | 上海 | 
| 3 | 广州 | 广州 | 
三、封装解析Excel文件模块
要解析Excel文件,需要先给Python环境安装openpyxl模块,启动命令行,输入命令pip install openpyxl并回车

在工程中创建ParseExcelUtil.py文件,并写入如下代码:
# encoding = utf-8
from openpyxl import load_workbook class ParseExcel(object): def __init__(self, excelPath, sheetName):
self.wb = load_workbook(excelPath)
# self.sheet = self.lwb.get_sheet_by_name(sheetName)
self.sheet = self.wb[sheetName]
self.maxRowNum = self.sheet.max_row def getDatasFromSheet(self):
dataList = []
for line in list(self.sheet.rows)[1:]:
tmpList = []
tmpList.append(line[1].value)
tmpList.append(line[2].value)
dataList.append(tmpList)
return dataList if __name__ == '__main__':
excelPath = u'D:\\Programs\\Python\\PythonUnittest\\TestData\\测试数据.xlsx'
sheetName = u'搜索数据表'
pe = ParseExcel(excelPath, sheetName)
for i in pe.getDatasFromSheet():
print(i[0], i[1])
代码解析:
封装了getDatasFromSheet方法,该方法将解析Excel,并将数据存到List中去,后续的测试代码调用的实际上是从List里边获取数据。
四、测试代码
# encoding = utf-8
from selenium import webdriver
import unittest
import time
import traceback
import ddt
import logging
from Util.ParseExcelUtil import ParseExcel
from selenium.common.exceptions import NoSuchElementException # 初始化日志对象
logging.basicConfig(
# 日志级别
level=logging.INFO,
# 时间、代码所在文件名、代码行号、日志级别名字、日志信息
format='%(asctime)s %(filename)s[line: %(lineno)d] %(levelname)s %(message)s',
# 打印日志的时间
datefmt='%a, %d %b %Y %H:%M:%S',
# 日志文件存放的目录及日志文件名
filename='D:\\Programs\\Python\\PythonUnittest\\Reports\\TestResults.TestResults',
# 打开日志的方式
filemode='w'
) excelPath = u"D:\\Programs\\Python\\PythonUnittest\\TestData\\测试数据.xlsx"
sheetName = u"搜索数据表"
excel = ParseExcel(excelPath, sheetName) @ddt.ddt
class TestDataDrivenByExcel(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome() @ddt.data( * excel.getDatasFromSheet())
def test_dataDrivenByExcel(self, data):
testData, expectData = tuple(data)
url = "http://www.baidu.com"
self.driver.get(url)
self.driver.maximize_window()
self.driver.implicitly_wait(10) try:
self.driver.find_element_by_id("kw").send_keys(testData)
self.driver.find_element_by_id("su").click()
time.sleep(3)
self.assertTrue(expectData in self.driver.page_source)
except NoSuchElementException as e:
logging.error(u"查找的页面元素不存在,异常堆栈信息为:" + str(traceback.format_exc()))
except AssertionError as e:
logging.info(u"搜索 ‘%s’,期望 ‘%s’ ,失败" % (testData, expectData))
except Exception as e:
logging.error(u"未知错误,错误信息:" + str(traceback.format_exc()))
else:
logging.info(u"搜索 ‘%s’,期望 ‘%s’ ,通过" % (testData, expectData)) def tearDown(self):
self.driver.quit() if __name__ == "__main__":
unittest.main()
Python&Selenium 数据驱动【unittest+ddt+Excel】的更多相关文章
- python selenium 使用unittest 示例
		python selenium 使用unittest 示例 并等待某个元素示例 from selenium.webdriver.support.ui import WebDriverWait from ... 
- Python 数据驱动 unittest + ddt
		一数据驱动测试的含义: 在百度百科上的解释是: 数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子.利用黑盒测试法进行动态测试时,需要测试软件产 ... 
- python+selenium九:ddt数据驱动
		第一种,测试数据放在Excel里面 test_Login: import unittestimport timeimport ddtimport osfrom selenium import webd ... 
- Python&Selenium 数据驱动测试【unittest+ddt+xml】
		一.摘要 本博文将介绍Python和Selenium做自动化测试时,基于unittest框架,借助ddt模块,使用xml文件作为测试输入. 二.xml文件 保存路径:D:\\Programs\\Pyt ... 
- Python&Selenium 数据驱动【unittest+ddt+mysql】
		一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用mysql数据库为数据源作为测试输入 二.SQL脚本 # encoding crea ... 
- Python&Selenium 数据驱动【unittest+ddt】
		一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt实现数据驱动 二.测试代码 # encoding = utf-8 ""& ... 
- Python&Selenium 数据驱动【unittest+ddt+xml】
		一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用xml文件作为数据文件作为测试输入 二.xml文件 <?xml version ... 
- Python&Selenium 数据驱动【unittest+ddt+json】
		一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用json文件作为数据文件作为测试输入,最后生成html测试报告 二.json文件 [ ... 
- Python&Selenium 数据驱动【unittest+ddt+json+HTMLTestRunner】
		一.摘要 本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用json文件作为数据文件作为测试输入,最后借助著名的HTMLTestRunner.p ... 
随机推荐
- Django 数据库
			一.操作数据库 Django配置连接数据库: 在操作数据库之前,首先先要连接数据库.这里我们以配置MySQL为例来讲解.Django连接数据库,不需要单独的创建一个连接对象.只需要在settings. ... 
- Redis 常用命令学四:集合类型命令
			1.增加和删除命令 127.0.0.1:6379> SADD st a (integer) 1 127.0.0.1:6379> SADD st r f g (integer) 3 127. ... 
- 90%程序员都没有完全答对Cookie和Session的区别
			我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等. ... 
- 4.JVM 实战操作
			1.1 JVM参数 1.1.1 标准参数 -version -help -server -cp 1.1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 -Xint 解释执行 -Xcomp ... 
- Prime Time UVA - 10200(精度处理,素数判定)
			Problem Description Euler is a well-known matematician, and, among many other things, he discovered ... 
- Python列表排序方法reverse、sort、sorted详解
			python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse() ... 
- Centos7.3安装sftp服务和ssh
			Centos安装SFTP 安装SFTP服务 1. 查看openssh版本 ssh -V openssh版本必须大于4.8p1 ... 
- SAS学习笔记29 logistic回归
			变量筛选 当对多个自变量建立logistic回归模型时,并不是每一个自变量对模型都有贡献.通常我们希望所建立的模型将具有统计学意义的自变量都包含在内,而将没有统计学意义的自变量排除在外,即进行变量筛选 ... 
- s5p6818 Overview
			S5P6818: 64bit Octa-Core, High Performance, Advanced 3D Graphics, Full-HD Multimedia Video, A53 Core ... 
- IDEA整合Jenkins界面化管理项目构建
			版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/WALK_MAN_wubiao/articl ... 
