在源代码中打开/关闭测试

时间:2018-05-30 23:20:34

标签: python testing

我正在使用python复制电子表格。电子表格包含每周一的数据和处理逻辑,而不是其余工作日。

我想每天运行python代码,如果是星期一,我想将python结果与电子表格结果进行比较。我有20多个测试分布在python代码中进行比较。测试包括:1)比较我从生产数据库获得的数据与excel相同2)比较python产生与excel相同的结果(逻辑是如果输入是相同的。

如何在星期一开启测试,不插入20+"如果星期一:运行test_n"到python代码?

我不认为我可以将测试和源代码分开,因为以后的测试会从之前的处理步骤中获取输入。

2 个答案:

答案 0 :(得分:0)

看起来您的选择数量有限。

你可以refactor your code将测试结合在一起,用较少的if测试来激活它们。你说这可能是不可能的,但在我看来你应该先尝试这样做。您认识到代码中有异味,因此您应该尝试一些重构技术来成功分离测试和源代码。检查一些技术 - 有很多书和网站讨论其中的一些。

您可以按原样保留代码。这将构建technical debt,但这可能是必要的。使用超过20个if语句并对它们进行评论,以便在以后可以找到并修改它们。至少在代码中只进行一次日期检查,设置一个布尔变量,并测试该变量而不是重做日期检查。

如果没有更多细节,我看不出我们如何提供任何其他选择。

答案 1 :(得分:0)

如果这些是“确保它有效”的测试,那么它们不应该在生产代码中。它们应该在测试套件中完全分开。

测试代码是一个非常广泛的主题,但这里有一些资源可以帮助您入门。

  

我认为我不能将测试和源代码分开,因为以后的测试会从先前的处理步骤中获取输入。

您绝对可以,每个系统都可以,但可能需要重新设计您的系统。对于遗留代码来说,这是一个常见的鸡与蛋问题:如果无法测试,如何安全地更改它?并且有各种技术可以解决这个问题。 Refactoring,重新设计代码而不改变其工作方式的过程将突出显示。但是没有细节我就不能多说了。

  

1)比较我从生产数据库获得的数据与excel中的相同

     

2)如果输入相同,比较python会产生与excel相同的结果(逻辑相同)。

您应该测试其输出,而不是在代码内部进行测试。

这两者都应该是将各种过程的输出转换为可以进行比较的通用格式。这可以将它们作为JSON转储,将它们全部转换为Python数据结构,CSV ......对于您的数据来说最简单的事情。然后比较它们以确保它们是相同的。

同样,如果没有关于你的情况的更多细节我就不能提供更多。