在pytest中的pytest_generate_tests()中出现问题

时间:2017-10-25 12:16:14

标签: python pytest

" 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"执行此代码时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

1 个答案:

答案 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