前言

在 HttpRunner 中,支持变量声明(variables)和引用($var)的机制。在 config 和 test 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通过 $ + 变量名称 的方式引用变量。

区别在于,在 config 中定义的变量为全局的,整个测试用例(testcase)的所有地方均可以引用;在 test 中定义的变量作用域仅局限于当前测试步骤(teststep)

httprunner==1.5.8

局部变量

在登录案例中,账号和密码是写死的,一般写用例的时候,我们最好把这种可能会变的参数单独写个变量。做到测试数据和代码的分离,以便后续维护。

如果我们在test下声明的变量,作用域只在当前test下有效。声明变量用variables,变量和对应值用键值对,如

- test:
name: login case1
variables:
user: test
psw: 123456

引用user和psw变量用$user,$psw,完整的test_var.yml脚本如下

# 上海悠悠,QQ交流群:750815713
- config:
name: logincase
variables: {}
- test:
name: login case1
variables:
user: test
psw: 123456
request:
url: http://127.0.0.1:8000/api/v1/login/
method: POST
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
json:
username: $user
password: $psw
extract:
- token: content.token # 提取token
validate:
- eq: [status_code, 200]
- eq: [headers.Content-Type, application/json]
- eq: [content.msg, login success!]
- eq: [content.code, 0]

局部变量只在当前的test用例生效,在其它的test用例不会生效

运行用例

使用hrun运行结果

D:\soft\untitled>hrun test_var.yml
login case1
INFO POST http://127.0.0.1:8000/api/v1/login/
INFO status_code: 200, response_time(ms): 384.72 ms, response_length: 109 bytes
INFO start to extract from response object.
INFO start to validate.
. ----------------------------------------------------------------------
Ran 1 test in 0.394s OK
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\untitled\reports\1569114664.html

全局变量

如果要设置一个全局变量,需把变量声明(variables)放到config下,这样就在整个.yml文件生效了

- config:
name: logincase
variables:
user: test
psw: 123456
- test:
name: login case1
request:
url: http://127.0.0.1:8000/api/v1/login/
method: POST
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
json:
username: $user
password: $psw
extract:
- token: content.token # 提取token
validate:
- eq: [status_code, 200]
- eq: [headers.Content-Type, application/json]
- eq: [content.msg, login success!]
- eq: [content.code, 0]

运行结果

D:\soft\untitled>hrun test_config_var.yml
login case1
INFO POST http://127.0.0.1:8000/api/v1/login/
INFO status_code: 200, response_time(ms): 580.17 ms, response_length: 109 bytes
INFO start to extract from response object.
INFO start to validate.
. ----------------------------------------------------------------------
Ran 1 test in 0.584s OK
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\untitled\reports\1569114978.html

httprunner学习4-variables变量声明与引用的更多相关文章

  1. ES6学习笔记之变量声明let,const

    最近用淘宝的weex做了个项目,最近稍微闲下来了.正好很久没有接触RN了,所以趁这个机会系统的学习一下ES6的相关知识. 孔子说:没有对比就没有伤害.所以我们要拿ES6和ES5好好对比的学习.这样才能 ...

  2. httprunner学习13-环境变量.env

    前言 一般来说,在进行实际应用的开发过程中,应用会拥有不同的运行环境,通常会有以下环境: 本地开发环境 测试环境 生产环境 在不同环境中,我们可能会使用不同的数据库或邮件发送驱动等配置,这时候则需要通 ...

  3. 批处理学习笔记3 - 变量声明和goto代替while循环

    批处理中没有while循环,只能用goto代替.下面是代码 @echo off set /a i = 0 :again echo %i% set /a i= %i% + 1 if %i% lss 10 ...

  4. scala学习笔记:变量声明中的模式

    先看个正常的写法: scala> val x = 1 x: Int = 1 体会一下元组的写法: scala> val (x,y,z)=(1,2,3) x: Int = 1 y: Int ...

  5. es6变量声明和解构赋值

    /*声明: * 本文内容多为学习借鉴性内容,大部分非原创 * 特别感谢阮一峰的 ECMAScript6 入门,推荐大家学习 */ 一.es5变量声明的不足 1.变量提升和函数声明提升 es5的代码加载 ...

  6. 第二篇 -- Go语言转义字符与变量声明

    上节我们讲了GO语言的环境搭建以及创建了Hello World程序.今天学习一下Go语言基础语法 开发前准备 1. 首先创建一个Project02 2. 在Project02下面新建一个test1.g ...

  7. HttpRunner学习5--使用variables声明变量

    前言 在HttpRunner中,如果需要声明变量,可以通过关键字 variables 来完成,要引用声明的变量,则是通过 $+变量名 (如 $token )来实现.variables 可以在 conf ...

  8. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

  9. JavaScript学习01 语言简介、基本使用和变量声明

    JavaScript语言简介.基本使用和变量声明 JavaScript是网景(Netscape)公司开发的一种基于客户端浏览器.面向对象.事件驱动式的网页脚本语言. JavaScript的前身叫Liv ...

随机推荐

  1. 责任链(ChainOfResponsibility)模式

    在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出请求的客户端并不知道链上的哪一个对象,这使得系统可以在不影响客户端的 ...

  2. VS2013中反汇编常用指令理解

    最近复习C语言,对反汇编感兴趣,就用下图举例解释一下我的理解,如有错还请大佬指教. 首先,认识两个常用指令 :   lea ---> 取地址赋值      mov ---> (同类型)赋值 ...

  3. Prometheus 配置文件详解

    Prometheus 配置文件详解 官方文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/ 指标说 ...

  4. FusionInsight大数据开发---MapReduce与YARN应用开发

    MapReduce MapReduce的基本定义及过程 搭建开发环境 代码实例及运行程序 MapReduce开发接口介绍 1. MapReduce的基本定义及过程 MapReduce是面向大数据并行处 ...

  5. 谨记不要在MySQL中使用“utf8”编码

    掉坑回顾: 最近在工作中遇到一个BUG,用于记录客户昵称的数据表,在插入带有表情的字符时候报错.使用的存储引擎是INNODB,当我查看数据库字段的时候确实是设置的utf8,我传入的字符也是utf8的编 ...

  6. SQL Server优化之SET STATISTICS开关(转载)

    一.准备工作 缓存对于某个查询的性能影响十分之大,所以优化之前要清空缓存. 清除Buffer Pool里面的所有缓存 DBCC DROPCLEANBUFFERS 清除Buffer Pool里的所有缓存 ...

  7. SQLServer作业调用链接服务器失败解决办法

    新建一个SQL作业,语句手动执行OK,但是作业计划执行总是报错. 消息已以用户 NT SERVICE\SQLSERVERAGENT 的身份执行. 链接服务器 "172.16.10.23&qu ...

  8. DEV 总结

    转自:https://www.cnblogs.com/yuerdongni/archive/2012/09/08/2676753.html 1. 如何解决单击记录整行选中的问题 View->Op ...

  9. Java自学-数字与字符串 字符串转换

    Java中把数字转换为字符串,字符串转换为数字 步骤 1 : 数字转字符串 方法1: 使用String类的静态方法valueOf 方法2: 先把基本类型装箱为对象,然后调用对象的toString pa ...

  10. JavaWeb第二天--CSS

    CSS CSS简述 CSS是什么?有什么作用? CSS(Cascading Style Sheets):层叠样式表. CSS通常称为CSS样式或层叠样式表.主要用于设置HTML页面中的文本内容(字体. ...