Python 怎样写好一个 TestCase?

2016-04-27 10:21:57 +08:00
 Mush

覆盖率似乎不是唯一的标准, 因为我发现即使覆盖率达到 100%, 但还是可能会存在没有发现的编码错误.

3507 次点击
所在节点    Python
5 条回复
calease
2016-04-27 10:28:34 +08:00
你说的 100%是 line coverage 吧,还有 branch coverage 呢。
另外 coverage 不用追求 100%。 60%以上不错, 80%以上很好。
jeff_kit
2016-04-27 10:33:40 +08:00
通常我们一个方法会对应着 N 多个测试方法,所有的分支流转情况都有对应的方法来测试。如同楼上所说,光有覆盖不够的。
Mush
2016-04-27 10:35:46 +08:00
@calease 搜噶, 我知道 branch coverage, 但还是一样似乎很容易就达到 60%了. 断言的设计应该也灰常重要吧, 既没有必要每个变量都判断下, 又得尽可能的考虑到所以情况, 感觉有点不知所措. 看起来似乎没有什么 Silver Bullet 的样子吧
janxin
2016-04-27 11:00:41 +08:00
这时需要做异常预判断,预估所有的异常情况。不过这个确实非常麻烦,我现在基本是靠个人经验来规避,不知道大家是怎么做的。像这种时候,比如 Golang 就是让你强制来做情况预估(嗯,一大堆的 err check )。

coverage 的覆盖率不能只看百分比,重点还是在分支情况的覆盖,单纯追求 100%对代码质量保证不一定非常有效。
darasion
2016-04-27 15:06:55 +08:00
我一般都是对这些东西写测试:
1. 我不确定是否好使的部分,比如正则匹配的各种东西,写完之后我得确认一下它是否写对了
2. 之前出过 bug 的部分,补充 case ,下次再改的时候就放心了
3. 设计良好的代码,这部分就是属于自我陶醉了.... 看到测试通过心情会很愉快。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/274702

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX