一个TestCase应该覆盖多少?

时间:2012-02-08 18:48:54

标签: python unit-testing

到目前为止,我从未写过一个合适的测试,只有在测试后我会处理掉的小程序才能成功。我正在浏览Python的unittest模块和网络教程,但我不清楚。

TestCase应该涵盖多少?我在网上看到过只有一个方法的TestCase类的例子,以及测试几乎所有可用功能的类。

就我而言,我正在尝试为简单的布隆过滤器编写测试。您认为我应该如何组织我的测试用例?

2 个答案:

答案 0 :(得分:5)

简单来说:一个单元测试应涵盖程序的单一功能。这就是说的全部。这就是为什么他们被称为单元测试

当然,我们通过功能理解的内容可能会有所不同。考虑一下程序的最小部分可能会破坏或不按预期工作。考虑代码的业务需求。这些是您希望每个部分都由专用单元测试覆盖的部分。

通常,单元测试是小的,孤立的和原子的。它们应该易于理解,它们应该失败/彼此独立传递,并且应该快速执行。适当的单元测试的相当好的指示是单一断言 - 如果你发现自己写得更多,你可能测试得太多了,这是一个标志,你需要多个测试给定的功能。但是,这不是一个严格的规则 - 涉及的代码越复杂,单元测试就越复杂。

编写测试时,很容易拆分您的代码功能并测试这些分离的部分(这应该让您了解测试的 atomicity )。例如,如果您有一个方法验证输入然后调用服务并最终返回结果,您通常希望覆盖所有三个(验证,调用,返回)步骤。

答案 1 :(得分:1)

我会用几种测试方法创建一个TestCase。 bloom过滤器具有简单的语义,因此只有一个TestCase。我通常会为每个功能添加一个TestCase。