【问题标题】:Python test "framework" for testing input files and their outputs [closed]用于测试输入文件及其输出的 Python 测试“框架”[关闭]
【发布时间】:2010-11-08 03:03:13
【问题描述】:

我正在为我的工具编写端到端测试,该工具是用 Python 编写的。该工具读取文件作为输入。我想测试它的退出代码和它的输出。

这是一个相当普遍的习语,我已经看到它以多种方式完成。在 PHP 项目中,每个测试都是一个文件,并且有如下几行:INPUT:EXPECTED:EXPECTED_REGEX: 等。在我自己的phc 项目中,每个文件都是一个普通的源文件,但带有注释添加到顶部,其中包括 EXPECTED 等关键字。我想我已经从gcc 复制了它,它使用了一个用 tcl 编写的更复杂的工具。

是否有在 Python 中执行此操作的框架、库等?它应该:

  • 读取源文件
  • 解析与预期输出、退出代码、预期找到或未找到的单词/正则表达式相对应的特殊关键字(或类似关键字),
  • 检查输出是否正确。

虽然这在理论上似乎并不难,但我记得以前在实现这个时有很多边缘情况(尤其是涉及转义),并且宁愿不重新发明轮子。

【问题讨论】:

    标签: python testing end-to-end


    【解决方案1】:

    机器人框架可能会有所帮助。它是一个用python实现的关键字驱动的功能测试工具,可以用pythion或java进行扩展。

    见:http://robotframework.googlecode.com/svn/tags/robotframework-2.5.4/doc/userguide/RobotFrameworkUserGuide.html

    您可以应用许多内置库来解决您的问题,包括用于处理文件等的操作系统库和用于处理字符串的字符串库:

    http://robotframework.googlecode.com/svn/tags/robotframework-2.5.4/doc/userguide/RobotFrameworkUserGuide.html#standard-libraries

    【讨论】:

    • 这似乎是我要找的。​​span>
    【解决方案2】:

    还有一个由 Ian Bicking 编写的 http://pythonpaste.org/scripttest/ 库。

    【讨论】:

      【解决方案3】:

      既然文件io的实现是系统依赖的,何不mock out使用StringIO读写文件:

      http://docs.python.org/library/stringio.html

      然后在 python 中测试大部分逻辑(从文件读取、做一些事情、写入文件)?

      然后,也许您可​​以通过使用commands 模块或类似的方式将单独的 python 文件调用到脚本中来进行基本健全性的端到端测试,您将其作为另一个进程调用:

      http://docs.python.org/library/commands.html

      使用它您可以获得输出和状态。

      【讨论】:

      • 从您的回答来看,我相信我可能错误地陈述了这个问题。我已经重写了大部分内容,希望现在更清楚了。
      • 哦,我现在明白了,看起来马克有你的答案:)
      猜你喜欢
      • 2017-12-07
      • 2017-07-31
      • 2012-07-23
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      相关资源
      最近更新 更多