前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytest + yaml 框架 -68.新增全局请求参数配置verify和headers

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

作者头像
上海-悠悠
发布于 2024-04-25 08:40:55
发布于 2024-04-25 08:40:55
22601
代码可运行
举报
运行总次数:1
代码可运行

前言

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

fixture 更新全局请求

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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个请求相关参数的配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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]

执行用例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pytest test_a.yml

运行日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>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 =
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
pytest + yaml 框架 - 1.我们发布上线了!
基于 httprunner 框架的用例结构,我自己开发了一个pytest + yaml 的框架,那么是不是重复造轮子呢? 不可否认 httprunner 框架设计非常优秀,但是也有缺点,httprunner3.x的版本虽然也是基于pytest框架设计,结合yaml执行用例,但是会生成一个py文件去执行。 在辅助函数的引用也很局限,只能获取函数的返回值,不能在yaml中对返回值重新二次取值。 那么我的这个框架,就是为了解决这些痛点。。。。
上海-悠悠
2023/01/03
1.1K0
pytest + yaml 框架 - 1.我们发布上线了!
pytest + yaml 框架 -4.用例参数化parameters功能实现
当一个用例用到多组测试数据的时候,我们必然会用到参数化,接下来看下如何在yaml文件中实现参数化
上海-悠悠
2023/01/03
7820
pytest + yaml 框架 - 2.extract 提取结果与接口之间的参数关联
在自动化用例中,我们经常会看到有人提问,上一个接口的返回的结果,如何取出来给到下个接口的入参。 我们用 extract 关键字提取接口的返回结果。
上海-悠悠
2023/01/03
1.4K0
pytest + yaml 框架 -7.用例分层机制
当我们测试流程类的接口,需反复去调用同一个接口,就会想到复用API,在代码里面可以写成函数去调用。 那么在yaml 文件中,我们可以把单个API写到一个yaml 文件,测试用例去调用导入API。
上海-悠悠
2023/01/03
3630
pytest + yaml 框架 -7.用例分层机制
pytest + yaml 框架 - 3.全局仅登录一次,添加Authentication token认证
我们在使用自动化测试框架的时候,经常会遇到一个需求,希望在全局用例中,仅登录一次,后续所有的用例自动带上请求头部token 或者cookies。
上海-悠悠
2023/01/03
1.1K1
pytest + yaml 框架 - 3.全局仅登录一次,添加Authentication token认证
pytest + yaml 框架 - 70.Pycharm 设置 yaml 格式用例模板,高效写用例
初学者对yaml 格式不太熟悉,自己写yaml用例的时候,总是格式对不齐,或者有些关键字会忘记。 于是我们可以在pycharm上设置用例模块,通过快捷方式调用出对应的模块,达到高效写用例的目的。
上海-悠悠
2024/06/08
3930
pytest + yaml 框架 - 70.Pycharm 设置 yaml 格式用例模板,高效写用例
pytest + yaml 框架 -62.支持yaml和json2种格式用例
之前教程全是yaml格式用例,有部分同学反馈不太习惯yaml格式,所以新增了json格式的用例。
上海-悠悠
2024/04/19
1850
pytest + yaml 框架 -62.支持yaml和json2种格式用例
pytest-yaml 测试平台-2.支持上传YAML格式用例
pytest-yaml 测试平台用例结构是遵循 pytest-yaml-yoyo 框架用例规则。 如果你之前已经有用 pytest-yaml-yoyo 框架完成了 yaml 用例的编写,可以直接在平台上导入 yaml 用例。
上海-悠悠
2023/10/25
3050
pytest-yaml 测试平台-2.支持上传YAML格式用例
pytest + yaml 框架 -15.fixtures 功能使用
前面讲到全局只登录一次,全部的yaml 用例都会公用一个请求会话。 那有些接口不需要登录怎么办呢?比如登录和注册的接口,是不需要带上登录 token 的。 我除了默认用到一个 requests_session 全局的内置 fixture,还预留了2个
上海-悠悠
2023/01/03
8690
pytest-yaml 测试平台-1.新增项目和用例
基于pytest-yaml-yoyo 框架写的接口测试平台,在web网页平台上维护yaml测试用例,执行用例,并查看allure报告。
上海-悠悠
2023/10/25
3680
pytest-yaml 测试平台-1.新增项目和用例
pytest + yaml 框架 -41.postman 和 python代码自动录制成yaml用例
python代码 和postman 写的接口也能通过录制功能自动生成yaml格式用例了。
上海-悠悠
2023/08/22
3080
pytest + yaml 框架 -41.postman 和 python代码自动录制成yaml用例
pytest + yaml 框架 -13.多环境配置切换
当我们在测试环境写好自动化的代码,领导说你把代码部署到联调环境再测一测,这时候去改用例里面的配置是很痛苦的。 所以我们在设计自动化用例的时候,就先要想到多环境的配置与切换。
上海-悠悠
2023/01/03
8450
pytest + yaml 框架 -39.新增--start-project命令快速创建项目demo结构
新增 --start-project 命令, 帮助初学者快速创建项目 demo 结构, 并自动创建几个简单的用例。 创建项目demo结构
上海-悠悠
2023/08/22
2010
pytest + yaml 框架 -39.新增--start-project命令快速创建项目demo结构
pytest + yaml 框架 -6.hooks 钩子功能实现
在发送请求的时候,我们希望在发送请求参数前,带上签名的值,或者返回的内容需要二次处理,解密后返回。 此功能我们可以用 hooks 钩子来实现 pip 安装插件
上海-悠悠
2023/01/03
3810
pytest + yaml 框架 -35.根据不同运行环境生成全局token
我们在使用自动化测试框架的时候,经常会遇到一个需求,希望在全局用例中,仅登录一次,后续所有的用例自动带上请求头部token 或者cookies。 我们可以自定义fixture 更新内置的 requests_session, 在请求头部添加token 来实现全局登录。 全局 token 实现
上海-悠悠
2023/08/22
2460
pytest + yaml 框架 -35.根据不同运行环境生成全局token
pytest + yaml 框架 -16.提供一些常用的内置函数和方法
使用方法:${fake.name()}, fake.phone_number(), fake.email() 等,具体查看Faker模块提供的方法https://www.cnblogs.com/yoyoketang/p/14869348.html
上海-悠悠
2023/01/03
6810
pytest + yaml 框架 -12.支持执行sql 和 断言sql
当我们在测试环境写好自动化的代码,领导说你把代码部署到联调环境再测一测,这时候去改用例里面的配置是很痛苦的。 所以我们在设计自动化用例的时候,就先要想到多环境的配置与切换。
上海-悠悠
2023/01/03
1.6K0
pytest + yaml 框架 -53.yaml 用例规范与全部关键字总结
v1.4.4 版本新增对yaml 用例格式校验,不合法的用例格式不会被执行,避免出现用例格式不合法导致的报错。
上海-悠悠
2023/08/22
3440
pytest + yaml 框架 -53.yaml 用例规范与全部关键字总结
httprunner 4.x学习 - 4.提取返回结果与校验(extract, validate)
HttpRunner4.x 支持 2 种响应结果字段提取方式:jmespath 表达式和 正则表达式(regex)
上海-悠悠
2023/08/22
4510
httprunner 4.x学习 - 4.提取返回结果与校验(extract, validate)
pytest-yaml 测试平台-5.平台实现用例分层API和用例层
在平台上可以添加API层和用例层,API层维护接口相关信息,用例层复用API层接口。
上海-悠悠
2024/01/29
2520
pytest-yaml 测试平台-5.平台实现用例分层API和用例层
推荐阅读
相关推荐
pytest + yaml 框架 - 1.我们发布上线了!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验