记录python接口自动化测试--把测试结果写进excel文件(第九目)
python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。而xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。(参考博客:https://www.cnblogs.com/liuyang92/p/7492336.html)
因为是对已经存在的excel文件(也就是接口测试用例)进行写操作,所以要把测试结果写进excel文件,需要用到xlutils(依赖于xlrd和xlwt)提供复制excel文件内容和修改文件的功能。
1.先看一个demo:
# coding:utf-8 import xlrd
from xlutils.copy import copy # 导入xlutils的copy方法 file = 'E:\InterfaceTest_Framework\excel_json_demo\demo3.xlsx' # 文件路径
data = xlrd.open_workbook(file) # 定义一个excel文件的workbook对象
print('data的类型为:', type(data))
data_copy = copy(data) # 获取data的copy对象
print('data的copy对象类型为:', type(data_copy))
sheet_copy = data_copy.get_sheet(0) # 从data_copy对象中获取第一个sheet对象 sheet_copy.write(1, 11, '测试写入内容') # 向sheet的某个单元格写入值
data_copy.save(file) # 写入完成后保存data的copy对象
下面是excel文件运行前后对比图,可以看到在保留原文件内容不变的情况下,写入了新的值



2.接下来,把向excel中写入数据的操作封装起来
在之前的操作excel文件的类中(handle_excel.py)加一个写入数据的方法:
# 向某个单元格写入数据
def write_value(self, row, col, value):
data = xlrd.open_workbook(self.file) # 打开文件
data_copy = copy(data) # 复制原文件
sheet = data_copy.get_sheet(0) # 取得复制文件的sheet对象
sheet.write(row, col, value) # 在某一单元格写入value
data_copy.save(self.file) # 保存文件
主函数调整:
# coding:utf-8 from base.run_method import RunMain
from util.handle_excel import *
from util.common import CommonUtil
import json class RunTestCase:
def __init__(self):
self.Runmain = RunMain() # 实例化调用get/post请求对象
self.data = HandleExcel() # 实例化操作excel文件对象
self.common = CommonUtil() # 实例化判断实际结果是否与预期结果一致 def go_run(self):
rows_count = self.data.get_rows() # 获取excel行数
for i in range(1,rows_count): # 利用行数进行迭代处理每个接口
url = self.data.get_value(i, get_url()) # 循环获取url的值
# print(url)
method = self.data.get_value(i, get_method()) # 循环获取method的值
data = json.loads(self.data.get_value(i, get_params())) # 循环获取请求参数,并将得到的数据反序列化
expect = self.data.get_value(i, get_expectvalue()) # 循环获取期望输出
# print(data)
is_run = self.data.get_value(i, get_priority()) # 获取是否运行,即判断excel中priority是不是"H"
if is_run == 'H':
res = self.Runmain.run_main(url, method, data) # 调用get/post主函数
if expect in res:
print('测试通过')
self.data.write_value(i, get_resultvalue(), 'pass') # 调用写入数据方法,将实际结果写进excel
else:
print('测试失败')
self.data.write_value(i, get_resultvalue(), 'fail') if __name__ == '__main__':
run = RunTestCase()
run.go_run()
运行结果对比:

记录python接口自动化测试--把测试结果写进excel文件(第九目)的更多相关文章
- 记录python接口自动化测试--简单总结一下学习过程(第十目)
至此,从excel文件中循环读取接口到把测试结果写进excel,一个简易的接口自动化测试框架就完成了.大概花了1周的时间,利用下班和周末的时间来理顺思路.编写调试代码,当然现在也还有很多不足,例如没有 ...
- 记录python接口自动化测试--主函数(第六目)
把操作excel的方法封装好后,就可以用准备好的接口用例来循环遍历了 我的接口测试用例如下 主函数代码: run_handle_excel.py# coding:utf-8 from base.run ...
- 记录python接口自动化测试--利用unittest生成测试报告(第四目)
前面介绍了是用unittest管理测试用例,这次看看如何生成html格式的测试报告 生成html格式的测试报告需要用到 HTMLTestRunner,在网上下载了一个HTMLTestRunner.py ...
- 记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)
在第六目把主函数写好了,先来运行一下主函数 从截图中可以看到,请求参数打印出来了,和excel中填写的一致 但是每个接口的返回值却都是400,提示参数没有传进去,开始不知道是什么原因(因为excel中 ...
- 记录python接口自动化测试--根据excel中的期望输出是否存在请求返回的响应来判断用例是否执行成功(第八目)
1.首先在excel中的expectValue列填好预期结果值 这里判断接口成功的依据是预期结果值是否存在于接口返回的数据中. 首先,要知道在之前封装的get/post请求方法中返回的是‘str’,也 ...
- 记录python接口自动化测试--把操作excel文件的方法封装起来(第五目)
前面补充了如何来操作excel文件,这次把如何获取excel文件的sheet对象.行数.单元格数据的方法进行封装,方便后面调用 handle_excel.py# coding:utf-8 import ...
- Python接口自动化测试框架: pytest+allure+jsonpath+requests+excel实现的接口自动化测试框架(学习成果)
废话 最近在自己学习接口自动化测试,这里也算是完成一个小的成果,欢迎大家交流指出不合适的地方,源码在文末 问题 整体代码结构优化未实现,导致最终测试时间变长,其他工具单接口测试只需要39ms,该框架中 ...
- 记录python接口自动化测试--requests使用和基本方法封装(第一目)
之前学习了使用jmeter+ant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对"接口"以及"接口测试"有了一个基础了解,最近找了一些用pyt ...
- 记录python接口自动化测试--unittest框架基本应用(第二目)
在第一目里写了几个简单demo,并把调用get和post请求的方法封装到了一个类里,这次结合python自带的unittest框架,用之前封装的方法来写一个接口测试demo 1.unittest简单用 ...
随机推荐
- 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录
1楼留头头大神:http://www.cnblogs.com/toutou/p/4899388.html v阅读目录 v写在前面 v简单工厂模式 v工厂方法模式 v抽象工厂模式 v博客总结 v博客 ...
- Linux 使用 github 常用命令
Linux 使用 github 常用命令 今天整理一下常用的 github 命令,自己只是一个编程小白,有些地方可能做的不是很好,仅仅用作自己的学习使用. 创建一个文件夹用于存放github仓库 m ...
- Linux和windows之间使用scp无密码传输文件,脚本自动化
1.环境 windows2008 R2 和rhel 6.5 2.需求 通过在windows上指定计划任务,自动完成从Linux系统上备份文件到windows 3.工具 win: SSH Secure ...
- 简单的MVC与SQL Server Express LocalDB
M模式: 类,表示数据的应用程序和使用验证逻辑以强制实施针对这些数据的业务规则. V视图: 应用程序使用动态生成 HTML 响应的模板文件. C控制器: 处理传入的浏览器请求的类中检索模型数据,然后指 ...
- 从输入URL到页面显示发生了什么
阅读目录 1.输入地址 2.浏览器查找域名的 IP 地址 3.浏览器向 web 服务器发送一个 HTTP 请求 4.服务器的永久重定向响应 5.浏览器跟踪重定向地址 6.服务器处理请求 7.服务器返回 ...
- Jordan 块的几何
设 $V$ 是复数域 $\mathbb{C}$ 上的 $n$ 维线性空间, $\varphi$ 是 $V$ 上的线性变换, $A\in M_n(\mathbb{C})$ 是 $\varphi$ 在某组 ...
- Actions对Element的一些操作解析
针对Chrome浏览器: 在自动化测试的编写中如果报出Element is not visible to click at xxxx point时,我会使用: new Actions(WebDrive ...
- What is the difference between visibility:hidden and display:none?
What is the difference between visibility:hidden and display:none? 答案1 display:none means that the t ...
- 【安装】Matlab7.0简介及安装
一.简介 Matlab下载官方版是美国MathWorks公司出品的商业数学软件,Matlab7.0下载官方版用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MAT ...
- (转)ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks
ResNet, AlexNet, VGG, Inception: Understanding various architectures of Convolutional Networks by KO ...