【问题标题】:ValueError: option names already added pytestValueError:选项名称已添加 pytest
【发布时间】:2019-08-02 17:12:18
【问题描述】:
#conftest.py

include pytest
def pytest_addoption(parser):
   parcer.addoption("--add", action="append")

@pytest.fixture(scope='session')
def adding(request):
    name_value = request.config.option.add
    if name_value == "plus":
        arg1 = 1
        arg2 = 2
        return arg1, arg2

#addition.py

@mark.first
def test_Valid_US_Phone_Number_1(adding):
    val1, val2 = adding
    assert val1 + val2 == 3

运行命令

$pytest -m first plusplus.py --add plus

我收到以下错误,有人可以帮忙吗?

File "c:\users\g702823\appdata\local\continuum1\anaconda3\lib\site-packages\_pytest\config\argparsing.py", line 72, in addoption
self._anonymous.addoption(*opts, **attrs)

File "c:\users\g702823\appdata\local\continuum1\anaconda3\lib\site-packages\_pytest\config\argparsing.py", line 303, in addoption
raise ValueError("option names %s already added" % conflict)

ValueError: option names {'--add'} already added

【问题讨论】:

    标签: python pytest valueerror


    【解决方案1】:

    我自己也遇到过类似的问题,结果我将另一个 conftest.py 文件复制到层次结构更高一级的目录中,所以 pytest 实际上“看到”(并试图加载)这两个文件,他两次检测到名称为“--add”的选项。

    【讨论】:

    • 我也有同样的经历,但它实际上是在我的主目录中。感谢您的提示。
    • @kjelderg 我猜 pytest 实际上是自下而上扫描整个目录树,很抱歉造成混淆。
    【解决方案2】:

    我通过删除工作目录中的.pytest_cache 目录解决了类似问题。

    【讨论】:

      【解决方案3】:

      您可以通过将其添加到pytest.ini 来防止pytest 进入不应进入的目录(在我的情况下为outbuild):

      [pytest]
      norecursedirs=out build
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-22
        • 2014-03-23
        • 1970-01-01
        • 2023-02-14
        相关资源
        最近更新 更多