【问题标题】:How to test Python command line apps如何测试 Python 命令行应用程序
【发布时间】:2018-05-20 17:45:45
【问题描述】:

我已经构建了一个 python 命令行应用程序,它以两种模式运行:

  1. 在交互模式下,它使用 python CMDModule 打开一个交互式 shell。

    例子:

    在命令行中运行plcli,打开它的交互模式

    (cmd)> do_x

  2. 从输入文件中读取命令并一个接一个地执行。

    例子:

    在命令行中运行plcli input_file.txt,它执行命令 逐行输出结果到标准输出。

如何为此 cli 应用编写单元和集成测试。我探索了pytest-console-scriptsscript-test,但它们似乎不是最佳或最佳实践。

请建议接受的/最佳实践库或用于测试 python 命令行应用程序的用法。

注意:我没有使用任何 python cli 框架,例如 clintclick

【问题讨论】:

  • 程序的命令行特性以何种方式影响测试?为您拥有的类和函数编写测试。

标签: python scripting command-line-interface


【解决方案1】:

最重要的原则是组织您的代码,使复杂性存在于可以进行直接单元测试的函数(或方法)中——换句话说,存在于不处理命令行或交互的函数中大程序的性质。然后将这些功能粘合到提供命令行或交互功能的薄外层。这种胶水往往非常简单,可能不值得进行测试。如果它确实需要任何测试,您通常可以通过少量基本的端到端执行来完成它(例如,对于命令行场景,使用 Python 的 subprocess 模块的测试完全按照用户的方式运行您的程序会)。

更多细节可以在 Gary Bernhardt 的精彩 Boundaries 演讲中找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多