lf知识星球banner

API接口自动化示例

2019-12-10 17:26:40
陈铁跃
38337
最后编辑:陈铁跃 于 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][]中填写匹配到字符串的序号,拿到截取的值以后,给预期结果中的关键字进行判断,是匹配,还是赋值都可以。








    评论列表
    Amrrr 2023-06-08 23:09:46 回复
    您好,客户端状态正常,但用用例调试的时候,客户端选项里什么都没有是怎么回事呢
    郭林 2021-10-30 14:09:32 回复
    客户端IP写上去后提示状态异常是什么原因
    Seagull 2021-11-01 17:13:35 回复
    客户端还要配置服务端的相关信息
    段志宏 2021-08-17 13:14:33 回复
    xml格式的报文不可以测试吗
    Seagull 2021-11-01 17:16:34 回复
    可以的
    2021-07-20 17:48:19 回复
    接口的请求的参数是放在用例管理的参数还是协议模板参数啊
    tester001 2021-03-17 17:58:53 回复
    $A=value全局变量这样用,在同一调度任务中没生效,如何解决?
    linjl 2021-03-10 09:30:53 回复
    如何使用getwindow指令进行窗口的操作呢,比如在浏览器中,按钮操作调用了打开窗口,进行选择文件,这种操作如何进行自动化用例编写呢
    lcj 2020-10-29 14:51:56 回复
    请问一下,如果要同时匹配多个结果,怎么写啊。。。比如需要匹配结果响应中有 000 和 成功 同时存在时
    zhao-mm 2020-09-24 10:37:36 回复
    为什么调试窗口不显示日志
    Seagull 2020-10-09 11:07:59 回复
    应该是乱码导致的
    olive 2021-01-14 16:45:15 回复
    调试窗口这边的乱码怎样解决啊
    173zzy 2021-09-09 11:00:07 回复
    您好,客户端服务端配置文件netty解码格式都是UTF_8,为啥调试显示的日志信息还是出不来
    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 回复
    看下网络有没有问题
    1/2
    发表评论
    评论通过审核后显示。
    付费知识圈