前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台代码实现77: 多接口用例-17

接口测试平台代码实现77: 多接口用例-17

作者头像
我去热饭
发布2022-05-19 09:17:45
4220
发布2022-05-19 09:17:45
举报
文章被收录于专栏:测试开发干货

首先恭喜下Testerhome大会开幕,并且我们社团在testerhome的百团大战中名列前三。

言归正传

到了本节,我们已经完成了基本的大用例执行框架的一部分。已经在那个demo函数中 获取到了步骤step的一切数据。

剩下的代码大概有几部分:

  1. 提取步骤所有请求数据和断言/参数化提取 设置
  2. 检查请求数据中是否有需要进行承接上一个接口返回值参数化的字段,有则替换,无则过。
  3. 进行requests请求,拿到返回值
  4. 对返回值进行参数化提取和断言

其实这里我们要对所有接口的请求参数中,需要获取到之前接口提取的参数的字段的值,进行标记或者说占位准备替换,就好比html中,我们用 {{ apis }} 来表示这里是接口一样。

但是{{ }} 在html中有着标准的规范,规则。而在我们的请求数据中,用此占位则很危险,请求数据中可能会出现各种各样的字符串,很容易被我们的程序识别成占位符。所以我们要用一套新的 不经常出现的/而且易于输入的 符号表示。这里我用的: ##参数名## 来代替。当然要是有其他的也可以。

所以我们第一步,要提取出来所有的数据。

接下来就是检查是否需要替换那些##参数名##了:

首先就是找出所有符合的替换参数,所以用正则再好不过了,我们在开头引入re:

我们要替换的请求数据中的位置基本只有三处:头,体,ulr:

整理出来这三个列表,rlist_url/header/body。

然后我们依次进行替换:

全部忠实替换好,其中的eval就很显然的是 去获取那些变量了。不过目前这里的代码并不是最终版,等我们全写完是要改一点的。

然后我们继续去写调用requests发送请求:

先在顶部引入json和requests

下面代码较长,比较类似接口库请求,大家简单理解下然后本节末尾复制粘贴这个完整函数吧:

注意代码可能会后续更改,我们暂且继续写下一个段落-对返回值进行参数化提取和断言:

我们已经拿到了 我们的提取/断言设置,然后进行公式带入,就可以完成了。

但是我们 现在还没有对提取 / 断言 的几种方式 制定规则。

所以我们回到P_cases.html中,好好想想规则。这里我就直接套用我之前设计过的规则了,也欢迎大家集思广益,想出更合理的规则:

我们先来设计提取返回值路径法:

由用户 按规则 写入 即将被作为参数名的字符串=路径 这种方式提取,多个用换行分隔

例子如:

name=/data/[3]/username

id=/data/[2]/userid

然后用户如何使用呢?在后续接口的请求url/body/header中,用##name## 和 ##id## 来占位。

比如 url 写:/aaa/bb?index=zsd&uname=##name##&uid=##id##

然后经过第一个接口请求后,提取真实结果,并替换就变成来:

/aaa/bb?index=zsd&uname=wangzijia&uid=00100

所以我们先把这个规则,放在多行文本框的中的默认文案里:

后续4个多行文本框均用此方式即可。

然后我们继续另一个提取正则法的规则设置:

如上图,我们等号右侧采用 左边界(.*?)右边界的方式存储。这样我们代码中实际提取的时候 也方便了很多。

好了,本节到此结束。代码已上到github大家可以去复制粘贴

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档