【问题标题】:Development vs Release Python Code开发与发布 Python 代码
【发布时间】:2016-08-28 10:20:13
【问题描述】:

我目前正在开发一个 Python 应用程序,我只需通过记录各个部分的运行时间来持续进行性能测试。

很多代码仅与测试环境相关,不会存在于现实世界的应用程序中,我将这些代码分离为函数,目前我在测试时将这些调用注释掉。这需要我记住哪些调用仅引用测试组件(它们非常交错,因此我无法对功能进行分组)。

我想知道是否有更好的解决方案,到目前为止我唯一的想法是创建一个“模式”布尔值并插入 If 语句,尽管这感觉不必要的混乱。我希望可能有一些我很天真的更标准化的测试方法。

我是 python 新手,所以我可能忽略了一些简单的解决方案。 提前谢谢你

【问题讨论】:

  • 您能否提供一些您想要隔离的部分的通用代码示例?我想到的一个选项是将这些部分移动到单独的函数中,这些部分用一些自定义装饰器装饰,例如@testing_environment_only。但在我看来,代码的那些部分,如果是测试代码,与生产代码一起存在是没有意义的——糟糕的架构。确保详细说明。
  • 目前所有的测试代码都驻留在不同的函数中。我应该说我是 Python 新手,所以即使是简单的建议也欢迎,我不知道装饰器的使用,所以我会研究一下。
  • 处理它的正确方法是在单独的包中进行测试。如果需要,这些测试可以模拟您正在测试的其他代码。如果您提供一些代码示例,您可能会得到更有价值的反馈。

标签: python testing


【解决方案1】:

在标准库的development-section 中有一些用于测试的库。如果您还没有使用这些工具,那么您应该开始使用它们——它们对测试有很大帮助。 (尤其是unittest)。

通常 Python 在调试模式下运行程序,__debug__ 设置为 True(请参阅 docs on assert) - 您可以通过设置命令行开关 -O-OO 来关闭调试模式以进行优化(请参阅docs)。

Python Wiki 中有一些关于使用特定断言的东西

【讨论】:

    【解决方案2】:

    我会说,如果您在调试和发布模式之间切换时注释掉代码的几个部分,我认为 您做错了。以logging library 为例,如您所见,使用该库,您可以仅通过更改单个参数来指定要使用的日志记录级别。

    尽量避免注释调试代码的特定部分,方法是使用一个或多个控制脚本运行模式(调试、发布等)的变量。你也可以使用一些builtin ones python 已经提供的

    【讨论】:

      猜你喜欢
      • 2018-06-29
      • 2022-08-09
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多