首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >收集所有用pytest实现的测试以及标记

收集所有用pytest实现的测试以及标记
EN

Stack Overflow用户
提问于 2022-03-27 13:49:46
回答 2查看 484关注 0票数 0

我期待着以CSV的形式列出所有(pytest)测试用例。

用例场景:我们已经为多个平台和数据库定义了测试用例。这些测试用例基于不同的标记(Ex : platform_linux、platform_centos、db_maria、db_mongo、db_redis等)进行组织/分组。

我想要创建一个CSV文件,其中包含属于标记的所有标记和测试用例。

CSV文件样本:

代码语言:javascript
运行
复制
> Marker, Test Cases
> platform_linux, [test_linux1, test_linux2...]
> db_mariadb, [test_mariadb1, test_mariadb2...]

这里的目标是处理CSV文件并派生所有运行在使用mariadb的Linux平台上的测试。

我确实得到了一些关于收集测试用例的答案(--只收集)它能用于创建所需的CSV吗?我们是否有现有的插件来实现同样的功能?

EN

回答 2

Stack Overflow用户

发布于 2022-03-27 17:04:56

我不知道有一个合适的插件(尽管有数百个插件,所以它可能仍然存在),但是您可以通过实现修饰件来实现这一点。在收集完所有项目之后,您就可以在集合阶段到达那里。收集到的测试项作为列表传递到那里,您可以使用该列表来编写csv。

您可能会将此依赖于以文件名作为值的某个选项。下面是一个示例:

顶级conftest.py

代码语言:javascript
运行
复制
import csv

def pytest_addoption(parser):
    parser.addoption("--output-tests-csv", action="store", default=None)

def pytest_collection_modifyitems(config, items):
    csv_out = config.getoption("--output-tests-csv")
    if csv_out:
        tests = {}
        # collect all tests with matching markers
        for item in items:
            for mark in item.iter_markers():
                if mark.name.startswith(("platform_", "db_")):
                    tests.setdefault(mark.name, []).append(item.name)
        # write tests in csv (one line per marker)
        with open(csv_out, 'w', newline='') as csvfile:
            writer = csv.writer(csvfile, delimiter=',')
            for marker, tests in tests.items():
                writer.writerow([marker, tests])

这假设要考虑的标记从platform_db_开始,您可能必须调整这个,也就是想要的csv格式,但这应该会给您一个想法。

票数 1
EN

Stack Overflow用户

发布于 2022-03-31 08:27:32

有pytest-csv插件,它提供了使用标记、markers_as_parameters等生成所需的CSV的选项。

https://github.com/nicoulaj/pytest-csv

示例用法(自定义CSV中的列):

代码语言:javascript
运行
复制
py.test --csv tests.csv --csv-columns host,function,status,duration,parameters_as_columns

注: requirement >= 6.0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71636908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档