问题描述
我对pytest的一个命令行参数没有任何问题。
 
     当我运行程序时: 
 python -m pytest -q -v --confcutdir=/usr/local/penguin/home/px09/p001 --cmdopt=type1 test-suite.py 
我得到了预期的答复:
================================================ FAILURES ================================================
______________________________________________ test_answer _______________________________________________
cmdopt = 'type1'
    def test_answer(cmdopt):
        if cmdopt == "type1":
            print ("first")
        elif cmdopt == "type2":
            print ("second")
>       assert 0 # to see what was printed
E       assert 0
test-suite.py:7: AssertionError
------------------------------------------ Captured stdout call ------------------------------------------
first
======================================== 1 failed in 0.01 seconds ==============
 
  当我尝试多个参数时,我遇到了问题
test_sample.py的内容
def test_answer(cmdopt):
    if cmdopt == "type1":
        print ("first")
    elif cmdopt == "type2":
        print ("second")
    assert 0 # to see what was printed
def test_answer2(cmdopt2):
    if cmdopt2 == "type1":
        print ("first")
    elif cmdopt2 == "type2":
        print ("second")
    assert 0 # to see what was printed
  
   
  conftest.py的内容
import pytest
def pytest_addoption(parser):
    parser.addoption("--cmdopt", action="store", default="type1",
        help="my option: type1 or type2")
    parser.addoption("--cmdopt2", action="store", default="type3",
                     help="my option: type3 or type4")
@pytest.fixture
def cmdopt(request):
    return request.config.getoption("--cmdopt")
def cmdopt2(request):
    return request.config.getoption("--cmdopt2")
 
  _____________________________________设置test_answer2 _____________________________________文件/usr/local/penguin/home/px09/p001/test-suite.py,第9行def test_answer2(cmdopt2)时出错:找不到E夹具'cmdopt2'
>可用的固定装置:缓存,capfd,capsys,cmdopt,doctest_namespace,monkeypatch,pytestconfig,record_xml_property,rewarn,tmpdir,tmpdir_factory
>使用'pytest --fixtures [testpath]'寻求帮助。/usr/local/penguin/home/px09/p001/test-suite.py:9
================================================ FAILURES ================================================
______________________________________________ test_answer _______________________________________________
cmdopt = 'type1'
    def test_answer(cmdopt):
        if cmdopt == "type1":
            print ("first")
        elif cmdopt == "type2":
            print ("second")
>       assert 0 # to see what was printed
E       assert 0
test-suite.py:7: AssertionError
-
  
   
 1楼
 
     我认为问题很简单。 
     只需在cmdopt2函数之前添加@ pytest.fixture装饰器 
@pytest.fixture
def cmdopt(request):
return request.config.getoption("--cmdopt")
@pytest.fixture
def cmdopt2(request):
    return request.config.getoption("--cmdopt2")