我期待着以CSV的形式列出所有(pytest)测试用例。
用例场景:我们已经为多个平台和数据库定义了测试用例。这些测试用例基于不同的标记(Ex : platform_linux、platform_centos、db_maria、db_mongo、db_redis等)进行组织/分组。
我想要创建一个CSV文件,其中包含属于标记的所有标记和测试用例。
CSV文件样本:
> Marker, Test Cases
> platform_linux, [test_linux1, test_linux2...]
> db_mariadb, [test_mariadb1, test_mariadb2...]
这里的目标是处理CSV文件并派生所有运行在使用mariadb的Linux平台上的测试。
我确实得到了一些关于收集测试用例的答案(--只收集)它能用于创建所需的CSV吗?我们是否有现有的插件来实现同样的功能?
发布于 2022-03-27 17:04:56
我不知道有一个合适的插件(尽管有数百个插件,所以它可能仍然存在),但是您可以通过实现修饰件来实现这一点。在收集完所有项目之后,您就可以在集合阶段到达那里。收集到的测试项作为列表传递到那里,您可以使用该列表来编写csv。
您可能会将此依赖于以文件名作为值的某个选项。下面是一个示例:
顶级conftest.py
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格式,但这应该会给您一个想法。
发布于 2022-03-31 08:27:32
有pytest-csv插件,它提供了使用标记、markers_as_parameters等生成所需的CSV的选项。
https://github.com/nicoulaj/pytest-csv
示例用法(自定义CSV中的列):
py.test --csv tests.csv --csv-columns host,function,status,duration,parameters_as_columns
注: requirement >= 6.0
https://stackoverflow.com/questions/71636908
复制相似问题