本文介绍了使用 python 获取所有 pytest 节点 ID 的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您知道是否有办法收集所有 pytest 节点 ID(如此处) 使用 pytest python API ?

Do you know if there is a way to collect all pytest node ids (as presented here) using the pytest python API ?

我找到了pytest的--collect-only参数,但是我不知道如何使用python获取输出?

I have found the --collect-only parameter of pytest, but I can't figure out how to get the output using python ?

提前致谢!

推荐答案

如果您想以编程方式访问 nodeid,最好编写一个小插件,将它们存储在测试集合中.示例:

If you want to access nodeids programmatically, best is to write a small plugin that will store them on test collection. Example:

import pytest


class NodeidsCollector:
    def pytest_collection_modifyitems(self, items):
        self.nodeids = [item.nodeid for item in items]


def main():
    collector = NodeidsCollector()
    pytest.main(['--collect-only'], plugins=[collector])
    # use collector.nodeids now

如果你想避免 pytest 输出到终端,另外禁用终端插件:

If you want to avoid pytest output to the terminal, disable the terminal plugin in addition:

pytest.main(['--collect-only', '-pno:terminal'], plugins=[collector])

这篇关于使用 python 获取所有 pytest 节点 ID 的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 18:11