无需编写代码,基于 API 开发管理工具 eoLinker 完成 API 测试流程业务 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vocalman
V2EX    程序员

无需编写代码,基于 API 开发管理工具 eoLinker 完成 API 测试流程业务

  •  
  •   vocalman 2018-09-14 17:18:57 +08:00 1231 次点击
    这是一个创建于 2591 天前的主题,其中的信息可能已经有所发展或是发生改变。

    引言

    作为开发人员,有时需要协助市场部门进行开发,比如在市场推广中,经常通过给用户赠送优惠券来提高复购率。这篇文章,将介绍如何使用接口管理工具 eoLinker 的自动化测试[UI 模式] 构建此业务逻辑。

    关键词

    市场推广、定时任务、数据关联

    接下来,我们以给用户赠送优惠券为例进行流程的搭建。搭建完整个流程后,你会发现不再需要编写复杂的代码了,只需简单几步就能完成。

    目录

    1、流程设计 2、流程调试 3、定时任务 4、使用 tips 5、小结

    1、流程设计

    我们先确定完成该业务逻辑需要用到的接口:

    接口 1登录:最基本的登录接口,市场推广人员登录自己的账号。 接口 2获取用户列表:在发放优惠券之前,先确定用户名单。 接口 3获取优惠券列表:获取各种类型的优惠券。 接口 4给用户赠送优惠券:以接口 2 和接口 3 的返回结果作为请求参数。 接口 5退出登录:完成业务流程后,退出登录。

    按照上面的流程设计,我新建了下图中的 5 个接口,同时调整好正确的测试顺序。

    图片 1.png

    图片 2.png

    接口 1 的返回参数statusCode,我设置了 4 个状态码,刚好对应 4 种可能的情况,如果有更多可能性,可以继续补充。

    若 API 文档已建立了相关的接口,在自动化普通 UI 模式下可以批量添加已有接口。

    当我们编辑好接口,完成好对数据关联的设置,这时候只需回到自动化测试页面,点击“ 测试全部 ”就可以完成测试了。如何进行数据关联的内容将会在下文介绍。 下图可以看到,我们完成正确的设置后,得到了成功的测试结果。

    图片 3.png

    2、流程调试

    在流程测试中,上一个接口的返回参数可能会是下一个接口的请求参数。这时候就需要用上关联数据。比如给用户发送优惠券,就需要传递上一个接口返回的优惠券 couponID。下面通过两个步骤来进行数据关联:

    • 第一步:获取优惠券列表的返回值 我们有 3 种不同面值的优惠券:满 100 减 10、满 1000 减 100 和满 10000 减 1000,对应着不同 couponID。

    图片 4.png

    • 第二步:填写接口 4 的请求参数 接口 4 的请求参数就是接口 2 和接口 3 的返回参数。

    图片 5.png

    点击后面“关联”按钮,会出现以下弹框,选择要关联的数据,比如下图选中了 couponID。 图片 6.png 图片 7.png

    生成绑定值。如图中 userID 和 couponID 都生成了绑定值。 <response[39677].userList.userID>参数值的格式是 eoLinker 规定的关联参数形式,使用单书名号包裹的返回值 response [接口的关联 ID (可在单例列表进行查看)].子参数。 如果返回值的子参数是数组,那就需要加元素序号,第一个元素为 0,以此类推。如 couponList[0]。 关联参数可以在请求头部、请求体( form-data、raw ),REST 参数中使用。 在调试中,测试报告也是十分重要的。 使用普通 UI 自动化模式,测试完毕后,会生成详细的测试报告,通过查看详情就能看到完整的测试报告。如果测试失败了,通过测试报告也能及时进行修正。 图片 8.png

    3、定时任务

    在本文的业务流程中,我们可以通过定时测试任务,让整个流程自动执行。 首先在自动化测试的二级菜单--定时测试任务中,添加该任务。添加任务之前需要添加分组,比如这里新建了“赠送用户优惠券”的分组。

    图片 9.png

    这里需要填写名称:"给用户赠送优惠券",时间设置“永久有效”,周期为“一周”,日期选择“周一到周五的早 10 点和晚六点”,按照这样的规则发送优惠券。 在用例列表中选择之前设置好的用例:优惠券

    图片 10.png

    确认测试环境,填写我的邮箱,再选择通知类型。这样设置后,以后我们只需通过查看邮件,就可以获取接口测试的所有情况,确保接口正常运行。

    图片 11.png 图片 12.png

    如上图,每次的测试历史可以在测试任务列表下载,十分方便。

    4、使用 tips

    请求参数处理

    有些参数需要在发送前进行加密,例如密码等。在 eoLinker 中,通过代码注入功能就可以对参数 userPassword 加密,比如 对于接口 1,我使用 eoLinker 内置的加密方法对请求参数 userPassword进行 MD5 和 SHA1 加密。 图片 13.png 图片 14.png

    在代码注入功能的右侧导航栏,eoLinker 目前内置了包括 MD5 在内的 3 种加密方式,点击就可以直接调用了。如果想用其他的加密方式,只需要了解一些简单语法你就可以使用 Javascript、Jquery 代码进行加密。当然也可以在发送前对请求参数做其他处理。

    返回参数匹配

    除了对请求参数进行处理外,对返回的参数也需要进行校验,在这个业务中,我们只选择特定的用户发送相应优惠券,这就需要通过校验来对返回的参数进行匹配。

    对于接口 2,我需要先对返回值进行判断,再决定自动化测试流程是否继续,eoLinker 校验失败时默认停止测试。如果不想停在这里的话,可以勾选下方的“ 该用例校验位失败时,依然执行下一个用例 ”。这样即便失败也会继续测试下去。

    下面说一下校验规则

    校验规则: statusCode 为字符串 000000 列表中的 couponID 是 1,couponName 为满 100 减 10

    eoLinker 填写的校验规则: 图片 15.png 填写匹配规则的过程中,主要为参数选择正确的类型( string、int 等)以及层级关系。比如在这里参数 couponList 和 couponID 就是不同的类型,而 couponID 是 couponList 的子字段。

    5、小结

    最后,完成任务退出登录,这样一个完整的业务流程就完成了。通过自动化测试的 UI 模式进行业务流程测试,既不用编写代码,又能通过测试报告及时修正错误,相比传统的测试方式极大地提高了工作效率。

    eoLinker,高效、专业、规范,让接口管理更加简单!

    更多更新内容请前往 eoLinker 微信公众号,本文转自 eoLinker 公众号。

    立即体验:https://www.eolinker.com

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     892 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 21:39 PVG 05:39 LAX 14:39 JFK 17:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86