lf知识星球banner

API接口自动化示例

2019-12-10 17:26:40
陈铁跃
1057
最后编辑:陈铁跃 于 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]中的参数与JAVASimpleDateFormat的格式用法是一致的,里面的间隔符( 比如 - : )可以删除或是用其他任意字符替换。如果格式不正确的话,会使用默认格式进行引用。

下面做下简单的说明: 

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

备注:

@loginresponeJSON字符串 

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








    评论列表
    su 2020-01-18 16:16:32 回复
    请问用什么方法可以去到头响应头cookie的值并存起来呢?
    Seagull 2020-01-19 09:19:54 回复
    协议模板中,把返回头域勾选,返回值里面会有头域相关信息,然后截取出来即可
    1/1
    发表评论
    评论通过审核后显示。
    搞事bannar