在pytest中,如何使用命令行参数修改测试参数?

2024-04-19 12:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的测试中添加一个命令行参数,它对测试参数有影响(但不仅仅是影响)。因此,我在conftest.py中添加了一个选项:

def pytest_addoption(parser):
    parser.addoption("--target-name", action="store")

我知道如何使fixture依赖于命令行值,但不知道如何对测试参数执行此操作

@pytest.mark.parametrize(
    "target_specific_data", json.parse(open("target-%s.json" % target_name)))
def test_foo(target_specific_data):
      ...
      ...

我怎样才能用pytest做到这一点?你知道吗


Tags: 命令行namepyjsonparsertargetdata参数
1条回答
网友
1楼 · 发布于 2024-04-19 12:23:16

Pytest将参数值视为值列表。您可以创建一个函数,该函数将返回数据并在运行时在列表中分配给它们,或者使函数返回自己的列表,如下所示。你知道吗

你知道吗确认测试.py你知道吗

import os

def pytest_addoption(parser):
    parser.addoption(" target-name", action="store")

def pytest_configure(config):
    if config.getoption('target-name'):
        os.environ["target-name"] = config.getoption('target-name')

测试文件

import json
import pytest
import os

def get_test_param():
    return json.parse(open("target-{}.json".format(os.getenv('target-name')))

@pytest.mark.parametrize('target_specific_data', [get_test_param()]))
def test_foo(target_specific_data):
    pass

希望能有帮助!!你知道吗

相关问题 更多 >