升级之旅

Test Fixtures: setUp|setUpClass|

2020-05-22  本文已影响0人  yarving
python

在TDD开发实践中,组织测试用例是一个最基本的内容,本文介绍下测试用例组织时的Fixture

TestCase级别的test fixture有四种,分别为(按顺序执行):

  1. setUpClass: 必须使用@classmethod 装饰器, 每个test class执行前运行一次
  2. setUp: 每个test method执行前运行一次
  3. tearDown: 每个test method执行后运行一次
  4. tearDownClass: 必须使用@classmethod 装饰器, 每个tear class执行后运行一次

常见的TestCase的组织形式如下:

class DemoTest(models.Model):
    """Test Demo"""
    
    @classmethod
    def setUpClass(cls):
        print("1. setup class")
        
    def setUp(self):
        print("2. setup method")
        
    def tearDown(self):
        print("5. tear down method")
        
    @classmethod
    def tearDownClass(cls):
        print("6. tear down class")
        
    def test_1(self):
        print("3. run test case 1")
        
    def test_2(self):
        print("4. run test case 2")

如果执行上述代码,则运行结果为:

1. setup class
2. setup method
3. run test case 1
5. tear down method
2. setup method
4. run test case 2
5. tear down method
6. tear down class

说明:

比如,要测试某个Model:

扩展阅读

除了上述四种外,还有两种Module Fixture:

顾名思义,是在Module的前后运行的。在我实际TDD开发中不需要用到这种情况。

以前我有个误区,把setUptearDown当做setUpClasstearDownClass在使用,会导致:

  • 逻辑不是自己期望
  • 由于每次Fixture的组织需要耗费一定的时间,当test method多了后,这些累计的小时间也会变成一段比较长的时间

参考资料

本文作者: Yarving Liu
文章地址:https://mp.weixin.qq.com/s/rmNM55Wn1R35c2oMa5ntpg
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

碧云涛
上一篇 下一篇

猜你喜欢

热点阅读