前言:
  • httprunner3.x版本弱化了api层的概念
  • 直接在testcase中写request请求
  • 如果是单个请求,也可以直接写成一个testcase
  • 每个testcase必须具有两个类属性:config和teststeps
config
每个测试用例都应该有一个config部分,可以在其中配置用例级别,有以下属性
name: 指定测试用例名称 这将显示在执行日志和测试报告中-必填

base_url: 如果base_url指定,则testsetp中的url可以设置相对路径部分-选填

verify: https请求时,是否校验证书,默认为True,忽略证书校验可以设置为FALSE-选填

variables: 指定测试用例的公共变量,每个测试步骤都可以引用未在步骤变量中设置的配置变量
换句话说步骤变量比配置变量具有更高的优先级-选填 export: 早期版本是output,指定导出的测试用例会话变量,把变量暴露处理设为全局变量-选填
teststeps
yaml中testsetps步骤参数,testsetps是一个list,可以有多个步骤

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

base_url是部署环境地址
部署环境地址和端口是有可能会变,如test、uat、pre环境等
config:
name: 登录用例 teststeps:
-
name: step-登录
request:
url: http://xxx.com/v1/login/
如上所示,request参数中url是整体的请求地址,如果我们下面有多个步骤要更改或者请求环境更改就需要修改全部步骤的url
我们可以配置base_url来实现简单操作,如下,有需要变更直接修改base_url地址,config中设置了base_url,teststpe中值需要写接口相对路径
config:
name: 登录用例
base_url: http://xxx.com teststeps:
-
name: step-登录
request:
url:/v1/login/
如果config设置了base_url,但是下面的接口步骤中的url写了绝对路径,也可以请求成功,不会冲突
 如果config base_url之后没有其他的请求路径,那么在request中可以 url: /,但是不可以不写
variables变量声明与引用
  • teststeps中变量对当前step有效
  • config中变量在整个yaml中都生效
 
局部变量
在teststeps中,使用variables声明局部变量,格式也是键值对
然后当前步骤调用,使用$变量名进行调用,每个步骤中的variables只对当前步骤有效
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中使用variables声明全局变量,格式也是键值对
在config声明的全局变量,下方所有步骤都可以调用
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]
如果局部变量和全局变量有同名变量,那么优先级局部变量>全局变量
validate校验结果
使用jmespath提取json响应正文并使用预期值进行验证
-jmes_path:jmespath表达式

-expect:预期值,这里也可以使用指定的预期值、变量或函数引用
-message消息(可选):用于指示断言错误原因

httprunner请求源码片段

    resp_obj_meta = {
"status_code": self.status_code,
"headers": self.headers,
"cookies": self.cookies,
"body": self.body,
}
我们使用httprunner成功请求一个接口,会返回四个字段
status_code :请求状态码
headers:请求头
cookies:请求cookies
body:响应正文,一般是json格式
我们根据上述格式进行验证
jmes_path表达式,expect预期值,message消息(可选)断言失败原因
# 简单示例
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
upload
upload关键字专门用于文件上传

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用例结构的更多相关文章

  1. httprunner学习9-完整的用例结构(yaml&json)

    前言 前面几篇零散的学了一些httprunner的知识点,那么一个完整的 YAML/JSON 用例文件包含哪些关键字呢? 测试用例结构 在 HttpRunner 中,测试用例组织主要基于三个概念: 测 ...

  2. HttpRunner学习2--用例格式和简单使用

    前言 HttpRunner中,测试用例支持两种文件格式:YAML 和 JSON.两种格式的用例是完全等价的,对于相同的信息内容,使用 YAML /JSON 得到的测试结果和报告也是一致的. 本人环境: ...

  3. 使用Python写yaml用例

    1.打开cmd,进入本机安装python的目录,执行   pip install pyyaml ,安装pyyaml第三方包. 2.在Pycharm中新建一个项目(已有的话就不需要啦) 新建yaml文件 ...

  4. 【HttpRunner v3.x】笔记 ——4. 测试用例-结构解析

    一.官方首推pytest格式 上篇文章我们知道了,httprunner可以支持三种格式的用例,分别是pytest.yaml和json.yaml和json是以前的版本所使用的用例格式,但是在3.x版本上 ...

  5. HttpRunner学习11--指定用例运行次数

    前言 在HttpRunner中,一般情况下,我们写的用例脚本都是每次运行一次,如果我们想要指定用例运行的次数,可以通过 times 关键字来实现. 测试场景 在这里,我们以访问 TesterHome ...

  6. httprunner(8)用例调用-RunTestCase

    前言 一般我们写接口自动化的时候,遇到复杂的逻辑,都会调用API方法来满足前置条件,Pytest的特性是无法用例之间相互调动的,我们一般只调用自己封装的API方法. 而httprunner支持用例之间 ...

  7. 基于HttpRunner的接口自动化测试平台HttpRunnerManager(二)

    https://github.com/HttpRunner/HttpRunnerManager HttpRunnerManager Design Philosophy 基于HttpRunner的接口自 ...

  8. HttpRunner学习3--extract提取数据和引用

    前言 在HttpRunner中,我们要想从当前 HTTP 请求的响应结果中提取参数,可以通过 extract 关键字来实现. 本人环境:HttpRunner V1.5.8 测试场景 在这里,我将以一个 ...

  9. HttpRunner学习10--hook机制

    前言 对于使用过 Python结合Unittest 框架来做自动化测试的同学,应该知道在 Unittest 中,有这样2个方法:setUp() 和 tearDown() ,即前置和后置操作.通常 se ...

随机推荐

  1. leetcode之二叉树

    专题:二叉树遍历 987. 二叉树的垂序遍历 给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列. 对位于 (row, col) 的每个结点而言,其左右子结点分别位于 (row ...

  2. 操作系统学习笔记5 | 用户级线程 && 内核级线程

    在上一部分中,我们了解到操作系统实现多进程图像需要组织.切换.考虑进程之间的影响,组织就是用PCB的队列实现,用到了一些简单的数据结构知识.而本部分重点就是进程之间的切换. 参考资料: 课程:哈工大操 ...

  3. 通过宏封装实现std::format编译期检查参数数量是否一致

    背景 std::format在传参数量少于格式串所需参数数量时,会抛出异常.而在大部分的应用场景下,参数数量不一致提供编译报错更加合适,可以促进我们更早发现问题并进行改正. 最终效果 // 测试输出接 ...

  4. windows优化原神

    原神3.0新地图很卡顿? 锐距显卡带不动? 看一下我的配置 英特尔i5-1135G7 内存16GB可以拓展32GB 固态512GB 原神优化前帧率50左右 优化后59-60最差55 展示图原神设置图 ...

  5. .NET 7 性能改进 -- 至今为止最快的.NET平台

    2022年8月31日 Stephen Toub 发布的关于 .NET 7 性能改进的博客, 核心主题是 .NET 7 速度很快. 这篇博客非常的长,我尝试将它拷贝到Word 里,拷贝的时间都花了几分钟 ...

  6. iOS 集成WebRTC相关知识点总结

    前言 本文主要是整理了使用WebRTC做音视频通讯时的各知识点及问题点.有理解不足和不到位的地方也欢迎指正. 对于你感兴趣的部分可以选择性观看. WebRTC的初始化 在使用WebRTC的库之前,需要 ...

  7. 第七十七篇:ref引用(在vue中引用组件实例)

    好家伙, 为方便理解, 我们先来写一个经典自增一按钮, 再加上一个count清零按钮, Left.vue组件中: <template> <div > <h1>我是L ...

  8. .NET使用StackTrace获取方法调用者信息

    前言 在日常工作中,偶尔需要调查一些诡异的问题,而业务代码经过长时间的演化,很可能已经变得错综复杂,流程.分支众多,如果能在关键方法的日志里添加上调用者的信息,将对定位问题非常有帮助. 介绍 Stac ...

  9. C#实现HTTP访问类HttpHelper

    在项目开发过程中,我们经常会访问第三方接口,如我们需要接入的第三方接口是Web API,这时候我们就需要使用HttpHelper调用远程接口了.示例中的HttpHelper类使用Log4Net记录了每 ...

  10. Macos下用pycharm运行django项目死活安装不上mysqlclient怎么办!!??

    花了我三天时间,佛了 我刚从win过渡到mac,想着把代码迁移一下. 然后看到依赖里面有一个mysqlclient,然后pip3 install死活装不上 解决方案: 在这里写上这个 然后就好,死了