首页 > 其他分享 >pytest + yaml 框架 -68.新增全局请求参数配置verify和headers

pytest + yaml 框架 -68.新增全局请求参数配置verify和headers

时间:2024-04-22 12:33:34浏览次数:20  
标签:INFO 22 04 yaml verify 2024 headers test 14

前言

最近有小伙伴提到如何全局添加请求参数verify=False 和 全局请求添加头部参数如:{"x-token": "xxx"}
之前的版本可以用fixture解决,v1.5.8版本可以支持在config中配置

fixture 更新全局请求

第一种解决方案,通过fixture来更新全局session会话

import pytest


@pytest.fixture(scope="session", autouse=True)
def auto_add_args(requests_session):
    # 全局更新verify = False
    requests_session.verify = False
    # 全局更新头部参数headers
    requests_session.headers.update({"x-token": "xxxxx"})

config中配置全局请求参数

config配置中,目前仅支持verify 和 headers 2个请求相关参数的配置

from pytest_yaml_yoyo.db import ConnectMysql


class Config:
    """每个环境都有一样的公共配置"""
    version = "v1.0"


class TestConfig(Config):
    """测试环境"""
    BASE_URL = 'http://124.70.221.221:8201'
    BLOG_URL = 'https://www.cnblogs.com'
    USERNAME = 'test9'
    PASSWORD = '123456'

    verify = False
    headers = {"xx-token": "xx111"}


class UatConfig(Config):
    """联调环境"""
    BASE_URL = 'http://124.70.221.221:8201'
    USERNAME = 'test_uat'
    PASSWORD = '123456'


# 环境关系映射,方便切换多环境配置
env = {
    "test": TestConfig,
    "uat": UatConfig
}

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

运行日志

>pytest test_a.yml
================================================== test session starts ==================================================
platform win32 -- Python 3.9.13, pytest-7.4.4, pluggy-1.0.0
rootdir: D:\demo\untitled3.9
configfile: pytest.ini
plugins: allure-pytest-2.13.1, Faker-18.4.0, repeat-0.9.1, rerunfailures-12.0, runtime-yoyo-1.0.1, yaml-yoyo-1.5.8
collected 1 item                                                                                                         

test_a.yml::test_demo
----------------------------------------------------- live log call -----------------------------------------------------
2024-04-22 12:14:17 [INFO]: 执行文件-> test_a.yml
2024-04-22 12:14:17 [INFO]: base_url-> http://124.70.221.221:8201
2024-04-22 12:14:17 [INFO]: config variables-> {}
2024-04-22 12:14:17 [INFO]: 运行用例-> test_demo
2024-04-22 12:14:17 [INFO]: 用例步骤name: post
2024-04-22 12:14:17 [INFO]: yml raw  -->: {'method': 'POST', 'url': 'http://httpbin.org/post', 'json': {'username': 'test'
, 'password': '123456'}}
2024-04-22 12:14:17 [INFO]: ------  request info   ------
POST http://httpbin.org/post
headers: {
    "User-Agent": "python-requests/2.31.0",
    "Accept-Encoding": "gzip, deflate",
    "Accept": "*/*",
    "Connection": "keep-alive",
    "x-token": "xxxxx"
}
json: {
    "username": "test",
    "password": "123456"
}
2024-04-22 12:14:18 [INFO]: ------  response info   ------
url: http://httpbin.org/post
status_code: 200 OK
headers: {
    "Date": "Mon, 22 Apr 2024 04:14:17 GMT",
    "Content-Type": "application/json",
    "Content-Length": "567",
    "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-6625e418-5610a93047c129fe3a7e1d84",
        "X-Token": "xxxxx"
    },
    "json": {
        "password": "123456",
        "username": "test"
    },
    "origin": "183.193.25.182",
    "url": "http://httpbin.org/post"
}

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

=================================================== 1 passed in 1.21s =

标签:INFO,22,04,yaml,verify,2024,headers,test,14
From: https://www.cnblogs.com/yoyoketang/p/18150402

相关文章

  • pytest + yaml 框架 -62.执行yaml和json2种格式用例
    前言v1.5.7版本开始新增json格式用例支持,本次版本改动内容1.支持.json文件用例2.优化日志中文件后缀名称.yml.yaml.json3.ruamel.yaml版本兼容0.18.6yaml格式用例yaml格式用例示例,test_a.ymltest_demo:name:postrequest:method:POSTurl:http:......
  • 今天在集群中创建yaml,使用create就创建成功,apply就创建失败原因分析。
    1.背景:今天在集群中搭建Prometheus监控,在使用kubectlapply-f[文件名]时,出现了报错,我对集群资源、命名空间、权限等进行一系列排查,甚至在没部署任何服务新集群部署该服务依旧显示部署失败。第一次使用kubectlapply-f文件命显示报错。#kubectlapply-fsetup/custo......
  • 继续记录mdt+wds的bug Verify BCDBootEx
    简介配置又出错了从来没想过,居然有这么多错。巨硬啊。难啃啊。Windows10deploymentsfailwithMicrosoftDeploymentToolkitoncomputerswithBIOStypefirmware-MicrosoftSupport使用MDT部署BISO系统时,Operatingsystemdeploymentdidnotcompletesuccessfull......
  • Spring Boot、Nacos配置文件properties、yml、yaml的优先级
    在标准的SpringBoot应用中,本地配置加载顺序如下:bootstrap.yamlbootstrap.propertiesbootstrap-{profile}.yamlbootstrap-{profile}.propertiesapplication.yamlapplication.propertiesapplication-{profile}.yamlapplication-{profile}.propertiesnacos配置中心共享......
  • yaml配置文件
    参考:https://blog.csdn.net/weixin_62221994/article/details/132612140一、YAML概述YAML全称是YAMLAin'tMarkupLanguage。YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如:C......
  • 探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较
    1.数据格式介绍数据格式是用于组织和存储数据的规范化结构,不同的数据格式适用于不同的场景。常见的数据格式包括JSON、YAML、XML、CSV等。数据可视化|一个覆盖广泛主题工具的高效在线平台(amd794.com)https://amd794.com/jsonformat2.JSON(JavaScriptObjectNotation)......
  • 【Python系列】Python 中 YAML 文件与字典合并的实用技巧
    ......
  • python reqeusts 请求时headers指定content length后 请求不响应
    解释:HTTP头部中的Content-Length字段表示请求体的大小,用字节来表示。当你在使用Python的requests库进行请求时,如果你手动设置了Content-Length,但实际发送的请求体大小与Content-Length头部声明的大小不一致,服务器可能会认为这是一个无效的请求或者导致连接超时,因此服务器不会响应......
  • 【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现
    文章目录引入认识YAML格式规范定义脱敏规则格式脱敏逻辑实现读取YAML配置文件获取脱敏规则通过键路径获取对应字段规则原始优化后对数据进行脱敏处理递归生成字段对应的键路径脱敏测试完整工具类引入在项目中遇到一个需求,需要对交易接口返回结果中的指定字段......
  • Ansible报错:Failed to parse /etc/ansible/hosts with yaml plugin
    早上接到同事反馈说Grafana某个监控图表点击后反应很慢,其他的图表都正常,只有这一张图表很慢。经过和大数据部门同事的沟通,发现应该是从大数据系统推送出来的数据有点问题,需要联合Grafana机器进行调试,询问我Grafana部署在哪台机器上。由于公司不同区域都有一套Prometheus+Grafana......