首页 > 其他分享 >【pytest】基于钩子函数与conftest实现多套环境切换

【pytest】基于钩子函数与conftest实现多套环境切换

时间:2023-11-27 22:25:22浏览次数:34  
标签:envrion URL 钩子 conftest pytest env test config

  • 项目路径
  • config.py
from utils.connect_mysql import DbConnect

class BaseConfig:
    VERSION = "v1.0"
    EMAIL = "[email protected]"
    APPID = "10086"


class TestConfig(BaseConfig):
    BASE_URL = "http://xxxx:8201"
    DB_INFO = {
        "host": "testhost",
        "user": "root",
        "password": "123456",
        "port": 3306,
    }
    # db = DbConnect(DB_INFO)
    # db2 = DbConnect(DB_INFO)
    USERNAME = "test"
    PASSWORD = "123456"
    # 全局的配置


class UatConfig(BaseConfig):
    BASE_URL = "http://xxx:8200"
    DB_INFO = {
        "host": "UAThost",
        "user": "root",
        "password": "123456",
        "port": 3309,
    }

    USERNAME = "test1"
    PASSWORD = "1234568"

env = {
    "test": TestConfig,
    "uat": UatConfig
}
  • conftest.py
"""本地插件 钩子
pytest_addoption   注册ini 和 命令行参数
"""

import pytest
from config.config import env

def pytest_addoption(parser):
    parser.addini("env", help="env config for the application under test.")
    parser.addoption(
        "--env",
        default=None,
        action="store",
        help="env config for the application under test.",
    )


@pytest.fixture(scope="session")
def envrion(request):
    """Return a base URL"""
    config = request.config
    cmd = config.getoption("--env") or config.getini('env')
    if cmd:
        print(f"env dict: {env}")
        return env.get(cmd)

@pytest.fixture(scope="session")
def base_url(envrion):
    """覆盖原来 pytest-base-url 这个插件"""
    return envrion.BASE_URL
  • pytest.ini
[pytest]

;base_url = http://xxxx:8201

python_files = xwl_*.py test_*.py *_test.py
python_functions = test_* demo_*
python_classes = Test* Demo*

markers =
    smoke: smoke test case
    fast: fast test case

env = test
  • 使用
import pytest

def test_a(envrion):
    print(f'env: {envrion}')
    print(f'BASE_URL: {envrion.BASE_URL}')
    print(f'BASE_URL: {envrion.USERNAME}')
    print(f'BASE_URL: {envrion.PASSWORD}')

标签:envrion,URL,钩子,conftest,pytest,env,test,config
From: https://www.cnblogs.com/xwltest/p/17860634.html

相关文章

  • [机翻]Fun With Another PG-Compliant Hook/另一个符合 PG 标准的钩子的乐趣
    原文链接:https://revers.engineering/fun-with-pg-compliant-hook/目录Overview/概述CommonHookPointsinWindowsKernel/Windows内核中的常见钩子点TheHalPrivateDispatchTableTargetDiscovery/目标发现DIY…MOSTLYDIY.../主要δLocatingHalPrivateDispatchTable/......
  • 【接口自动化测试实战】python+requests+Pytest+yaml+Allure
    前言一、先来了解下pytest二、需要具备的基础知识三、开发环境准备四、接口自动化实战(设计项目目录)五、方法封装六、编写自动化用例脚本七、持续集成八、其他自动化框架......
  • 关键字 开发-01 pytest收集yaml用例
    1.pytest收集测试用例规则pytest框架在收集用例的时候,默认会查找test_开头的.py模块,并且在模块中找到test_开头的函数或Test开头的类。根据这个规则,如果我们想收集yaml格式的文件当用例执行,需解决2个问题:1.修改用例收集规则,改成收集yaml格式文件作为收集的目标2.将yaml文件......
  • python+pytest写测试用例后置清理数据操作
    一、teardown_function函数是为了在每个测试函数def执行后进行数据清理。#引入DbConnect类或者确保它已经被定义fromyour_db_moduleimportDbConnectdefteardown_function():try:print("后置操作-做数据清理,把批注通知删掉")db......
  • pytest---通过hooks获取用例执行结果(pytest_runtest_makereport )
    前言测试用例在执行完成后,想要获取测试用例的执行结果,可以通过hooks(钩子函数)来进行获取,其中pytest中就存在多个hooks的函数供我们使用,或者进行二次开发,从而完成我们想要的功能pytest_runtest_makereportpytest_runtest_makereport是pytest中提供的方法,我们可以通过获取用例的......
  • pytest日志配置
    pytest默认输出日志如下: 为了让日志看起来更加舒服,我们可以在pytest.ini文件中增加如下配置#是否开启日志true/falselog_cli=true#过滤日式级别log_cli_level=info#输出信息log_cli_format=%(asctime)s[%(levelname)s]%(message)s(%(filename)s:%(lineno)s......
  • 解决执行pytest -vs test.py报错问题
    报错如下:解决方案:在终端中执行python-mpytest+后面你想运行的命令,如下:python-mpytesttest.py......
  • 软件测试|详解 Pytest 参数化:简化测试用例的编写
    简介Pytest是一个广泛使用的Python测试框架,它提供了丰富的功能来编写和执行测试用例。其中一个强大的特性是参数化,它允许我们通过一种简洁的方式运行多个输入参数的相似测试用例,从而减少冗余的代码。本文将详细介绍Pytest的参数化功能以及如何使用它来简化测试用例的编写。......
  • 软件测试|Windows系统配置pytest+allure环境教程
    前言allure可以输出非常精美的测试报告,也可以和pytest进行完美结合,不仅可以渲染页面,还可以控制用例的执行。本文我们将介绍Windows系统中如何配置allure环境。第一步:配置Java环境因为allure的运行依赖于Java环境,所以我们需要先配置好Java环境,allure需要的Java环境为:JDK1.8+,配置......
  • Python+PlayWright+ Pytest + Allure 自动化学习路线
    前言对于自己写过文章的总结,并不代表最好的学习路线还未完结,努力更新中ing建议把每节的实战演练做一下 PlayWrightPlayWright-环境安装PlayWright-如何使用playwrighPlayWrigh-同步和异步运行PlayWright-深入异步PlayWright-元素定位PlayWright-文本输......