【问题标题】:Buildbot parsing Python Unit test resultsBuildbot 解析 Python 单元测试结果
【发布时间】:2010-10-15 15:15:34
【问题描述】:

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

【问题讨论】:

  • 这是一个测试运行器(例如nose 或py.test)的工作,以提供可解析的输出,例如XUnit XML 格式。

标签: python unit-testing parsing buildbot


【解决方案1】:

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

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

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

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

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

[编辑]

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

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

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

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

【讨论】:

  • 对于无法访问跑步者的人来说仍然很高兴
  • 正则表达式和面向对象编程之间的任何选择只是为了方便。顺便说一句,如果您说您无法访问或控制 Runner 类,即无法组织您的测试环境,那么解析文本可能对文本报告有好处。但是,如果确实如此,我会非常警惕..如果您对测试工作流程没有适当的控制 == 它可能不会给您带来太多。
  • 我实际上同意你的看法。但如果有人有兴趣将其作为练习或娱乐,他们可能想要回答原始问题。
  • 我不认为你能比正则表达式解析做得更好。使用像 ANTLR 这样的东西需要你用上下文无关语法来解析形式语言。似乎完全是矫枉过正。根据我的经验,您可以通过处理文本(使用正则表达式解析内容)来学习唯一的东西,而无需预先定义可以是或不可以是您的输入的内容 - 这是一种费力的浪费时间。如果你很幸运 - 你会得到一些结果。然后这个结果鼓励你花更多的时间——你最终得到了非常复杂的代码黑客。不,我不建议把这个作为练习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多