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

news2024/11/15 18:25:11

脚本步骤

在流程测试用例界面,进入用例管理,点击 添加脚本[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://www.coloradmin.cn/o/729079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

d3dx9_33.dll丢失怎么解决

d3dx9_33.dll的作用 在讨论如何修复d3dx9_33.dll丢失错误之前,我们首先需要了解d3dx9_33.dll的作用。d3dx9_33.dll是DirectX 9的一个核心文件,它是DirectX库的一部分,用于提供图形和多媒体功能支持。DirectX是由Microsoft开发的一组多媒体技…

java项目根据启动位置指定 log4j2日志输出到指定目录

痛点 我们在开发的 java 项目一般都会记录日志,日志输出位置通常使用相对路径记录到当前启动 jar 包的同一个父文件夹下面。 当我们使用像 jsch、ssh 这种远程启动 java 程序的时候会出现一个问题: 日志会输出到当前登录用户的目录下面(如…

机器学习洞察 | 降本增效,无服务器推理是怎么做到的?

2022 年,无服务器推理受到了越来越多的关注。常见的推理方式包括实时推理、批量转换和异步推理: 实时推理:具有低延迟、高吞吐、多模型部署的特点,能够满足 A/B 测试的需求 批量转换:能够基于任务 (Job-based) 的系统…

故障排查:通过ssh远程执行命令时报错未找到命令

博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 目录 故障详情问题原因解决方案命令使用全路径修改~/.bashrc 故障详情 最近…

设计模式 - 抽象工厂模式

学完工厂模式,才发现还有一个抽象工厂模式;学习后发现不论是通过接口方式、还是继承方式,都可以使用抽象工厂模式;但是个人建议更多的时候,我们可以优先考虑接口方式,毕竟 单继承,多实现 设计模…

HTML5基础语法与标签

一、 HTML5介绍 HTML5是什么&#xff1f; HTML5是超文本标记语言&#xff08;HTML&#xff09;的第五个主要版本&#xff0c;用于描述网页结构和呈现内容。它是到目前为止最新且最强大的HTML版本。 HTML5语法约定 1.标签是HTML语法中的基本单位&#xff0c;由尖括号 ​<>…

QT分屏按钮

效果&#xff1a;按钮弹出分屏选择 // gridpopwidget.h #ifndef GRIDPOPWIDGET_H #define GRIDPOPWIDGET_H#include <QWidget> #include <QMouseEvent>class GridPopWidget : public QWidget {Q_OBJECT public:explicit GridPopWidget(QWidget *parent nullptr);~…

MySQL第二天

MySQL第二天 文章目录 MySQL第二天一、第一题 题目二、第二题题目 一、第一题 题目 1、先创建该customers表 create table customers ( c_num int primary key auto_increment, c_name varchar(50), c_contact varchar(50), c_city varchar(50),c_birth datetime not null);2、…

java IO流(一) File类

File对象只能对文件进行操作&#xff0c;不能操作文件中的内容。 1 File对象的创建 要注意的是&#xff1a;路径中"“要写成”\“进行转义&#xff0c; 路径中”/"可以直接用&#xff0c;但是最好的是使用File.separator&#xff0c;它会根据系统的不同进行转化&a…

ROS:分布式通信

目录 一、前言二、方案2.1准备2.2配置文件修改2.3配置主机IP2.4配置从机IP2.5测试 一、前言 ROS是一个分布式计算环境。一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式&#xff0c;任何节点可能随时需要与任何其他节点进行通信。 因此&#xff…

小白开酒吧前要做好的三件事

一、进行市场调研当你有开酒吧的想法时&#xff0c;首先要做的第一步就是市场调研&#xff0c;进行市场调研可以让你了解到该地区酒吧市场是否良好&#xff0c;对未来的经营&#xff0c;有着决定成败的帮助&#xff0c;同时市场调研也可以让你了解到周边什么类型酒吧最受欢迎&a…

PMP证书有什么用,考试条件是什么?

很多关注项目经理岗位的朋友都知道&#xff0c;一些企业的招聘信息经常会发布&#xff0c;很多招聘项目经理岗/PMO岗的岗位要求中都会有一条&#xff1a;持有PMP/软考等证书的优先。 其实面试的时候&#xff0c;可能两个候选人的经历、经验、期望薪资都差不多&#xff0c;那么…

ESP32(掌控板) 图片显示与幻灯片

ESP32&#xff08;掌控板&#xff09; 图片显示与幻灯片 本程序通过按键改变变量的值&#xff0c;从而切换4组图片&#xff0c;通过触摸按键切换每组图片中的不同图片&#xff0c;同时按下两个按键开启幻灯片功能。 图形化程序如下 Arduino代码如下 /*!* MindPlus* mpython**…

sqoop笔记——一次从Hive到PostgreSql的数据迁移

写在开头 sqoop&#xff0c;想必进来围观的小伙伴们已经很熟悉了&#xff0c;笔者想把一些在实际使用sqoop过程中遇到的问题和注意事项记录并分析给大家&#xff0c;希望能帮助有需要的同学。随着对sqoop不断深入的了解&#xff0c;笔者会不断的以文章的形式记录并分析给大家&…

2023年05月份青少年软件编程Scratch图形化等级考试试卷二级真题(含答案)

2023-05 Scratch二级真题 题数&#xff1a;37 分数&#xff1a;100 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1.运行下列哪段程序&#xff0c;可以让狗狗走到木屋门口&#xff1f;&#xff08; &#xff09;(2分) A. B. C. D. 2.下列哪个选项…

陪诊软件源码|医院陪诊软件开发|陪诊师接单APP定制

陪诊小程序具有以下功能优势&#xff1a;   预约挂号&#xff1a;陪诊小程序可以提供在线预约挂号功能&#xff0c;患者可以通过小程序选择就诊时间、医生和科室&#xff0c;避免排队和等待时间&#xff0c;提高就医效率。   陪诊服务&#xff1a;陪诊小程序可以提供陪诊服…

SDN实训报告-基于SDN的Qos差分服务

1 实训概述 本次为期一周的实训旨在通过基于SDN架构的实现差分服务需求来提升我们的技能。我们在实训中广泛运用了一些重要的技术手段&#xff0c;包括Django、QOS、OpenDaylight和OpenvSwitch等。 在实训过程中&#xff0c;我们将重点放在SDN的基本操作上&#xff0c;通过实际…

Introduction to linear optimization exercise 第二章课后题答案 6-10

文章目录 2.62.7 2.6 解答&#xff1a; (a) 设 y y y 是 C C C 中的一点&#xff0c;多面体 Λ { ( λ 1 , … , λ n ) ∈ R n ∣ ∑ i 1 n λ i A i y , λ 1 , … , λ n ≥ 0 } \Lambda\left\{(\lambda_1, \dots, \lambda_n)\in R^n\mid \sum_{i1}^n \lambda_i\textb…

【企业架构设计模式】MITRE 设计模式

定义&#xff1a; 软件中的设计模式&#xff08;通常&#xff09;是简短的描述&#xff0c;用于捕捉过去证明是成功的实践。它们不是具体的软件&#xff0c;而是在某些情况下应用的一种模板。它们通常不是规定性的&#xff0c;而是建议性的&#xff0c;并且包括关于何时最适合使…

Vue组件库Element-常见组件-对话框

Dialog 对话框 在保留当前页面信息的状态下&#xff0c;直接弹出对话框&#xff0c;告知用户并承载相关操作 具体代码关键如下&#xff1a; <template><div><el-row><!-- button 按钮 --><el-button>默认按钮</el-button><el-button…