Buildbot 解析 Python 单元测试结果

8 投票
1 回答
2710 浏览
提问于 2025-04-16 05:33

我有一个测试套件,它输出的测试结果是Python单元测试的格式:http://docs.python.org/library/unittest.html

有没有现成的Buildbot模块或插件可以解析这种格式?

举个例子:

DigitalReadWrite_02                                         ... ok
DigitalReadWrite_03                                         ... ok
DigitalReadWrite_04                                         ... ok
PWMoutput_02  (PWM=128 50% LOW 49% HIGH)                    ... ok
PWMoutput_03  (PWM=128 50% LOW 49% HIGH)                    ... ok
PWMoutput_04  (PWM=128 50% LOW 49% HIGH)                    ... ok
--------------------------
Ran 6 tests in 1.652s

OK

我写了一个自定义的解析器,但它只处理了一些基本的情况。为了让它能处理所有种类的Python单元测试格式,值得花时间去做吗?

1 个回答

3

不,开发一个解析器没有意义。你可以从runner.py模块中的类获取相同的信息。

考虑在TextTestRunnerTextTestResult这两个类上添加你自己的逻辑(适用于Python 2.7)。你列出的输出是由TextTestResult生成的。

另外,你也可以只扩展TextTestResult,并修改类属性TextTestRunner.resultclass,把它设置为你新扩展的类名。

你可以从TextTestResult中提取的数据,放到一些字典列表中,数量会比你解析器能提取的数据要多或相等。

unittest框架由于其灵活的设计,允许这样做。希望这些信息对你有帮助。

[编辑]

我觉得把你目前的结果发布出来(比如在github上作为开源代码)对那些看到你问题的人可能会非常有用!

不过,我怀疑要在基本的正则表达式解析之外,进一步改进实际的解析器会很容易。

如果你仍然想继续文本解析的方法,你可能需要列举并描述你想要覆盖/支持的“所有种类的Python单元测试格式”。如果你能把这样的描述以上下文无关文法的形式写出来,或许你能开发一个解析器,能够覆盖“那些”情况,作为一种语言。

请听我一句警告:如果文本解析不能通过简单的正则表达式完成,并且你可能在尝试解析一些不规则(上下文相关)语言,那么你很可能会发现这非常困难。

撰写回答