Pytest命令行:传入字符串以用作主机

时间:2017-10-04 19:16:51

标签: python pytest

所以我要做的是编写一个pytest脚本,允许我传入一个字符串作为参数。我不能为我的生活弄清楚如何让参数作为一个整体字符串传入,而不是将它作为单独的字符对待。我尝试了很多选项,但这是我得到的最接近的选项。我觉得我只是缺少一些可以使其真正起作用的小逻辑。

conftest.py

def pytest_addoption(parser):
    parser.addoption("--host", dest="host", type="string", 
                      action="store", default="john", help="Enter an 
                      endpoint for TransactionDS")

def pytest_generate_tests(metafunc):
    if 'host' in metafunc.fixturenames:
        metafunc.parametrize("host", metafunc.config.getoption('host'))

test_args.py

def test_host(host):
global endpoint

endpoint = host
if (endpoint == '90.90.90.90'):
    print(endpoint)
else:
    print(endpoint)

命令行

pytest -q --host“Chris”test_args.py -s --html = report.html

输出

IP Address from Hello World 1 - 
C
.h
.r
.i
.s
.

1 个答案:

答案 0 :(得分:1)

Fixture值应该是要迭代的值列表。 因此,如果您使用字符串,它会将每个字符视为一个值并运行测试len(主机)的时间数

所以只需使用

def pytest_generate_tests(metafunc):
    if 'host' in metafunc.fixturenames:
        metafunc.parametrize("host", [metafunc.config.getoption('host')])

py.test -q --host "Chris" test_args.py -s
Chris
.
1 passed in 0.00 seconds

我从您的html

中未描述的命令行参数conftest.py中删除了