Python openpyxl +requests 接口测试实操

前言

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

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

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

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

  • 读取接口Excel文档数据
  • 对每个接口进行请求
  • 接口数据回写到Excel表格Result列

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

1. openpyxl读取Excel数据

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

如何使用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进行结合使用,简单实现对接口自动化测试进行实现。

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

以上是本期内容,欢迎大佬们点赞评论,下期见~~~


绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值