首页 > 其他分享 >pytest + yaml 框架 -62.执行yaml和json2种格式用例

pytest + yaml 框架 -62.执行yaml和json2种格式用例

时间:2024-04-18 16:56:26浏览次数:26  
标签:用例 18 json 41 2024 yaml 62 test eq

前言

v1.5.7版本开始新增json格式用例支持,本次版本改动内容

  • 1.支持 .json 文件用例
  • 2.优化日志中文件后缀名称.yml .yaml .json
  • 3.ruamel.yaml 版本兼容0.18.6

yaml 格式用例

yaml 格式用例示例,test_a.yml

test_demo:
  name: post
  request:
    method: POST
    url: http://httpbin.org/post
    json:
      username: test
      password: "123456"
  extract:
      url:  body.url
  validate:
    - eq: [status_code, 200]
    - eq: [headers.Server, gunicorn/19.9.0]
    - eq: [$..username, test]
    - eq: [body.json.username, test]

执行用例

pytest test_a.yml

json 格式用例

前面的yaml 格式用例,等价于以下json格式用例,test_x.json

{
  "test_demo": {
    "name": "post",
    "request": {
      "method": "POST",
      "url": "http://httpbin.org/post",
      "json": {
        "username": "test",
        "password": "123456"
      }
    },
    "extract": {
      "url": "body.url"
    },
    "validate": [
      {"eq": ["status_code", 200]},
      {"eq": ["headers.Server", "gunicorn/19.9.0"]},
      {"eq": ["$..username", "test"]},
      {"eq": ["body.json.username", "test"]}
    ]
  }
}

执行用例

pytest test_x.json

运行报告日志

collected 1 item                                                                                                   

test_x.json::test_demo
-------------------------------------------------- live log call --------------------------------------------------
2024-04-18 16:41:20 [INFO]: 执行文件-> test_x.json
2024-04-18 16:41:20 [INFO]: base_url-> http://124.70.221.221:8201
2024-04-18 16:41:20 [INFO]: config variables-> {}
2024-04-18 16:41:20 [INFO]: 运行用例-> test_demo
2024-04-18 16:41:20 [INFO]: 用例步骤name: post
2024-04-18 16:41:20 [INFO]: yml raw  -->: {'method': 'POST', 'url': 'http://httpbin.org/post', 'json': {'username':
'test', 'password': '123456'}}
2024-04-18 16:41:20 [INFO]: ------  request info   ------
POST http://httpbin.org/post
headers: {
    "User-Agent": "python-requests/2.31.0",
    "Accept-Encoding": "gzip, deflate",
    "Accept": "*/*",
    "Connection": "keep-alive"
}
json: {
    "username": "test",
    "password": "123456"
}
2024-04-18 16:41:21 [INFO]: ------  response info   ------
url: http://httpbin.org/post
status_code: 200 OK
headers: {
    "Date": "Thu, 18 Apr 2024 08:41:21 GMT",
    "Content-Type": "application/json",
    "Content-Length": "542",
    "Connection": "keep-alive",
    "Server": "gunicorn/19.9.0",
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Allow-Credentials": "true"
}
cookies: {}
body: {
    "args": {},
    "data": "{\"username\": \"test\", \"password\": \"123456\"}",
    "files": {},
    "form": {},
    "headers": {
        "Accept": "*/*",
        "Accept-Encoding": "gzip, deflate",
        "Content-Length": "42",
        "Content-Type": "application/json",
        "Host": "httpbin.org",
        "User-Agent": "python-requests/2.31.0",
        "X-Amzn-Trace-Id": "Root=1-6620dcb1-4aeba72a487a44e00566071c"
    },
    "json": {
        "password": "123456",
        "username": "test"
    },
    "origin": "183.193.25.182",
    "url": "http://httpbin.org/post"
}

2024-04-18 16:41:21 [INFO]: extract  提取对象-> {'url': 'body.url'}
2024-04-18 16:41:21 [INFO]: extract  提取结果-> {'url': 'http://httpbin.org/post'}
2024-04-18 16:41:21 [INFO]: validate 校验内容-> [{'eq': ['status_code', 200]}, {'eq': ['headers.Server', 'gunicorn/1
9.9.0']}, {'eq': ['$..username', 'test']}, {'eq': ['body.json.username', 'test']}]
2024-04-18 16:41:21 [INFO]: validate 校验结果-> eq: [200, 200]
2024-04-18 16:41:21 [INFO]: validate 校验结果-> eq: [gunicorn/19.9.0, gunicorn/19.9.0]
2024-04-18 16:41:21 [INFO]: validate 校验结果-> eq: [test, test]
2024-04-18 16:41:21 [INFO]: validate 校验结果-> eq: [test, test]
PASSED                                                                                                       [100%]

================================================ 1 passed in 0.90s ==

之前教程全是yaml格式用例,有部分同学反馈不太习惯yaml格式,所以新增了json格式的用例。

标签:用例,18,json,41,2024,yaml,62,test,eq
From: https://www.cnblogs.com/yoyoketang/p/18143839

相关文章

  • 今天在集群中创建yaml,使用create就创建成功,apply就创建失败原因分析。
    1.背景:今天在集群中搭建Prometheus监控,在使用kubectlapply-f[文件名]时,出现了报错,我对集群资源、命名空间、权限等进行一系列排查,甚至在没部署任何服务新集群部署该服务依旧显示部署失败。第一次使用kubectlapply-f文件命显示报错。#kubectlapply-fsetup/custo......
  • Keil编译遇到L6286E错误
    在使用Keil(版本为uVisionV5.38.0.0)编译工程的时候碰到了一个报错:Error:L6286E:Relocation#REL:0incm0dasm.o(.text)withrespectto__main.Value(0xfffffffa)outofrange(0-0xff)for(R_ARM_THM_PC8)启动汇编代码如下所示Reset_HandlerPROCGLOBALReset......
  • 2024-4-15 rpm与yum安装及管理程序 162004
    rpm与yum安装及管理程序目录rpm与yum安装及管理程序一、Linux应用程序基础1.1、应用程序与系统命令的关系1.2、典型应用程序的目录结构1.3、常见的软件包封装类型二、RPM包管理工具2.1一般命名格式2.2rpm命令的格式2.3安装卸载升级三.yum3.1基本格式3.2安装本地yum仓库四:编译......
  • 黑盒测试用例设计技术-语法测试原则及案例
    语法测试用例设计原则选项导出原则:当语法规则强制选择时,为该选择的每个备选方案导出一个测试用例(“选项”)。最小与最大重复次数原则:当语法规则强制执行最小重复次数时,应为此导出至少两个测试用例:一个满足最小重复次数,另一个不满足(小于最小重复次数)。当语法规则允许最大重复......
  • [题解]P1629 邮递员送信
    好久不写图论题了,Dijkstra都花了好长时间捡起来……之前也没有接触过反图的概念。这个题算是我重拾图论知识以来的第一题了。__φ(..)P1629邮递员送信Dijkstra是单源最短路的算法。但这个题除了要求节点\(1\)到其他节点的距离,还要知道其他节点回到节点\(1\)的距离。如果我们每个......
  • 自己编写测试用例的思路
    题目将数组(1<=n<=100)中的每个整数循环右移m(m>=0)个位置输入:占二行,其中第1行:n和m两个数,n和m之间用空格分隔。第2行:数组A中的n个数,各数之间用空格分隔(第一个数之前和最后一个数之后无空格)。输出:占一行,数据间用一个空格分隔(第一个数之前和最后一个数之后无空格)。样例:1051......
  • CF1626E Black and White Tree
    CF1626EBlackandWhiteTree换根dp树上路径行走问题,因其节点的转移不止于其子树有关,一般考虑换根dp或寻找新的转移顺序。在这题里,考虑一个以\(i\)为点的子树,判断\(i\)是否可以走到子树中某个黑点,设\(f_u\)表示\(u\)能否走到黑点,枚举儿子\(v\),有三种满足方式:\(......
  • lc162 寻找峰值(二分法)
      二分法找部分有序数组题class Solution {    public int findPeakElement(int[] nums) {     int left=0;     int right=nums.length-1;     while(left<right){//因为这道题需要用mid和mid+1比较,所以左右不可以相等否则mid+1会越界  ......
  • 2-62. 工具栏按钮快捷键
    目标实现按键盘快速选择工具栏上的东西添加ActionBarButton设置key其中Slot_Bag是Alpha1,Slot_Bag(1)是Alpha2,……项目相关代码代码仓库:https://gitee.com/nbda1121440/farm-tutorial.git标签:20240411_1248......
  • 【NC214362】第 k 小
    题目第k小堆(优先队列)思路这道题是求一个数据流中的第kkk小数,我们可以维护一个大根堆,堆的容量为k......