Buildbot 解析 Python 单元测试结果
我有一个测试套件,它输出的测试结果是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模块中的类获取相同的信息。
考虑在TextTestRunner和TextTestResult这两个类上添加你自己的逻辑(适用于Python 2.7)。你列出的输出是由TextTestResult生成的。
另外,你也可以只扩展TextTestResult,并修改类属性TextTestRunner.resultclass,把它设置为你新扩展的类名。
你可以从TextTestResult中提取的数据,放到一些字典列表中,数量会比你解析器能提取的数据要多或相等。
unittest框架由于其灵活的设计,允许这样做。希望这些信息对你有帮助。
[编辑]
我觉得把你目前的结果发布出来(比如在github上作为开源代码)对那些看到你问题的人可能会非常有用!
不过,我怀疑要在基本的正则表达式解析之外,进一步改进实际的解析器会很容易。
如果你仍然想继续文本解析的方法,你可能需要列举并描述你想要覆盖/支持的“所有种类的Python单元测试格式”。如果你能把这样的描述以上下文无关文法的形式写出来,或许你能开发一个解析器,能够覆盖“那些”情况,作为一种语言。
请听我一句警告:如果文本解析不能通过简单的正则表达式完成,并且你可能在尝试解析一些不规则(上下文相关)语言,那么你很可能会发现这非常困难。