UI设计教程
API接口自动化示例
2020-11-05 98 0
简介 API接口自动化示例
API接口自动化示例
2019-12-10 17:26:40
陈铁跃
9765
最后编辑:陈铁跃 于 2019-12-16 10:00:55
API接口自动化示例 本章节内容:应用LUCKYFRAME来编写API测试用例的过程。 进入系统管理--->项目管理--->点击添加,填写“项目名称”、“归属部门”、“项目标识”,点击“确定”,如图下图。备注:归属部门在系统管理--->部门管理模块设置。 说明:协议模板是什么?是构造接口请求必须遵守的基础约定;不理解先放一边,重点是要知道一个接口对应一个协议模板。 进入测试管理--->协议模板--->点击添加,选择项目名称,模板名称填写接口名称,消息头域(一般访问接口的时候需要先登录,那么此处就需要填写,格式看示例要求)。其他选项可以先默认,点确定,完成一个协议模板的添加。如下图。 勾选模板类型,点击“模板参数”,如下图。 RAW标签页面,填写格式遵循JSON格式请求,如下图。(此处不懂JSON格式需要去百度一下)。 FORM标签页面,各种参数类型填写格式,如下图。 String:字符串 Json对象:{ "endDate": "string", "startDate": "string" } JsonNARR:[{ "endDate": "string", "startDate": "string" }] File对象:D:\F盘\01tlw\04接口测试\1.jpg (即LuckyFrameClient本地磁盘上传文件的路径) Number对象:1.2.3…… Boolean对象:true or false 注意:填写RAW标签和FROM标签,只填写其中一种。 进入测试管理--->用例模块--->选中项目名称,点击新增,填写父模块、模块名字、显示顺序、备注。点击“确定”,完成模块的添加,如下图: 进入测试管理--->用例管理--->点击添加,如下图: 选择项目名称、用例模块,填写用例名称、用例类型选择“HTTP接口”,点击“确定”如下图: 勾选用例名称,点击“用例步骤”,如下图: 用例步骤页面,如下图: 4.1步骤编辑页面基本使用方法 4.1.1包|定位路径 填写接口的地址,如:http://10.0.7.105/validation/rest/quality 此处单击可以选择系统内置的一种方法名,如:HttpClientGet 填写接口参数,传入多个参数用|分隔,参数名称和参数值用#分隔,如:id#1|name#test 填写该行用例步骤执行后的等待时间;等待1秒格式,如:1#wait 此处填写接口预期的返回值;模糊匹配返回值中是否有200,如:%=200 默认http接口 此处单击可以选择已添加过的协议模板,如:新增质检模型接口 点击调试按钮,进入用例调试页面,如下图 注意调试时要先进入系统管理--->客户端管理--->点击添加客户端,且状态正常,如下图: 客户端添加完成后,点击“调试”按钮,进入用例调试页面,如下图: 根据用例调试页面的日志,可以查看用例的执行结果是否正常,到此完成接口用例编写的介绍。 4.2步骤编辑页面进阶使用方法 将用例里面前面步骤的执行结果,传递至后续步骤的包路径、方法、参数、预期结果中当成参数; 赋值局部变量:$=value 引用:@value 用例里面前面步骤的执行结果,传递至后续步骤的包路径、方法、参数、预期结果中当成参数; 当您需要引用项目中定义的公共参数时,直接使用 @变量名 引用即可。 赋值全局变量: $A= value 赋值局部变量 $=value,作用域只在单条用例内的步骤间进行传递,而关键字 $A=value 支持作用域扩展到整个任务执行的生命周期内。只要是同一个调度任务内,都可以对此变量进行引用以及传递。 注意: 当遇到参数值里面本身带了字符@的,请使用@@来转义。比如参数值是一个邮箱地址XX@qq.com,那么这时候你应该写成XX@@qq.com. 当遇到参数值里面本身带了字符 | 的,请使用 \\| 来转义。比如有一个参加值是:tfwfsf|ysggfw|ggsvs ,那么这时候你应该把这个参数写成这样: tfwfsf\\|ysggfw\\|ggsvs 示例: 将用例里面 【方法|操作】执行的结果,与 【期望的结果】字段里面的字符串进行精确匹配; 直接在预期结果里面填写需要匹配的字符串即可。 将用例里面 【方法|操作】执行的结果,与 【期望的结果】字段里面的字符串进行模糊匹配; 模糊匹配: %=value 示例: 将用例里面 【方法|操作】执行的结果,与 【期望的结果】字段里面的字符串通过正则表达式进行匹配; 模糊匹配: ~=value 正则表达式写法,请自行百度,不再累述。针对多个结果模糊匹配,非包含字符匹配都可以用此种方式,非常灵活。 步骤执行完成后,等待 N 秒,在 【步骤动作】中加上“10#Wait” 10 表示 10 秒; 示例: 目前支持两种模式,一种是随机数字,一种是获取当前时间的指定格式 随机数字引用关键字参数:@{random[开始数字][结束数字]}比如你想随机一个指定区间的手机号码,如:137XXXX8888 可以在引用参数的时候这样写:137@{random[1000][9999]}8888 获取当前时间指定格式引用关键字参数:@{timenow[日期时间格式]}比如:想生成这样一个字符串 现在时间是:2019-01-25 11:13:36可以在引用参数的时候这样写:现在时间是:@{timenow[yyyy-MM-dd HH:mm:ss]}其中[yyyy-MM-dd HH:mm:ss]中的参数与JAVA类SimpleDateFormat的格式用法是一致的,里面的间隔符( 比如 - ,: )可以删除或是用其他任意字符替换。如果格式不正确的话,会使用默认格式进行引用。 下面做下简单的说明: yyyy 代表年份 MM 代表月份 dd 代表日期 HH 代表24小时制 hh代表12小时制 mm 代表分钟 ss 代表秒 包路径:luckyclient.driven.SubString 方法名:getJsonValue 参数:@loginrespone|accessToken|1 备注: @loginrespone:JSON字符串 accessToken:JSON字符串中需要获取值的key 1:key值索引(序号) 4.2.7.2 步骤动作新支持的关键字。 key[序号]#getJV 获取测试结果中JSON对象中,指定KEY的值,比如测试结果返回:{["name":"张三","age":"18"]["name":"李四","age":"17"]} ,如果想获取李四的年纪 在步骤动作中需要这样写 age[2]#getJV 获取到以后,会拿到17这个值,给预期结果中的关键字进行判断,是匹配,还是赋值都可以。 [startstr][endstr]#subCentreStr 截取测试结果中指定开始字符以及结束字符的中间字符串,比如测试结果返回:{["name":"张三","age":"18"]["name":"李四","age":"17"]} ,如果想获取李四的年纪 在步骤动作中需要这样写 [age":"]["]}]#subCentreStr 获取到以后,会拿到17这个值,给预期结果中的关键字进行判断,是匹配,还是赋值都可以。 [startnum][endnum]#subCentreNum 截取测试结果中指定开始位置以及结束位置的中间字符串,比如测试结果返回:{["name":"张三","age":"18"]["name":"李四","age":"17"]} ,如果想获取李四的年纪 在步骤动作中需要这样写 [45][46]#subCentreNum 获取到以后,会拿到17这个值,给预期结果中的关键字进行判断,是匹配,还是赋值都可以。 [rgex][index]#subStrRgex 通过正则截取测试结果中的字符串,[rgex]在[]中填写正则表达式,[index]在[]中填写匹配到字符串的序号,拿到截取的值以后,给预期结果中的关键字进行判断,是匹配,还是赋值都可以。1 、添加项目名称和归属部门
2、添加协议模板
3、添加用例模块
4、用例管理
4.1.2方法|操作
4.1.3参数
4.1.4步骤动作
4.1.5预期结果
4.1.6类型
4.1.7扩展字段
4.1.8 示例
4.1.9调试
4.2.1 参数引用以及传递
4.2.2 预期结果精确匹配
4.2.3 预期结果模糊匹配
4.2.4 正则方式结果模糊匹配
4.2.5 步骤间添加休眠时间
4.2.6随机参数值引用
4.2.7接获取JSON串中KEY值的方法
4.2.7.1 客户端中内置驱动增加直接获取JSON串中KEY值的方法

