"conftest.py“
def pytest_addoption(parser):
parser.addoption("--stringinput", action= "append", default = ["defaultstring"], help = "Input String")
def pytest_generate_tests(metafunc):
if "stringinput" in metafunc.fixturenames:
metafunc.parametrize("stringinput",metafunc.config.getoption("stringinput"))当我们将命令行选项"stringinput“传递为"pytest pytest_generate_test_example.py -stringinput=”hello“执行此代码时,它还将在输出中执行默认值。
pytest_generate_test_example.py::test_valid_stringdefaultstring PASSEDpytest_generate_test_example.py::test_valid_stringhello通过
发布于 2017-10-25 13:25:54
这是argparse的“问题”,与pytest无关。请参见测试脚本:
#! /usr/bin/env python
import argparse
parser = argparse.ArgumentParser(description='Import')
parser.add_argument('test', action='append', default=['foo'])
args = parser.parse_args('bar'.split())
print args.test它输出['foo', 'bar']。也就是说,action='append'附加到default后,而不首先清除它。
因此,为了避免这个问题,从一个空的default列表开始,如果参数是空的,就使用defaultstring (没有--stringinput命令行参数)。
https://stackoverflow.com/questions/46932200
复制相似问题