来自带有夹具的命令行的 Pytest 参数

Pytest argument from command line with fixture

代码 : Test1.py

import pytest

@pytest.fixture(scope='session', autouse=True)
def tc_setup(start):
    if start == "20d":
        print('20d is sent')
    else:
        print('not in list')

def pytest_addoption(parser):
    parser.addoption('--start')

@pytest.fixture(scope='session', autouse=True)
def start(request):
    return request.config.getoption('--start')

从命令行

pytest -v test1.py --start=20d

也试过了,

pytest -v test1.py --start 20d

错误信息

ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: unrecognized arguments: --start=20d
  inifile: None

如何从命令行发送参数和pytest。 我是 运行 来自 bash shell 的 linux ubuntu 终端。

版本

pytest 7.1.0

以下是它对我的作用。创建了两个文件:conftest.pymyso_test.py。您基本上需要有一个 conftest 文件

conftest.py

import pytest


def pytest_addoption(parser):
    parser.addoption("--start")

@pytest.fixture(scope='session', autouse=True)
def start(request):
    return request.config.getoption("--start")

myso_test.py

import pytest

@pytest.fixture(scope='session', autouse=True)
def tc_setup(start):
    if start == "20d":
        print('20d is sent')
    else:
        print('not in list')

def test_var():
    assert True

运行命令:

pytest myso_test.py -s -v --start="20d"  

输出:

myso_test.py::test_var 20d is sent
PASSED

运行命令:

pytest myso_test.py -s -v --start="20dw"

输出:

myso_test.py::test_var not in list
PASSED