美文网首页
9.类和模块脚手架

9.类和模块脚手架

作者: MirrorAi | 来源:发表于2018-11-07 16:15 被阅读0次

类和模块级脚手架在TestSuite中实现。当测试套件遇到来自新类的测试时,将调用前一个类(如果有的话)中的tearDownClass(),然后调用新类中的setUpClass()

同样地,如果测试来自与前一个测试不同的模块,则运行前一个模块的tearDownModule,然后运行新模块的setUpModule

在运行所有测试之后,运行最终的tearDownClasstearDownModule

请注意,共享脚手架与[潜在]功能(如测试并行化)不能很好地兼容,并且会破坏测试隔离。应小心使用它们。

unittest测试加载器创建的测试的默认顺序是将来自相同模块和类的所有测试组合在一起。这将导致每个类和模块只调用一次setUpClass/setUpModule(诸如此类)。如果随机化顺序,以便来自不同模块和类的测试彼此相邻,则可以在单个测试运行中多次调用这些共享脚手架函数。

共享脚手架不适用于非标准订购的套件。对于不希望支持共享脚手架的框架,仍然存在BaseTestSuite

如果在其中一个共享脚手架功能期间抛出任何异常,则将测试报告为错误。由于没有相应的测试实例,因此会创建_ErrorHolder对象(具有与TestCase相同的接口)来表示错误。如果你只是使用标准的unittest测试运行器,那么这个细节并不重要,但如果你是框架作者,它可能是相关的。

9.1 setUpClass和tearDownClass

这些必须作为类方法实现:

import unittest

class Test(unittest.TestCase):
  @classmethod
  def setUpClass(cls):
    cls._connection = createExpensiveConnectionObject()

  @classmethod
  def tearDownClass(cls):
    cls._connection.destroy()

如果你想在被调用的基类上使用setUpClasstearDownClass,那么你必须自己调用它们。TestCase这部分的实现是空的。

如果在setUpClass期间引发异常,则不会运行类中的测试,并且不会运行tearDownClass。跳过的类不会运行setUpClasstearDownClass。如果异常是SkipTest异常,则该类将被报告成已跳过而不是错误。

9.2 setUpModule和tearDownModule

这些应该作为功能实现:

def setUpModule():
  createConnection()

def tearDownModule():
  closeConnection()

如果在setUpModule中引发异常,则模块中的所有测试都不会运行,并且不会运行tearDownModule。如果异常是SkipTest异常,则模块将被报告为已跳过而不是错误。

相关文章

  • 9.类和模块脚手架

    类和模块级脚手架在TestSuite中实现。当测试套件遇到来自新类的测试时,将调用前一个类(如果有的话)中的tea...

  • Python组合类的多进程异步实现

    模块和类 多进程模块 multiprocessing 多进程类 multiprocessing.Processmu...

  • tweb

    基于Tornado的MTV脚手架 将常用到的功能和模块封装成一个MTV脚手架。主要加入了jinja2模板引擎(异步...

  • open public internal fileprivate

    public类和类成员只能在定义模块(目标)中进行子类化和重写 open类和类成员可以在定义模块(目标)的内部和外...

  • Swift5.1类和结构体

    9.类和结构体 结构体和类相比Swift中结构体和类的共同点:- 定义属性⽤于存储值- 定义方法⽤于提供功能- 定...

  • 前端脚手架搭建(二):脚手架拆包策略

    脚手架package一般拆分为:核心流程core、命令commands、模型models和支撑模块utils 核心...

  • JavaScript类和模块

    类 在JavaScript中,类的实现是基于原型继承机制的。如果两个实例都从同一个原型对象上继承了属性,我们说它们...

  • js类和模块

    每个js对象都是一个属性的集合,相互之间没有任何联系。在js中也可以定义对象的类,让每个对象都共享某些属性,这种‘...

  • VBA第七讲VBE编辑器

    工程模块,可以插入类模块,窗体,类模块。窗体可以插入按钮和模块。 属性窗口,随着选取工程窗口的元素,属性窗口就会显...

  • 聊聊前端脚手架

    一、许多团队在制定前端工程方案时会加入脚手架模块。虽然不同的团队对工程化的理解和实施有所差异,但是对于脚手架的定位...

网友评论

      本文标题:9.类和模块脚手架

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