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"执行此代码时as" pytest pytest_generate_test_example.py --stringinput =" hello" ,它还执行输出中的默认值。 输出的片段如下: -
pytest_generate_test_example.py::test_valid_string [defaultstring] PASSEDpytest_generate_test_example.py::test_valid_string[hello] PASSED
答案 0 :(得分:1)
这是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
。