python - pytest 的 addoptions 和动态参数化测试装置的问题

标签 python python-2.7 pytest

我最近使用 pytest 进行软件测试,但在动态参数化测试装置时遇到问题。测试时,我希望能够提供以下选项:

A) 通过指定文件名来测试特定文件

B) 测试安装根目录下的所有文件

下面是我当前的conftest.py。我想要它做的是,如果您选择选项 A (--file_name),则使用指定的文件名创建参数化测试装置。如果选择选项 B (--all_files),请提供所有文件的列表作为参数化测试装置。

import os
import pytest

def pytest_addoption(parser):
    parser.addoption("--file_name", action="store", default=[], help="Specify file-under-test")
    parser.addoption("--all_files", action="store_true", help="Option to test all files root directory")

@pytest.fixture(scope='module')
def file_name(request):
    return request.config.getoption('--file_name')

def pytest_generate_tests(metafunc):
    if 'file_name' in metafunc.fixturenames:
        if metafunc.config.option.all_files:
            all_files = list_all_files()
        else:
            all_files = "?"
        metafunc.parametrize("file_name", all_files)


def list_all_files():
    root_directory = '/opt/'
    if os.listdir(root_directory):
        # files have .cool extension that need to be split out
        return [name.split(".cool")[0] for name in os.listdir(root_directory)
                if os.path.isdir(os.path.join(root_directory, name))]
    else:
        print "No .cool files found in {}".format(root_directory)

我摆弄得越多,我只能让其中一个选项工作,而不能让另一个选项工作......我需要做什么才能让这两个选项(可能还有更多)动态创建参数化测试装置?

最佳答案

您正在寻找这样的东西吗?

def pytest_generate_tests(metafunc):
    if 'file_name' in metafunc.fixturenames:
        files = []
        if metafunc.config.option.all_files:
            files = list_all_files()
        fn = metafunc.config.option.file_name
        if fn:
            files.append(fn)
        metafunc.parametrize('file_name', all_files, scope='module')

无需定义file_name函数。

关于python - pytest 的 addoptions 和动态参数化测试装置的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31125133/

相关文章:

python - 如何使用 LSTM Keras 预测 future 股票

python - 给定带有字符串的列表列表生成稀疏矩阵

减少 "breaks"或在应该连续的进程中暂停的 Python 方法,特别是音频?

python - 捕获的异常是无

python - 使用 Pandas ,如何将导出的 csv 文件保存到相对于脚本位置的文件夹?

python - Django/Python - 将数据收集到正确的形式(算法)

python - 将十六进制字符串文件转换为整数的最佳方法

python-3.x - 对处理 csv 文件的函数进行单元测试的最佳方法是什么?

python - 如何将 1 pytest.mark 内容的内容复制到另一个

python - pytest 在参数化中使用固定装置作为参数