使用 TDD 和断言时要测试什么
What to test when using TDD and asserts
首先,我是 TDD 和 Python 的新手。我不以编码为生,但我确实写了很多代码。
我正在将一个大型项目从 Matlab 转移到 Python。 1) 因为语言一直受到限制,以及 2) 在分析边缘情况和调试时,我开始破坏和修复一样多。所以我决定从头开始,这次使用 TDD。
我得到了 TDD 周期(红色、绿色、折射)。问题是,测试什么?一个人unit/function,你写了多少测试?在这种情况下,我的脑海中已经有了整个项目,尽管语言之间会有一些库和结构上的变化。
此外,我听说到处都使用断言令人作呕,所以我就是这样。但有时我似乎正在编写测试来验证我的断言。一次一个函数为每个参数编写有效的输入类型测试似乎是在浪费时间。
您已经 运行 认识到在尝试接受测试(对您有好处!)的程序员中非常普遍的认识 - 单元测试在大多数情况下很糟糕。或者至少是您尝试做的事情的错误工具。
这就是为什么我建议您放弃单元测试的异端并拥抱行为测试的优雅和美丽。甚至还有一个很棒的库:behave.
这不仅允许您重复使用您的代码,而且还强制您用通俗易懂的英语描述应用程序的逻辑(如果做得好,相当于正确的文档),这有助于缩小逻辑漏洞和可能出现的其他设计错误。它还消除了 "what to test" 的问题,因为对于 BDD,您应该测试应用程序的每一种行为方式。
在您的特定案例中,您肯定也会对场景大纲功能感兴趣,您可以在其中编写一次测试代码,然后通过此代码将一长串示例写入 运行。
首先,我是 TDD 和 Python 的新手。我不以编码为生,但我确实写了很多代码。
我正在将一个大型项目从 Matlab 转移到 Python。 1) 因为语言一直受到限制,以及 2) 在分析边缘情况和调试时,我开始破坏和修复一样多。所以我决定从头开始,这次使用 TDD。
我得到了 TDD 周期(红色、绿色、折射)。问题是,测试什么?一个人unit/function,你写了多少测试?在这种情况下,我的脑海中已经有了整个项目,尽管语言之间会有一些库和结构上的变化。
此外,我听说到处都使用断言令人作呕,所以我就是这样。但有时我似乎正在编写测试来验证我的断言。一次一个函数为每个参数编写有效的输入类型测试似乎是在浪费时间。
您已经 运行 认识到在尝试接受测试(对您有好处!)的程序员中非常普遍的认识 - 单元测试在大多数情况下很糟糕。或者至少是您尝试做的事情的错误工具。 这就是为什么我建议您放弃单元测试的异端并拥抱行为测试的优雅和美丽。甚至还有一个很棒的库:behave.
这不仅允许您重复使用您的代码,而且还强制您用通俗易懂的英语描述应用程序的逻辑(如果做得好,相当于正确的文档),这有助于缩小逻辑漏洞和可能出现的其他设计错误。它还消除了 "what to test" 的问题,因为对于 BDD,您应该测试应用程序的每一种行为方式。
在您的特定案例中,您肯定也会对场景大纲功能感兴趣,您可以在其中编写一次测试代码,然后通过此代码将一长串示例写入 运行。