python - 如何在pytest中只运行一次参数化测试

标签 python pytest parametrized-testing

我只需要在 pytest 中运行一次参数化测试,
例如,我有一个包含测试数据的动态列表,并希望使用 test_data[0] 参数运行测试,以防用户为此发送一些条件,例如标记

test_data = list()
test_data = create_test_data() #dynamic list depends on user conditions

@pytest.mark.parametrize("params", test_data)
def test_b(params):
    ...

最佳答案

最好将您的测试重构为配置文件并进行测试。那么最简单的方法是在不同的文件夹中定义几个具有不同数据量的配置文件。

或者,您传递一个参数并解析它,如下所示

测试:

def test_b(params):
    ...

conftest.py 的内容:
data = [....]


def pytest_addoption(parser):
    parser.addoption("--one", action="store_true", help="run one test")


def pytest_generate_tests(metafunc):
    if "params" in metafunc.fixturenames:
        if metafunc.config.getoption("one"):

            metafunc.parametrize("params", data[:1])
        else:
            metafunc.parametrize("params", data) 

也可以看看
How to pass arguments in pytest by command line

关于python - 如何在pytest中只运行一次参数化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57808422/

相关文章:

java - 使用 JUnit 5 的 @ParametrizedTest 与 @TestFactory Stream<DynamicTest> 之间的区别/优点是什么?

python - 是否有用于 python pandas 的 C/C++ API?

python - wxPython : GDI ressources are not release after wxFrame. 销毁()

python - 如何在另一个变量中包含/扩展 Jinja2 模板字符串变量

python - 导入失败时pytest打印堆栈跟踪

python - PyTest:跳过整个模块/文件(python 2 和 3)

java - JUnit 5 @ParamterizedTest {arguments} 与 {argumentsWithNames} 占位符

python - 无法加载setuptools打包的dll

python - Pytest 段错误和测试失败

python - 如何从 pytest 固定装置正确返回列表以用于参数化?