加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-如何使用命令行在pytest中传递多个参数?

发布时间:2020-12-17 17:36:25 所属栏目:Python 来源:网络整理
导读:我想将输入作为命令行选项传递给pytest文件. https://stackoverflow.com/a/42145604/8031479这个问题很有帮助,但我不知道添加多个解析器采用. 我尝试将其添加到我的conftest.py文件中,但没有帮助: def pytest_addoption(parser): """ This function is used

我想将输入作为命令行选项传递给pytest文件. https://stackoverflow.com/a/42145604/8031479这个问题很有帮助,但我不知道添加多个解析器采用.

我尝试将其添加到我的conftest.py文件中,但没有帮助:

def pytest_addoption(parser):
    """
        This function is used to extract input1 and input2 values from the command line
    """
    parser.addoption(
        "--input1",action="store",default="input1"
    )
    parser.addoption(
        "--input2",default="input2"
    )

我的test.py文件的内容:

import pytest

@pytest.fixture()
def get_input1(input1):
    print 'input1:',input1
    return input1

# @pytest.mark.unit
@pytest.fixture()
def get_input2(input2):
    print 'input2:',input2
    return input2

def test_hello(get_input1,get_input2):
    print 'testing pytest fixtures with command line options'
    print get_input1,get_input2

这是我运行test.py文件的命令:

py.test test.py --input1="hello" --input2="world"

我收到此错误消息:

@pytest.fixture()
def get_input1(input1):
E       fixture 'input1' not found
>       available fixtures: cache,capfd,capfdbinary,caplog,capsys,capsysbinary,doctest_namespace,get_input1,get_input2,metadata,monkeypatch,pytestconfig,record_property,record_xml_attribute,recwarn,tmp_path,tmp_path_factory,tmpdir,tmpdir_factory
>       use 'pytest --fixtures [testpath]' for help on them.
最佳答案
您可以通过以下方式使其工作:

conftest.py:

import pytest


def pytest_addoption(parser):
    parser.addoption("--input1",default="default input1")
    parser.addoption("--input2",default="default input2")



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


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

test.py:

import pytest

@pytest.mark.unit
def test_print_name(input1,input2):
    print ("Displaying input1: %s" % input1)
    print("Displaying input2: %s" % input2)

CLI:

>py.test -s test.py --input1 tt --input2 12
================================================= test session starts =================================================
platform win32 -- Python 3.7.0,pytest-4.1.1,py-1.7.0,pluggy-0.8.1
rootdir: pytest,inifile:
collected 1 item

test.py Displaying input1: tt
Displaying input2: 12
.

============================================== 1 passed in 0.04 seconds ===============================================

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读