美文网首页升级之旅
Test Fixtures: setUp|setUpClass|

Test Fixtures: setUp|setUpClass|

作者: yarving | 来源:发表于2020-05-22 11:45 被阅读0次
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

说明:

  • setUpClasstearDownClass分别在DemoTest的首位进行一次,在实践中,我们可以把整个TestCase中不变的数据放在setUpClass去准备,放在tearDownClass中去销毁
  • setUptearDown会在每个test method执行前后运行,可以把各个teat method的被测试对象放入这两个部分,分别进行创建和销毁。

比如,要测试某个Model:

  • setUpClasstearDownClass中分别对该model的依赖(PrimaryKey)等进行创建和销毁;
  • setUptearDown创建该Model的instance
  • 在每个test method对model的属性进行测试

扩展阅读

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

  • setUpModule
  • tearDownModule

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

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

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

参考资料

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

碧云涛

相关文章

网友评论

    本文标题:Test Fixtures: setUp|setUpClass|

    本文链接:https://www.haomeiwen.com/subject/sicqahtx.html