lf知识星球banner

API接口自动化示例

2019-12-10 17:26:40
陈铁跃
9606
最后编辑:陈铁跃 于 2019-12-16 10:00:55

API接口自动化示例



本章节内容:应用LUCKYFRAME来编写API测试用例的过程。

1 、添加项目名称和归属部门

进入系统管理 ---> 项目管理 ---> 点击添加,填写“项目名称”、“归属部门”、“项目标识”,点击“确定”,如图下图。备注:归属部门在系统管理 ---> 部门管理模块设置。

2、添加协议模板

说明:协议模板是什么?是构造接口请求必须遵守的基础约定;不理解先放一边,重点是要知道一个接口对应一个协议模板。

进入测试管理 ---> 协议模板 ---> 点击添加,选择项目名称,模板名称填写接口名称,消息头域(一般访问接口的时候需要先登录,那么此处就需要填写,格式看示例要求)。其他选项可以先默认,点确定,完成一个协议模板的添加。如下图。

勾选模板类型,点击“模板参数”,如下图。

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 标签,只填写其中一种。

3、添加用例模块

进入测试管理 ---> 用例模块 ---> 选中项目名称,点击新增,填写父模块、模块名字、显示顺序、备注。点击“确定”,完成模块的添加,如下图:

4、用例管理

进入测试管理 ---> 用例管理 ---> 点击添加,如下图:

选择项目名称、用例模块,填写用例名称、用例类型选择“ HTTP 接口”,点击“确定”如下图:

勾选用例名称,点击“用例步骤”,如下图:

用例步骤页面,如下图:

4.1 步骤编辑页面基本使用方法

4.1.1 包|定位路径

填写接口的地址,如: http://10.0.7.105/ validation/rest/quality

4.1.2 方法 | 操作

此处单击可以选择系统内置的一种 方法名,如: HttpClientGet

4.1.3 参数

填写接口参数,传入多个参数用 | 分隔,参数名称和参数值用 # 分隔,如: id#1|name#test

4.1.4 步骤动作

填写该行用例步骤执行后的等待时间;等待 1 秒格式,如: 1#wait

4.1.5 预期结果

此处填写接口预期的返回值;模糊匹配返回值中是否有 200 ,如: %=200

4.1.6 类型

默认 http 接口

4.1.7 扩展字段

此处单击可以选择已添加过的协议模板,如:新增质检模型接口

4.1.8   示例

4.1.9 调试

点击调试按钮,进入用例调试页面,如下图

注意调试时要先进入系统管理 ---> 客户端管理 ---> 点击添加客户端,且状态正常,如下图:

客户端添加完成后,点击“调试”按钮,进入用例调试页面,如下图:

根据用例调试页面的日志,可以查看用例的执行结果是否正常,到此完成接口用例编写的介绍。


4.2 步骤编辑页面进阶使用方法

4.2.1   参数引用以及传递

将用例里面前面步骤的执行结果,传递至后续步骤的包路径、方法、参数、预期结果中当成参数;  

赋值局部变量: $=value 

引用: @value   用例里面前面步骤的执行结果,传递至后续步骤的包路径、方法、参数、预期结果中当成参数; 当您需要引用项目中定义的公共参数时,直接使用   @ 变量名   引用即可。

赋值全局变量:  $A= value 

赋值局部变量 $=value ,作用域只在单条用例内的步骤间进行传递,而关键字 $A=value 支持作用域扩展到整个任务执行的生命周期内。只要是同一个调度任务内,都可以对此变量进行引用以及传递。

注意:

  • 当遇到参数值里面本身带了字符 @ 的,请使用 @@ 来转义。比如参数值是一个邮箱地址 XX@qq.com, 那么这时候你应该写成 XX@@qq.com.
  • 当遇到参数值里面本身带了字符 | 的,请使用 \\| 来转义。比如有一个参加值是: tfwfsf|ysggfw|ggsvs  ,那么这时候你应该把这个参数写成这样:   tfwfsf\\|ysggfw\\|ggsvs

示例:

4.2.2   预期结果精确匹配

将用例里面   【方法 | 操作】 执行的结果,与   【期望的结果】 字段里面的字符串进行精确匹配;  

直接在预期结果里面填写需要匹配的字符串即可。

4.2.3   预期结果模糊匹配

将用例里面   【方法 | 操作】 执行的结果,与   【期望的结果】 字段里面的字符串进行模糊匹配;  

模糊匹配 :  %=value

示例:

4.2.4   正则方式结果模糊匹配

将用例里面   【方法 | 操作】 执行的结果,与   【期望的结果】 字段里面的字符串通过正则表达式进行匹配;  

模糊匹配 :  ~=value

正则表达式写法,请自行百度,不再累述。针对多个结果模糊匹配,非包含字符匹配都可以用此种方式,非常灵活。

4.2.5   步骤间添加休眠时间

步骤执行完成后,等待 N 秒,在   【步骤动作】 中加上 “10#Wait” 10 表示 10 秒;  

示例:

4.2.6 随机参数值引用

目前支持两种模式,一种是随机数字,一种是获取当前时间的指定格式  

随机数字引用关键字参数: @{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 代表秒

4.2.7 接获取 JSON 串中 KEY 值的方法  

4.2.7.1      客户端中内置驱动增加直接获取 JSON 串中 KEY 值的方法  

包路径: 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] [] 中填写匹配到字符串的序号,拿到截取的值以后,给预期结果中的关键字进行判断,是匹配,还是赋值都可以。








评论列表
zhao-mm 2020-09-24 10:37:36 回复
为什么调试窗口不显示日志
Seagull 2020-10-09 11:07:59 回复
应该是乱码导致的
zhao-mm 2020-09-24 09:26:26 回复
javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair

报这个错是什么原因?
小白 2020-08-24 14:13:54 回复
本人小白,公司给用的luckyframe,使用自己的IP进行调试时,一直报 测试结果:使用HttpClient发送get请求出现异常,请检查!
是什么原因呢
Seagull 2020-09-08 19:55:15 回复
看下网络有没有问题
魏世雄 2020-06-19 14:00:24 回复
你好,请问下,这边怎么往header里面添加cookie?
hongshu 2020-05-28 13:38:29 回复
我在当前用例里面调用另外一条用例使用runcase这个方法,另外一条用例步骤产生的$A全局变量,是不是传不到当前用例呢?
薏苡一 2020-04-14 16:16:32 回复
怎么获取返回结果里面同一个key的所有值?比如{["name":"张三","age":"18"]["name":"李四","age":"17"]} 获取所有的age,最终返回 18,17这种
Seagull 2020-04-16 13:49:23 回复
自己写驱动去获取
ada 2020-03-28 13:02:25 回复
请问响应header中的一些信息,需要处理之后(比如加密)传给下一个接口怎么弄呢
Seagull 2020-03-30 19:38:00 回复
使用驱动的方式,对字符串进行加密处理后,再传递即可
su 2020-01-18 16:16:32 回复
请问用什么方法可以去到头响应头cookie的值并存起来呢?
Seagull 2020-01-19 09:19:54 回复
协议模板中,把返回头域勾选,返回值里面会有头域相关信息,然后截取出来即可
axiaocong 2020-04-16 10:49:24 回复
取出来后怎么参数化引用到请求头里呢,希望能给个例子,谢谢
Seagull 2020-04-16 13:48:12 回复
官网搜索下参数,手册里面http://www.luckyframe.cn/dynamic/lfzsxq-75.html也有写怎么引用到请求头里面
1/1
发表评论
评论通过审核后显示。
付费知识圈