8

我有一个以 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 单元测试格式。

4

1 回答 1

3

不,开发解析器是没有意义的。您可以从runner.py模块中的类中获取等效信息。

考虑使用您的自定义逻辑(python 2.7)扩展两个类TextTestRunnerTextTestResult 。您列出的输出由TextTestResult生成。

或者,您可以仅扩展TextTestResult并将类属性TextTestRunner.resultclass设置为您的新扩展类名称。

您可以从 TextTestResult 中提取并放入某些字典列表中的数据大于或等于您的解析器能够提取的数据。

由于其灵活的设计,unittest 框架允许使用此类技巧。希望这会有所帮助。

[编辑]

我会发现到目前为止发布您的结果(例如,作为 github 上的开源代码)可能对找到您的问题的人非常有用!

话虽如此,我怀疑在基本的正则表达式解析之外改进实际的解析器会很容易。

如果您仍然想追求文本解析方法 - 您可能需要枚举和描述您想要涵盖/支持的“所有风格的 Python 单元测试格式”。如果您幸运地以上下文无关语法的形式进行了这样的描述,那么也许您可以为它开发一个解析器,它将“那些”案例作为一种语言形式来涵盖。

请注意我的话:如果简单的正则表达式没有涵盖文本解析,并且您有可能尝试解析一些不规则的(上下文敏感的)语言 - 很可能您会发现它非常难以完成。

于 2011-01-22T01:24:49.013 回答