我即将开始我的第三个中型项目,并希望(我承认这是我有生以来第一次)开始使用单元测试。我不知道该用哪种方法,unitests还是doctest。哪种方法是最有效的,或者初学者应该选择实现哪种方法?谢谢
发布于 2012-01-11 15:04:49
我碰巧更喜欢单元测试,但这两种方法都是优秀的、开发良好的测试方法,而且都得到了Django的良好支持(有关详细信息,请参阅here )。简而言之,每一个都有一些关键的优点和缺点:
单元测试的优点
unittests 允许轻松创建更复杂的测试。如果您的测试涉及调用多个帮助器函数、迭代和其他分析,doctests可能会感觉受到限制。另一方面,unittests只是编写Python代码-您可以在Python中做的任何事情都可以在那里轻松完成。以这段代码(我曾经写过的单元测试的修改版本)为例:定义basic_tests(self,cacheclass,outer=10,inner=100,hit_rate=None):c=高速缓存类(λx: x+ 1),对于xrange中的n(外部):对于xrange中的i(内部):self.assertEqual(c(i),i+ 1) if hit_rate != None: self.assertEqual(c.hit_rate(),hit_rate) def test_single_cache(self):self.basic_tests(SingleCache,outer=10,inner=100,hit_rate=0) sc =SingleCache(λx: x+ 1),输入为0,1,2,2,2,1,1,0,0: self.assertEqual(sc(输入),输入+ 1) self.assertEqual(sc.hit_rate(),.5)
我使用basic_tests方法对类运行一些测试,然后在for循环中运行断言。在doctest中有一些方法可以做到这一点,但它们需要大量的思考-doctest最擅长检查对函数的特定调用是否返回了它们应该返回的值。(在Django中尤其如此,它有非常棒的单元测试工具(请参阅django.test.client).
文档字符串的优点
结论:我当然更喜欢单元测试,但这两者都有很好的理由。
https://stackoverflow.com/questions/8815179
复制相似问题