2.8 接口间的参数传递

Jmeter多接口测试之参数传递 在进行多接口测试时,有些情况下需要将前一个接口返回数据作为后一个接口的参数,以模拟实际场景。JMeter作为一款常用的性能测试工具,提供了多种参数传递方式,以便实现接口间的数据传递。接口测试包含单接口测试和多接口测试,通过组合多个接口实现一组功能的验证称为多接口测试,单接口重在单个接口多种请求组合的响应断言,多接口重在组合不同接口,实现流程的串联和验证。多接口测试涉及到接口之间参数的传递,比如AB两个接口协同完成一个功能,A接口的响应要作为B接口的输入,此处就需要用到Jmeter的关联功能。 阅读详情

一、mocha自动化可以通过this.ctx来传递

也可以通过外层的变量来传递

示例

/**
 * 正则接口用例
 * @type {AxiosStatic | {CancelTokenSource: CancelTokenSource, CancelStatic: CancelStatic, AxiosProxyConfig: AxiosProxyConfig, Canceler: Canceler, AxiosStatic: AxiosStatic, AxiosRequestConfig: AxiosRequestConfig, AxiosTransformer: AxiosTransformer, Cancel: Cancel, AxiosInstance: AxiosInstance, AxiosError: AxiosError, Method: Method, AxiosPromise: AxiosPromise, CancelTokenStatic: CancelTokenStatic, AxiosBasicCredentials: AxiosBasicCredentials, ResponseType: ResponseType, CancelToken: CancelToken, AxiosInterceptorManager: AxiosInterceptorManager, AxiosResponse: AxiosResponse, AxiosAdapter: AxiosAdapter, readonly default: AxiosStatic}}
 */
const axios = require('axios');
const path = require('../../config/global/path');
const regularCase = require('../../config/case/regularcase');
const utilFormat = require('../../utils/format');
const addContext = require('mochawesome/addContext');
const defaults = require('../../config/global/defaults');
const compare = require('../../utils/compare');
const random = require('../../utils/random');
const check = require('../../utils/checkchinese');
describe('regexp', function () {
    let obj;
    beforeEach(function () {
        obj = null;
    })
    afterEach(function () {
        addContext(this, utilFormat.add(obj));
    });
    context('regexpList', function () {

        it('list', async function () {
            let temp;
            let name = this._runnable.title;
            await axios.get(path.regularPathList.list, {headers: {'Cookie': defaults.session}})
                .then(function (res) {
                    obj = res;
                    temp = res.data.data;
                    for (let j of regularCase.regexp) {
                        if (j['requestName'] === name) {
                            compare.compare(j['res'], res.data);
                        }
                    }
                })
                .catch(function (error) {
                    should.ifError(error);
                })
            this.ctx = temp;
        })
        for (let i of regularCase.parmsData) {
            let tempId;
            it('save', async function () {
                let name = this._runnable.title;
                if (this.ctx === [] || this.ctx === undefined) {
                    should.be.false('list: Response faild, regexp list may be incorrect')
                }
                if (i.regExpType === 'INNER') {
                    i.regExpInfo = this.ctx[random.random(this.ctx.length)].regExpInfo;
                    i.innerRegExpType = this.ctx[random.random(this.ctx.length)].innerRegExpType;
                }
                await axios.post(path.regularPathList.save, i, {headers: {'Cookie': defaults.session}})
                    .then(function (res) {
                        obj = res;
                        tempId = res.data.data;
                        for (let j of regularCase.regexp) {
                            if (j['requestName'] === name) {
                                compare.compare(j['res'], res.data);
                            }
                        }
                    })
                    .catch(function (error) {
                        should.ifError(error);
                    })
            })

            it('edit', async function () {
                let name = this.runnable.title;
                if (check.check(tempId) === true) {
                    true.should.be.false('save: Response failed,the value of ID contains chinese')
                }
                let url = path.regularPathList.save + '/' + tempId;
                let data = {};
                for (let j of regularCase.editData) {
                    if (i.regExpType === j.regExpType && i.regExpType === 'INNER') {
                        j.regExpInfo = this.ctx[random.random(this.ctx.length)].regExpInfo;
                        j.innerRegExpType = this.ctx[random.random(this.ctx.length)].innerRegExpType;
                        j.regExpName = i.regExpName;
                        data = j;
                        break;
                    }
                    if (i.regExpType === j.regExpType && i.regExpType === 'CUSTOM') {
                        j.regExpName = i.regExpName;
                        data = j;
                        break;
                    }
                }
                data.id = tempId;
                await axios.put(url, data, {headers: {'Cookie': defaults.session}})
                    .then(function (res) {
                        obj = res;
                        for (let j of regularCase.regexp) {
                            if (j['requestName'] === name) {
                                compare.compare(j['res'], res.data);
                            }
                        }
                    })
                    .catch(function (error) {
                        should.ifError(error);
                    })
            })

            it('get', async function () {
                let name = this.runnable.title;
                let url = path.regularPathList.get + encodeURI(i.regExpName);
                await axios.get(url, {headers: {'Cookie': defaults.session}})
                    .then(function (res) {
                        obj = res;
                        for (let j of regularCase.regexp) {
                            if (j['requestName'] === name) {
                                compare.compare(j['res'], res.data);
                            }
                        }
                    })
                    .catch(function (error) {
                        should.ifError(error);
                    })
            })

            it('delete', async function () {
                let name = this._runnable.title;
                let url = path.regularPathList.save + '/' + tempId;
                await axios.delete(url, {headers: {'Cookie': defaults.session}})
                    .then(function (res) {
                        obj = res;
                        for (let j of regularCase.regexp) {
                            if (j['requestName'] === name) {
                                compare.compare(j['res'], res.data);
                            }
                        }
                    })
                    .catch(function (error) {
                        should.ifError(error);
                    })
            })
        }

    })
})

代码中定义了tempId变量和temp变量,temp传递给了this.ctx,而tempId是直接在下面接口中进行引用了

接口的调用顺序上,只要把删除接口放到最后就行,这样就能覆盖新增、编辑、查询、删除接口了

JDK1.8新特性【之】函数式接口(内置、自定义、参数传递) JDK1.8新特性【之】函数式接口(内置、自定义、参数传递) 1.函数式接口 2.形式1:只存在一个抽象方法 3.形式2:只存在一个必须实现的抽象方法 4.形式3:参数任意定制 5.应用示例 5.1.内置的四种类型应用(消费、函数、提供、断言) 5.2.自定义接口函数、静态方法(参数类型为 接口函数) 5.3.使用自定义接口函数(1.传递函数式接口对象、2.形参上直接写表达式) 6.完整源码下载 《目录:Java基础》 《目录:JDK1.8新特性》 《幕》 阅读详情

相关推荐

Hutool SoapClient 调用使用@webservice 发布的webService接口,参数传递为空

采用工具类Hutool SoapClient调用@webservice 发布的webService接口时,参数传递不到webService,可以借助SoapUI工具辅助查看。

FangX_u的博客 1923

egg-restapi 项目 学习记录 1

// egg-restfulapi // 没有app.js 文件 // 特别的库:await-stream-ready egg-bcrypt egg-cors egg-jwt // egg-mongoose egg-scripts image-downloader mocha moment stream-to-array // stream-wormhole // 应该是个很规范的例子 /...

qq_33269443的博客 2477

STM32F4串口接收ATGM336H GPS数据,手把手教你解析NMEA协议并转换经纬度格式

本文详细介绍了如何使用STM32F4开发板通过串口接收ATGM336H GPS模块的NMEA协议数据,并解析GNRMC语句获取经纬度信息。内容涵盖硬件连接、NMEA协议深度解析、数据校验实现以及经纬度格式转换的数学原理与代码实现,为嵌入式开发者提供完整的GPS数据处理解决方案。

weixin_42522575的博客 497

mocha api参数传递

mocha api test,有时想要获取上一个api的返回结果作为参数传递给下面的api作为参数使用。

Fred's Blog 760

实战解析:利用Wireshark解密QQ通信协议

本文提供了一份利用Wireshark工具分析QQ通信协议的实战指南。文章详细介绍了从环境准备、捕获数据包到解析协议层的完整流程,重点演示了如何识别QQ号码字段、观察加密数据特征以及区分不同通信类型(如文本、文件传输)。通过此实践,读者可以深入理解网络分层模型和现代应用加密通信机制,提升网络协议分析与安全诊断能力。

weixin_29210727的博客 407

基于ROS下的安卓手机图像和IMU跑ORB-SLAM3

接之前文章继续,手上没有现成的单目+IMU硬件,但是安卓手机几乎人人都有。因此,本文讲下如何用手机跑ORB-SLAM3的Mono和Mono_Inertial。 1. 手机与PC通信 基于ROS下的信息发布和订阅,手机和PC在一个局域网下进行信息(image和IMU)传输。 手机APK参考了github上的2个开源Android_Camera-IMU和android_ros_sensors,基于ros_java生成安卓APP,下载安装任一个APP到安卓手机,界面分别是这样: 手机和PC连一个无

h_372101的博客 1万+

接口请求传参方式

在响应中,Content-Type 标头告诉客户端实际返回的内容的内容类型。一个 HTTP 标头由它的名称(不区分大小写)后跟随一个冒号(:),冒号后跟随它具体的值。通常会存放本次请求的基本设置(Content-Type),以帮助服务器理解并解析本次请求的body体。查询参数是通过URL的查询部分来传递参数的,以‘?存放在请求头中发送给服务器的参数,服务器通过解析请求头获取参数内容。通过URL的路径部分来传递参数,以‘ / ’开始和分隔。是路径参数的占位符,实际参数将替换占位符部分。

qq_43216389的博客 1290

在 Linux 虚拟机中手动安装 VMware Tools

对于 Linux 虚拟机,您可以从命令行手动安装 VMware Tools。对于 Linux 的较高发行版,请使用集成的 open-vm-tools 版本。 前提条件 有关 open-vm-tools 的操作系统兼容性的详细信息,请参见《VMware 兼容性指南》,网址为VMware Compatibility Guide - System Search。 开启虚拟机。 确认客户机操作系统正在运行。 因为 VMware Tools 安装程序是使用 Perl 编写的,请确认已在客户机操作系统中安..

m0_62526815的博客 1755

接口自动化测试脚本设计——接口间参数传递

在进行接口自动化测试过程中,时常会遇到接口间参数传递问题

LeoGymy的博客 419

保姆级教程:用sw_urdf_exporter插件将Solidworks机械臂模型转为ROS可用的URDF

本文提供了一份详细的保姆级教程,指导用户使用sw_urdf_exporter插件将Solidworks机械臂模型转换为ROS可用的URDF文件。从环境准备、插件配置到模型预处理和关键参数设置,再到ROS环境集成测试和性能优化,全面覆盖了机械臂URDF转换的全流程。特别适合机器人工程师和ROS开发者快速实现Solidworks模型到ROS环境的无缝迁移。

weixin_29300931的博客 396

四舵轮底盘运动学模型(源码)(四轮四独立转向)二

舵轮4转向活动范围 x 轴正半轴,x轴正方向为0弧度,左正右负, -M_PI/2 < 转向范围 < M_PI/2;移动底盘的正前方为x方向,左侧为y轴方向(遵循右手坐标系,右手大拇指指向天空为z轴方向,食指与中指垂直,食指指向小车正前方为x轴,中指指向为移动底盘y轴方向)转向:逆时针旋转角速度w为正,顺时针旋转角速度w为负。(遵循右手螺旋法则,右手握拳大拇指指向天空为旋转z轴方向,拳垂直于地面,4指方向即底盘转动的正方向)左前轮为1号轮,右前轮为2号轮,左后轮为3号轮,右后轮为4号轮。

苏凯的博客 527

【接口自动化】接口间参数传递的一种解决方案

接口自动化

neverSaynever_的博客 1354

【路径规划】Theta_star算法机器人栅格地图最短路径规划【含Matlab源码 2618期】

Theta_star算法机器人栅格地图最短路径规划 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 362

Pytest用例间参数传递的两种实现方式示例

我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段,是接口B的某个字段的入参。如果是使用postman,那我们可以通过设置后置变量,然后在需要使用的地方通过{{}}的方式来进行调用。但是如果是使用自己写的测试框架中要如何实现呢?我想到的是如下三种方法。

软件测试技术交流分享 1952

Qualcomm 常用NV列表

^ NV ITEM ^ 功能^^ |NV10 |mode prefer,找网模式|新平台使用NV80000| ^NV74 NV74=0关闭自动接听电话^ |NV240 |NV240=FALSE|EVDO出现网络的问题,此项必须设定为FALSE| |NV255 |CDMA规避网络列表(SID/NID号)| |NV256 |

sdrgtywretyeruet的专栏 5767

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Jmeter中配置token全局变量与实现接口之间实现参数传递

Jmeter中配置token全局变量与实现接口之间实现参数传递

weixin_43212406的博客 1782

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Mybatis 绑接接口 参数传递

mybatis 接口绑定 mybatis 配置: https://blog.csdn.net/YIPUTILIU/article/details/108089512 1.你需要 一个接口 FlowerMapper.java public interface FlowerMapper { public interface FlowerMapper { List<Flower> selectAll(); int insertFlower(Flower a);

YIPUTILIU的博客 251

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【strut2笔记】Struts2参数传递

Struts2参数传递     l 三种方法 1.在被调用类中建立私有变量,并设置其set和get方法,当访问的连接中带有变量的时候,strut2会自动匹配变量到类实例中,等待调用就可以。注意的是,连接中的变量,类中必须都要有,否则接受不到,而且接受的名字和传递名字要相同,也就是set和get后的字符串与匹配的变量名字相同,第一个字母大写。     2.不像第一种方法,直接用变量,而是使

Amir‘s IT tec 725

ansible 2.8 接口 python调用执行命令

前言:根据ansible2.8官方提供的接口,做了以下调整,可以加参数 例如:请求的参数是:{"fork":"5","hosts":[{"group":"aa","ip":"192.168.100.3","port":"22","vars":{"ansible_ssh_user":"root","ansible_ssh_pass":"123456"}}],"modules":"shell","a...

3139

java8内置函数接口

另外Java的函数式编程就是Lambda表达式,java的函数式接口的有一个明显特征:有且仅有一个抽象方法的接口。Function函数接口中compose与andThen方法均可实现函数组合的作用,但两者的执行顺序不同。andThen方法:组合函数与Function函数接口中的andThen方法作用于执行顺序一致。执行完右边函数后,将其返回的结果作为参数给到左边(上一个)的函数执行。执行完左边函数后,将其返回的结果作为参数给到右边(下一个)的函数执行。3.Function函数接口中的andThen方法。

m0_63607954的博客 844

java8函数式接口使用详解

Lambda表达式是一种简洁而紧凑的函数表示方式,它可以将函数作为参数传递给方法,或者将代码本身作为数据处理。可以看到,使用Lambda表达式后,代码变得更加简洁和清晰,不需要写很多冗余的代码。final那么,Lambda表达式和接口之间有什么关系呢?其实,Lambda表达式本质上就是一个匿名函数,它需要一个函数式接口来支持它。是指只有一个抽象方法的接口,它可以隐式地转换为Lambda表达式。例如上面的例子中,Greeting就是一个函数式接口,它只有一个抽象方法。

夏客柯 1354

Java 8 四大函数式接口详解

函数式接口是只有一个抽象方法的接口。Java 8 通过注解来标识函数式接口。虽然这个注解不是强制性的,但建议使用它来确保接口符合函数式接口的定义。// 只有一个抽象方法表示接受一个输入参数并返回无结果的操作。表示一个无参数但返回一个结果的供给操作。T get();表示接受一个输入参数并返回一个结果的函数。表示一个接受输入参数并返回布尔值的断言。Java 8 的四大函数式接口(ConsumerSupplierFunctionPredicate)为函数式编程提供了强大的支持。

秃头之旅 2010

robotest接口自动化测试之参数传递之我准备好了开始吧

直接上菜! setUpClass():所有的测试方法运行前运行,为单元测试做前期准备,但必须使用@classmethod装饰器进行修饰,整个测试过程中只执行一次。 import unittest class Test(unittest.TestCase): @classmethod def setUpClass(cls): cls.token = None def test_01(self): # 赋值需要使用类名.变量

u011640418的博客 843

java8 接口_Java8的四大函数接口

原标题:Java8的四大函数接口前言Java8中函数接口有很多,大概有几十个吧,具体究竟是多少我也数不清,所以一开始看的时候感觉一脸懵逼,不过其实根本没那么复杂,毕竟不应该也没必要把一个东西设计的很复杂。几个单词在学习了解之前,希望大家能记住几个单词,掌握这几个单词,什么3,40个官方的函数接口都是小问题了,不信的话接着往下看啦。ok,那这几个单词呢分别是supplier提供者,consumer消...

weixin_42317626的博客 318

JAVA8新特性[第二季]-函数式接口

相关源码地址:https://github.com/liudongdong0909/java8/tree/master/java8-Lambda/src/com/donggua 一什么是函数式接口 二自定义函数式接口 三作为参数传递Lambda表达式 四java8内置四大核心函数式接口 五其他接口 六综合案例 1 创建一个员工集合 2 两个需求 3 第一种处理方式使用foreach处理 4...

幸运的天才小驴的专栏 909
上一篇: 2.7 list接口代码示例
下一篇: 15、tomcat控制台输出乱码问题
LetsStudy
博客等级 码龄9年 96粉丝 323原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值