pytest--pytest.ini文件中如何添加其他参数

pytest.ini配置文件依赖pytest-base-url插件,插件实现的逻辑实际上就是通过addini注册一个参数,再去读取pytest.ini文件中写入的参数,如果pytest.ini中没有对应的参数,那么就使用默认的地址,再写成一个fixture,将读取到的内容return到对应fixture下。从而实现和base_url一样的功能

插件地址:https://pypi.org/project/pytest-base-url/

部分源码如下:

import os

import pytest


@pytest.fixture(scope="session")
def base_url(request):
    """Return a base URL"""
    config = request.config
    base_url = config.getoption("base_url")
    if base_url is not None:
        return base_url



def pytest_addoption(parser):
    parser.addini("base_url", help="base url for the application under test.")
    parser.addoption(
        "--base-url",
        metavar="url",
        default=os.getenv("PYTEST_BASE_URL", None),
        help="base url for the application under test.",
    )
    parser.addoption(
        "--verify-base-url",
        action="store_true",
        default=not os.getenv("VERIFY_BASE_URL", "false").lower() == "false",
        help="verify the base url.",
    )

未注册pytest.ini文件参数前调用配置文件中除了base_url外的其他参数

pytest.ini配置文件内容:

 毫无疑问fixture xxx not found

 ---测试注册pytest.ini配置文件的参数后,再在用例中调用,default默认的地址是https://baidu.com

import pytest


def pytest_addoption(parser):
    # 注册配置文件中参数
    parser.addini(
        "web", type=None, default='https://baidu.com/', help='pytest.ini配置文件中注册参数'
    )


@pytest.fixture(scope="function")
def web(request):
    web = request.config.getini('web')
    print("打印获取到pytest.ini配置文件中web参数的值:{}".format({request.config.getini("web")}))
    return web

执行case后的结果:

 可以看到用例在执行中是读到了pytest.ini配置文件中的web属性

 当配置文件中没有web这个参数的时候,默认就使用https://baidu.com

此时pytest.ini配置文件的配置:

 用例中运行后的结果:

 

posted @ 2022-04-11 16:44  夏大帅  阅读(315)  评论(0编辑  收藏  举报