Apikit 自学日记:添加测试步骤-脚本步骤

news/2024/7/5 10:26:31

脚本步骤

在流程测试用例界面,进入用例管理,点击 添加脚本[Javascript] 按钮:

 

进入编辑用例页面,点击 API测试 新建一个 API 请求。

 

API 自动化测试平台为代码模式的测试用例设计了一套简单的API信息模板,因此只需要极少的代码即可完整地描述API信息,模板中各个字段含义如下:

字段名描述
nameAPI名称,用户在测试报告中标注API
urlAPI地址
method请求方式,支持post、get、delete、patch…等主流HTTP请求方式
headers请求头部,字段值为对象类型
bodyType请求参数的类型,支持form-data、json、xml、binary(二进制或文件类型)
body请求参数,会根据bodyType自动进行自动处理,比如当bodyType为json或者xml时,如果body是对象,会自动将对象转换为json或者xml的字符串
timelimit超时时间,默认300ms
redirect是否允许重定向,true表示允许,false表示不允许

如下图所示即为一个完整的API请求信息,表示:

请求url:https://www.eolinker.com/

请求方式:POST

请求头部:空

请求参数:form-data类型(默认),name=hello,password=world

超时限制:300毫秒

 

 

API文档中引用API作为测试步骤(API)

进入编辑用例页面,点击 从API文档导入 ,在新的页面中,选择项目、分组以及需要导入的API文档,然后点击保存即可。API 自动化测试平台 通过这种方式将API文档管理与自动化测试关联起来,能够帮助测试人员节省大量的测试时间:

 

设置测试步骤(API)的请求参数

代码模式中的请求参数在一般情况下需要结合请求头部的Content-Type字段来设置请求参数的类型。

在默认不设置请求头部的Content-Type参数的情况下,请求参数的类型为Form-data,此时的请求参数字段params的值为对象类型,表示Form-data里的键值对,比如以下代码中,请求参数为user_name和password:

var api_1={
    "url":"/user/register",
    "name":"用户注册",
    "method":"POST",
    "headers":{},
    "params":{
        "user_name":"jackliu",
        "password":eo.md5("123456")
    },    
    "timelimit":300 
};
//发送测试并将返回结果赋值给result_api_1
//eo.execute(api_name)是固定的方法,用于执行一次测试
var result_api_1=eo.execute(api_1);

如果需要发送Json、XML、Raw等类型的数据,需要设置请求头部的Content-Type字段,以下是发送Json的代码,其他参数类型的代码类似:

var json_params = "{'user_name':'jackliu','password':'"+eo.md5("123456")+"'}"
//设置请求信息
var api_1={
    "url":"/user/register",
    "name":"用户注册",
    "method":"POST",
    "headers":{
        "Contet-Type":"application/json"  //设置Json的请求头部
    },
    "params":json_params,
    "timelimit":300 
};
//发送测试并将返回结果赋值给result_api_1
//eo.execute(api_name)是固定的方法,用于执行一次测试
var result_api_1=eo.execute(api_1);

设置测试步骤(API)之间的数据关联

代码模式中使用变量来传递参数值,以下是使用变量vf_code传递参数的代码,您可以在其中额外添加对vf_code的处理代码:

var api_1={
    "url":"/user/login",
    "name":"用户登录",
    "method":"POST",
    "headers":{},
    "params":{
        "user_name":"jackliu",
        "password":eo.md5("123456")
    },    
    "timelimit":300 
};

var result_api_1=eo.execute(api_1);

//获取用户登录的返回结果(Json格式),并且赋值给vf_code变量
var vf_code = JSON.parse(result_api_1.response)['verify_code'];

//编写代码对vf_code的变量值进行处理
...

var api_2={
    "url":"/user/check_login",
    "name":"校验登录状态",
    "method":"POST",
    "headers":{
    },
    "params":{
        "verify_code":verify_code //将vf_code变量的值传递给verify_code
    },   
    "timelimit":300 
};

var result_api_2=eo.execute(api_2);

设置测试步骤(API)的返回头部(Response Header)校验规则

返回结果中,使用.header表示返回头部。以下是获取返回头部并且判断Content-Type是否等于”text/html; charset=UTF-8”的代码:

var api_1={
    "url":"api.eolinker.com",
    "name":"用户登录",
    "method":"POST",
    "headers":{},
    "params":{
        "user_name":"jackliu",
        "password":eo.md5("123456")
    },    
    "timelimit":300 
};

var result_api_1=eo.execute(api_1);

//判断请求头部的content-type
if(result_api_1.header['content-type']=="text/html; charset=UTF-8")
{
    eo.info("OK!");
}

设置测试步骤(API)的返回内容(Response Body)校验规则

返回结果中,使用.response表示返回内容。返回内容默认是字符串类型,如果返回的数据是Json等格式,需要编写代码进行解析。以下是获取返回内容并且判断是否等于”helloworld”的代码:

//返回内容为字符串
var api_1={
    "url":"api.eolinker.com",
    "name":"用户登录",
    "method":"POST",
    "headers":{},
    "params":{},
    "timelimit":300
};

var result_api_1=eo.execute(api_1);

//返回内容为字符串:helloworld
if(result_api_1.response=="helloworld")
{
    eo.info("OK!");
}


//返回内容为Json
var api_2={
    "url":"api.eolinker.com",
    "name":"用户登录",
    "method":"POST",
    "headers":{},
    "params":{
        "user_name":"jackliu",
        "password":eo.md5("123456")
    },    
    "timelimit":300 
};

var result_api_2=eo.execute(api_1);

//返回内容为Json:{"content":"helloworld"}
if(JSON.parse(result_api_2.response)['content']=="helloworld")
{
    eo.info("OK!");
}

代码模式的测试结果中包含的字段

除了上面提到的.header和.response,返回结果中还包含了以下的内容:

字段描述
header返回头部
response返回内容
time测试时间
codeHTTP状态码

以下是判断测试时间和HTTP状态码的代码:

var api_1={
    "url":"api.eolinker.com",
    "name":"用户登录",
    "method":"POST",
    "headers":{},
    "params":{
        "user_name":"jackliu",
        "password":eo.md5("123456")
    },    
    "timelimit":300 
};

var result_api_1=eo.execute(api_1);

//判断请求的时间是否大于100ms
if(result_api_1.time>100)
{
    eo.info("error!");
}

//判断请求的状态码是否不等于200
if(result_api_1.code!=200)
{
    eo.info("error!");
}


http://lihuaxi.xjx100.cn/news/1316568.html

相关文章

hadoop生态搭建

分布式笔记 1.配置网络,设置静态IP地址 vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTOstatic IPADDR192.168.87.130 NETMASK255.255.255.0 GATEWAY192.168.87.2 DNS1192.168.87.2 提示:init 3 命令行模式 init 5 桌面模式 2.配置…

微信小程序带参数永久有效二维码生成uniapp版本

access_token的值的获取在后端进行,参考代码如下: private static final String getAccessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token"; /*** 从url获取数据库获取access_token* @return*/public String getAccessToken(){List<AccessTokenDto> a…

SSM 整合 Shiro 安全框架【快速入门】

一、搭建ssm工程&#x1f349; 1.创建工程&#x1f95d; 更改web路径 创建所需目录 2.引入依赖&#x1f95d; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"h…

实现公共字段自动填充

实现公共字段自动填充&#xff0c;也就是在插入或者更新的时候为指定字段赋予指定的值&#xff0c;使用它的好处就是可以统一对这些字段进行处理&#xff0c;避免了重复代码。 实现步骤&#xff1a; 1). 自定义注解 AutoFill&#xff0c;用于标识需要进行公共字段自动填充的方…

【网络安全带你练爬虫-100练】第6练:内嵌发包提取数据

目录 一、分析目标&#xff1a; 二、代码实现 目标1&#xff1a;对于捕获的URL内嵌发包 目标2&#xff1a;找到电话和邮箱的位置 目标3&#xff1a;提取电话和邮箱 三、完整代码 四、网络安全小圈子 &#xff08;注&#xff1a;需要带上登录成功后的cookie发包&#xff…

idea支持vue文件-设置对vue的支持

一、idea支持.vue文件 这一步其实就是安装vue.js插件&#xff0c;具体路径为&#xff1a;File ----> Settings ----> Plugins ----> 输入vue&#xff0c;点击搜索结果里的vue.js右边的install按钮&#xff0c;安装成功后重启idea&#xff0c;这样idea就能识别.vue文件…

Django实现简单的音乐播放器 3

在原有音乐播放器上请求方式优化和增加加载本地音乐功能。 效果&#xff1a; 目录 播放列表优化 设置csrf_token 前端改为post请求 视图端增加post验证 加载歌曲 视图 设置路由 模板 加载layui css 加载layui js 增加功能列表 功能列表脚本实现 最终效果 总结 播…

跑深度学习nvidia驱动忽然实效的详细解决方法

由于经常跑深度学习&#xff0c;所以对于显卡驱动什么的都还是整的比较明白的不含糊&#xff0c;所以都能跑的起来。但是今天跑pytorch框架时&#xff08;用到cuda&#xff09;忽然给我报了个错&#xff1a; RuntimeError: No CUDA GPUs are available这给我整不会了&#xff…