HttpRunner学习5--使用variables声明变量
前言
在HttpRunner中,如果需要声明变量,可以通过关键字 variables 来完成,要引用声明的变量,则是通过 $+变量名 (如 $token )来实现。variables 可以在 config 和 test 中使用。
本人环境:HttpRunner V1.5.8
测试场景
我们将继续以之前的登录接口来学习,之前的用例是这样的:
- config:
name: extract test
request:
base_url: http://api.nnzhp.cn
- test:
name: login case
request:
url: /api/user/login
method: POST
headers:
Content-Type: application/x-www-form-urlencoded
User-Agent: Fiddler
data:
username: test1010
passwd: aA123456
validate:
- eq: [status_code, 200]
- eq: [content.error_code, 0]
在上面的用例中,我们的 username和 passwd 是在 data 中写死的,但在实际测试中,我们的数据可能会经常变化,因此,我们最好把一个变量传入到 username和 passwd 中,这样可以便于对用例进行维护。
config中使用variables
在 config 中声明变量,相当于定义的全局变量,作用域为整个用例,可以在各个 test 中使用。
- config:
name: variables test
request:
base_url: http://api.nnzhp.cn
variables:
username: test1010
passwd: aA123456
我们先在 config 中声明了变量 username 和 passwd,变量名可随意定义,然后在 test 中进行引用。
注意:引用的时候, $ 后的变量名,必须与声明的变量名一致。
data:
username: $username
passwd: $passwd
在 config 中定义的变量,可以在当前整个YAML脚本中生效,比如可以在多个 test 使用:
- test:
省略部分内容
data:
username: $username
passwd: $passwd
- test:
省略部分内容
data:
username: $username
passwd: $passwd
test中使用variables
在 test 中声明变量,相当于定义的局部变量,作用域为当前测试步骤,即只作用于一个 test 。test 中声明和引用变量的方法,和在 config 中是一样的,如下:
- test:
name: login case
variables:
username: test1010
passwd: aA123456
request:
省略部分内容
data:
username: $username
passwd: $passwd
很明显,在 config 和 test 中使用 variables 是有区别的,如果只在 test 中定义变量,那么存在多个 test 时,我们需要这样写:
- test:
name: login case
variables:
username: test1010
passwd: aA123456
request:
省略部分内容
data:
username: $username
passwd: $passwd
- test:
name: login case
variables:
username: test1010
passwd: aA123456
request:
省略部分内容
data:
username: $username
passwd: $passwd
config和test中同时使用variables
有时候,我们可能想同时定义全局变量和局部变量,那么可以同时在 config 和 test 中使用 variables 。如果 config 和 test 中定义了相同的变量名,那么在 test 执行时会优先使用当前 test 测试步骤中定义的局部变量。
完整的YAML格式用例如下:
- config:
name: variables test
request:
base_url: http://api.nnzhp.cn
variables:
username: test101011111
passwd: aA123456
- test:
name: login case
variables:
username: test1010
passwd: aA123456
request:
url: /api/user/login
method: POST
headers:
Content-Type: application/x-www-form-urlencoded
User-Agent: Fiddler
data:
username: $username
passwd: $passwd
validate:
- eq: [status_code, 200]
- eq: [content.error_code, 0]
上面这个用例中,config 中的用户名密码是错误的,test 中的用户名密码是正确的。该用例在执行时,使用的时 test 中定义的局部变量,因此它是能够登录成功。


HttpRunner学习5--使用variables声明变量的更多相关文章
- JS声明变量的写法
学习JS时候,声明变量是必须的,(虽然在没有声明变量的情况下,对某一变量赋值后, js自动认为已进行声明,但为了严谨,建议还是要进行声明)声明方式有传统的 var a: var b: var c: 也 ...
- httprunner学习4-variables变量声明与引用
前言 在 HttpRunner 中,支持变量声明(variables)和引用($var)的机制.在 config 和 test 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通 ...
- 【JS学习】var let const声明变量的异同点
[JS学习]var let const声明变量的异同点 前言: 本博客系列为学习后盾人js教程过程中的记录与产出,如果对你有帮助,欢迎关注,点赞,分享.不足之处也欢迎指正,作者会积极思考与改正. 总述 ...
- 【学习总结】声明变量在@interface括号中与使用@property的区别
方式一:直接在.h文件@interface中的大括号中声明. @interface Test : NSObject { NSString *str; // 私有变量 , 其他类无法访问,只能够该类内部 ...
- GO学习笔记 - 用":="实现短声明变量!
对于Delphi程序员,":="这个符号再熟悉不过了,表示对变量赋值!在GO语言中,同样表示赋值,但是和Delphi有些不同,不同就在于不需要var变量名称了!GO语言中的&quo ...
- JavaScript学习系列博客_21_JavaScript 变量、函数的提前声明
变量的提前声明(全局作用域) - 我们知道js的代码是自上而下执行的.如下,console.log(a)在var a=10前面,但是结果输出的是undefined. - 使用var关键字声明的变量,会 ...
- httprunner学习5-参数化与数据驱动
前言 参数化是自动化测试离不开的话题,httprunner里面只要把上一篇声明变量学会了,参数化也就自然会了. 不同的地方在于声明变量时对应值只有一个,参数化是多个值,存放在list里面. httpr ...
- JavaScript知识架构学习路径(一)- 变量篇
[摘要]本文是专为JavaScript入门者而总结的,总体上将JavaScript的基础部分分成了九大块,分别是变量.运算符.数组.流程控制结构.字符串函数.函数基础.DOM操作基础.文档对象模型DO ...
- es6中的let声明变量与es5中的var声明变量的区别,局部变量与全局变量
自己通过看typescript官方文档里的let声明,与阮一峰老师翻译的的es6学习文档,总结以下三点 1.var声明可以多次重复声明同一个变量,let不行 2.let变量只在块级作用域里面有效果,v ...
随机推荐
- ASI中POST请求和文件下载
//POST请求 1 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 1.URL NSURL *url = ...
- 【Java】Java中的final关键字和static
0.概述 final关键字表示是不可变的: 下面分别从属性(字段).方法.类中进行说明: 1.属性(or字段),表示常量 final声明在属性(or字段)中,表示常量,有两种初始化方法,1是在声明时直 ...
- ThinkPHP3.2.2实现持久登录(记住我)功能的方法
实现持久登录,即用户在登录时,勾选了"记住我"之后,无论是否关闭浏览器,只要不退出登录,在指定的时间内始终保持登录状态(缺点是在另一台电脑上登录过后,之前那台电脑就不能继续保持登录 ...
- RAC环境查询JOB正在运行的信息
需求: 客户环境12.2.0.1,三节点RAC需要,将一个正在运行的Job session kill掉, 但是通过DBA_JOBS_RUNNING发现,无法发现其它实例运行的JOB,因此需要登陆多台实 ...
- Leader 让我做 CMS 帮助中心的技术选型,我撸了 VuePress 和 GitBook,然后选择...
前言 因为自己平时经常写博客,也有博客网站,所以 Leader 叫我做一个 CMS 的帮助中心的技术选型,CMS 的帮助中心的功能:是通过文章来教用户如何使用我们的项目. 所以笔者要做一个静态网站的技 ...
- SX1276/SX1278和SXSX1262的详细参数对比
SX1276/SX1278和SX1262的对比 SX1262是Semtech公司新推出的一款sub-GHz无线收发器.SX1262芯片最大的买点是它的低功耗和超远距离的传输.SX1262接收电流 ...
- Java修炼——面向对象_抽象类和抽象方法
抽象类和抽象方法 什么是抽象类? 使用 abstract 修饰的类称为抽象类 public abstract class Person { } 抽象类的特征 1) 抽象类不可以创建对象 2) 抽象类可 ...
- [TimLinux] Python 函数
1. 函数(function)与方法(method)的区别 方法:在类结构体中通过def语句声明的代码块称为方法,比如类方法(classmethod),实例方法,静态方法(staticmethod)等 ...
- AutoCAD中的螺旋究竟是什么螺旋?
AutoCad从很早的时候就开始提供了螺旋线的功能,它的用法相对简单,非常适合用来对等距螺旋的理论进行演练. 选择螺旋线工具,首先画出一个基准圆,再向内(或向外)移动鼠标,拖出一个旋转3个周期的螺旋. ...
- AI Boot Camp 分享之 ML.NET 机器学习指南
今天在中国七城联动,全球134场的AI BootCamp胜利落幕,广州由卢建晖老师组织,我参与分享了一个主题<ML.NET 机器学习指南和Azure Kinect .NET SDK概要>, ...