2.httprunner-yaml用例结构
- httprunner3.x版本弱化了api层的概念
- 直接在testcase中写request请求
- 如果是单个请求,也可以直接写成一个testcase
- 每个testcase必须具有两个类属性:config和teststeps
name: 指定测试用例名称 这将显示在执行日志和测试报告中-必填 base_url: 如果base_url指定,则testsetp中的url可以设置相对路径部分-选填 verify: https请求时,是否校验证书,默认为True,忽略证书校验可以设置为FALSE-选填 variables: 指定测试用例的公共变量,每个测试步骤都可以引用未在步骤变量中设置的配置变量
换句话说步骤变量比配置变量具有更高的优先级-选填 export: 早期版本是output,指定导出的测试用例会话变量,把变量暴露处理设为全局变量-选填
name: 指定测试步骤-必填
request:指定测试步骤变量,参数引用变量"$变量名"-必填
variables:指定测试步骤变量,参数引用变量"$变量名"-选填
extract: 提取返回结果-可选
export: 导出测试用例会话变量,设为全局变量-可选
validate: 校验返回结果
示例
config:
name: 登录用例
teststeps:
-
name: step-登录
request:
url: http://xxx.com
method: POST
json:
username: test
password: "12345"
validate:
- eq: [status_code,200]
- eq: [body.msg,login success]
base_url
config:
name: 登录用例 teststeps:
-
name: step-登录
request:
url: http://xxx.com/v1/login/
config:
name: 登录用例
base_url: http://xxx.com
teststeps:
-
name: step-登录
request:
url:/v1/login/
- teststeps中变量对当前step有效
- config中变量在整个yaml中都生效
config:
name: 登录用例
teststeps:
-
name: step-登录
variables: #声明局部变量
user: test
password: "12345"
request:
url: http://xxx.com/v1/login/
method: POST
json:
username: $user #调用局部变量
password: $password
validate:
- eq: [status_code,200]
- eq: [body.msg,login success]
config:
name: 登录用例
variables: #声明全局变量
user: test
password: "12345"
teststeps:
-
name: step-登录
request:
url: http://xxx.com/v1/login/
method: POST
json:
username: $user #调用全局变量
password: $password
validate:
- eq: [status_code,200]
- eq: [body.msg,login success]
-jmes_path:jmespath表达式
-expect:预期值,这里也可以使用指定的预期值、变量或函数引用
-message消息(可选):用于指示断言错误原因
httprunner请求源码片段
resp_obj_meta = {
"status_code": self.status_code,
"headers": self.headers,
"cookies": self.cookies,
"body": self.body,
}
status_code :请求状态码
headers:请求头
cookies:请求cookies
body:响应正文,一般是json格式
# 简单示例
validate:
- eq: [status_code,200] #校验请求状态码是200
- eq: [headers.Content-Type,appliction/json] #校验请求头类型是json
- eq: [body.code,0] #校验返回值内容的code是0
- eq: [body.msg,success,msg返回不一致] #校验返回值的msg是success,如果不是,提示原因msg返回不一致
- len_eq: [body.token,40] # 校验返回值的token长度是40
teststeps:
-
name: step-登录
request:
url: /v1/login/
method: POST
upload:#上传文件
file: data/test.png
title: '封面'
setup_hooks:
- ${setup_hook()}
- ${request_sign($request)}
teardown_hooks:
- ${teardown_hook()}
2.httprunner-yaml用例结构的更多相关文章
- httprunner学习9-完整的用例结构(yaml&json)
前言 前面几篇零散的学了一些httprunner的知识点,那么一个完整的 YAML/JSON 用例文件包含哪些关键字呢? 测试用例结构 在 HttpRunner 中,测试用例组织主要基于三个概念: 测 ...
- HttpRunner学习2--用例格式和简单使用
前言 HttpRunner中,测试用例支持两种文件格式:YAML 和 JSON.两种格式的用例是完全等价的,对于相同的信息内容,使用 YAML /JSON 得到的测试结果和报告也是一致的. 本人环境: ...
- 使用Python写yaml用例
1.打开cmd,进入本机安装python的目录,执行 pip install pyyaml ,安装pyyaml第三方包. 2.在Pycharm中新建一个项目(已有的话就不需要啦) 新建yaml文件 ...
- 【HttpRunner v3.x】笔记 ——4. 测试用例-结构解析
一.官方首推pytest格式 上篇文章我们知道了,httprunner可以支持三种格式的用例,分别是pytest.yaml和json.yaml和json是以前的版本所使用的用例格式,但是在3.x版本上 ...
- HttpRunner学习11--指定用例运行次数
前言 在HttpRunner中,一般情况下,我们写的用例脚本都是每次运行一次,如果我们想要指定用例运行的次数,可以通过 times 关键字来实现. 测试场景 在这里,我们以访问 TesterHome ...
- httprunner(8)用例调用-RunTestCase
前言 一般我们写接口自动化的时候,遇到复杂的逻辑,都会调用API方法来满足前置条件,Pytest的特性是无法用例之间相互调动的,我们一般只调用自己封装的API方法. 而httprunner支持用例之间 ...
- 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)
https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...
- HttpRunner学习3--extract提取数据和引用
前言 在HttpRunner中,我们要想从当前 HTTP 请求的响应结果中提取参数,可以通过 extract 关键字来实现. 本人环境:HttpRunner V1.5.8 测试场景 在这里,我将以一个 ...
- HttpRunner学习10--hook机制
前言 对于使用过 Python结合Unittest 框架来做自动化测试的同学,应该知道在 Unittest 中,有这样2个方法:setUp() 和 tearDown() ,即前置和后置操作.通常 se ...
随机推荐
- 分库分表ShardingSphere-JDBC笔记整理
一.分库分表解决的现状问题 解决数据库本身瓶颈 连接数: 连接数过多时,就会出现'too many connections'的错误,访问量太大或者数据库设置的最大连接数太小的原因 Mysql默认的最大 ...
- 关于virtio_net网卡命名的小问题
最近看了一个小问题,涉及到一致性网络设备命名(Consistent Network Device Naming),在此记录一下. 系统是 4.18.0-240.el8.x86_64,centos 8. ...
- Spring 08: AOP面向切面编程 + 手写AOP框架
核心解读 AOP:Aspect Oriented Programming,面向切面编程 核心1:将公共的,通用的,重复的代码单独开发,在需要时反织回去 核心2:面向接口编程,即设置接口类型的变量,传入 ...
- 手把手教你搭建JAVA分布式爬虫
在工作中,我们经常需要去获取一些数据,但是这些数据可能需要从第三方平台才可以获取到.这个时候,爬虫系统就可以帮助我们来完成这些事情. 提到爬虫系统,很多人都会想到使用python.但实际上,语言只是一 ...
- C++ 由快排学习到的的随机数等知识
起: 力扣的912题 数组排序 ,想着先用快速排序来写写,在实际用c++编写的时候,有一些之前没注意到的细节问题造成了一些麻烦. 912. 排序数组 - 力扣(LeetCode) 快排思想 每次以数组 ...
- 动态调整日志级别思路&实现
引言 上篇文章 性能调优--小小的 log 大大的坑 已将详细的介绍了高并发下,不正确的使用日志姿势,可能会导致服务性能急剧下降问题.文末也给各位留下了解决方案--日志级别动态调整. 本文将详细介绍& ...
- 为什么最近每份 Android 简历都说 “熟悉 MQTT 协议”?
请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...
- LFS(Linux From Scratch)构建过程全记录(一):准备工作
写在前面 本人修学了一门课,名曰<操作系统课程设计>,其任务为基于LFS以编译源代码的方式制作一个基本的Linux操作系统,并且编写在linux下的GUI软件. 本操作系统构建的全过程将分 ...
- 从Spring中学到的【1】--读懂继承链
最近看了一些 Spring 源码,发现源码分析的文章很多,而底层思想分析的文章比较少,这个系列文章准备总结一下Spring中给我的启示,包括设计模式思想.SOLID设计原则等,涉及一些编程的基本原则, ...
- Scrum五大会议要怎么开?
在Scrum框架中,我们对Scrum的五个会议一定都不陌生,但如何组织这五个会议,才能让Scrum团队真正积极.主动地参与进项目管理中呢?接下来我们会以一个Sprint为周期,详细介绍一下Sprint ...