gpt4 book ai didi

python - 如何在 pytest 中的 conftest.py 文件中传递命令行选项值

转载 作者:太空宇宙 更新时间:2023-11-03 20:45:11 28 4
gpt4 key购买 nike

我正在尝试创建一个结构,用户在运行 pytest 时给出命令行选项值,并在内部使用 conftest.py 文件中的该值来决定测试应该运行哪些数据。

我的conftest.py 文件位于测试根文件夹内。我正在尝试提取用户给出的命令行值并将其传递给设备,而设备又由测试使用。

conftest.py:

import json
import pytest
from src.Utils.TestUtils import TestUtils


post_body = TestUtils.get_json_data_from_file('PositiveSets.json')
post_body = json.loads(post_body)

testType = ''


def pytest_addoption(parser):
parser.addoption(
"--cmdopt", action="store", default="regression", help="my option: smoke or regression"
)

@pytest.fixture
def cmdopt(request):
return request.config.getoption("--cmdopt")

# @pytest.mark.usefixtures('cmdopt')
def test_answer(cmdopt):
if cmdopt == "smoke":
return testType == "smoke"
elif cmdopt == "regression":
return testType == "regression"

# testType still has empty string as its value
@pytest.fixture(scope='class', params=post_body['sets_data'][testType])
def TCM_data(request):
return request.param

测试.py:

@pytest.mark.usefixtures('TCM_data')
@pytest.fixture(params=response_body["status_code"])
def TCM_response(request):
return request.param

def test_tcm_1(TCM_data):
global post_body
global setId
post_data = json.dumps(TCM_data)

response = tcm.post_TCM_enrollment(post_data)
assert_valid_schema(response.text, "ValidationSchema.json")

问题是我没有看到用户通过命令行传递的值在 conftest.py 文件中使用,因为 testType 变量仍然具有空字符串值。非常感谢任何帮助。

最佳答案

我认为这就是你的情况:How to read/process command line arguments?

示例:

from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument("-f", "--file", dest="filename", help="write report to FILE", metavar="FILE")
parser.add_argument("-q", "--quiet", action="store_false", dest="verbose", default=True, help="don't print status messages to stdout")

args = parser.parse_args()

关于python - 如何在 pytest 中的 conftest.py 文件中传递命令行选项值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654521/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com