阅读 82

Python openpyxl +requests 接口测试实操

前言

Python 是一个强大易学的语言。当前需要对URL进行请求时,我们可以使用requests库来实现Post或者Get请求。当需要对Excel表格数据进行访问编辑时,我们可以使用openpyxl库来实现Excel工作簿操作。

那当我们接收到项目组紧急通知需要一天内对几百上千个接口测试时, RD直接扔一个Excel接口文档过来,束手无策了?

这不,前面我们学习到的模块这些模块知识派上用场了。

哦耶,那我们来简单的分析一下实现需求,主要三个步骤要实现如下

  • 读取接口Excel文档数据

  • 对每个接口进行请求

  • 接口数据回写到Excel表格Result列

image.png

OK,需求我们分析玩来,接下来看看具体实操吧

1. openpyxl读取Excel数据

假设,RD给我们的接口文档里面的接口信息如图所示:

image.png

如何使用openpyxl来读取如上表格的数据,步骤有如下几步:

  • openpyxl.load_workbook()加载Excel文档

  • 指定测试的表格

  • 获取最大行数

  • 使用for循环获取每行指定列的数据用字典形式储存

  • 利用列表把获取每行字典数据添加起来

def get_data(filename,sheet):     wb = load_workbook(filename)     sheet = wb[sheet]     cases = sheet.max_row     list_case = []     for case in range(2,cases+1):         dict_case=dict(id = sheet.cell(row=case,column=1).value,         ip = sheet.cell(row=case,column=3).value,         api = sheet.cell(row=case,column=4).value,         data = sheet.cell(row=case,column=5).value,         expect_code = sheet.cell(row=case,column=6).value)         list_case.append(dict_case)     return list_case 复制代码

2. requests请求接口

我们观察到的接口文档表里,所以的接口都是Post请求的,因此可以使用requests.post()方法来实现。

  • URL:主要由IP、端口号、API路径组成

  • data: URL请求body内容,通常都是Json格式的

  • 请求的返回数据:主要形式也是Json格式

  • 返回状态码:成功-200,请求端异常-4XX,服务端异常-5XX

def do_post(ip,api,data):     headers = {"Content-Type": "application/json"}     url = "http://" + ip + ":3333" + api     response = requests.post(url,headers = headers,data = json.dumps(data))     result = response.json()     return result 复制代码

3. 断言回写数据

我们实现了对Excel表格数据读取和请求Post方法两步了,接下来我们实现最后一步,对接口进行测试断言判断后,把结果写入到Excel表格中。

  • 调用get_data()指定接口文档如testapi.xlsx和表格

  • 使用for循环读取每一行id、ip、api、data数据

  • data 数据从Excel表格是字符串,需要调用eval()转换成json格式

  • 使用if判断返回码是否正常,对rel_result赋值结果

  • 重新加载接口文档,把rel_result结果写入到result栏

import openpyxl from Test import data_post cases = data_post.get_data("testapi.xlsx", "Sheet2") for case in cases:     id = case.get("id")     api = case.get("api")     data = case.get("data")     data = eval(data)     print(data)     ip = case.get("ip")     expect = case.get("expect")     result = data_post.do_post(ip, api, data)     if result["code"] == expect["code"]:         print("success")         real_result = "success"     else:         print("fail")         real_result = "fail"     wb = openpyxl.load_workbook("testapi.xlsx")     sheet = wb['Sheet2']     sheet.cell(id + 1, 7).value = real_result     wb.save("testapi.xlsx") 复制代码

总结

本期,我们对openpyxl与request进行结合使用,简单实现对接口自动化测试进行实现。

如何更好地在实际工作使用,需要我们平时对其进行大量的练习。


作者:盆友圈的小可爱
链接:https://juejin.cn/post/7066438841803997192

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐