解释testing用例中使用的“setUp”和“tearDown”Python方法

任何人都可以解释使用Python的setUptearDown方法,除了在调用testing方法之前立即调用setUp和在调用tearDown之后立即调用testing用例吗?

一般而言,您将所有先决条件步骤添加到setUp,并将所有清理步骤添加到tearDown。

你可以在这里阅读更多的例子。

当定义setUp()方法时,testing运行器将在每次testing之前运行该方法。 同样,如果定义了tearDown()方法,testing运行器将在每次testing之后调用该方法。

例如,你有一个testing需要项目存在,或某些状态 – 所以你把这些行动(创build对象实例,初始化数据库,准备规则等)到setUp。

也正如你所知,每个testing都应该停在它开始的地方 – 这意味着我们必须将应用状态恢复到初始状态 – 例如closures文件,连接,删除新创build的项目,调用事务callback等等 – 所有这些步骤将被包括在tearDown中。

所以这个想法是,testing本身应该只包含在testing对象上执行的操作来获得结果,而setUp和tearDown则是帮助你保持testing代码干净和灵活的方法。

你可以为一堆testing创build一个setUp和tearDown,并在父类中定义它们,这样你可以很容易地支持这些testing并更新常见的准备和清理。

如果你正在寻找一个简单的例子,请使用下面的链接例子

您可以使用这些来分解testing套件中所有testing的通用代码。

如果在testing中有很多重复的代码,可以通过将代码移动到setUp / tearDown来缩短它们。

您可以使用它来创buildtesting数据(例如设置假货/嘲笑),或用假货剔除function。

如果您正在进行集成testing,则可以在setUp中使用检查环境前提条件,如果设置不正确,则跳过testing。

例如:

 class TurretTest(unittest.TestCase): def setUp(self): self.turret_factory = TurretFactory() self.turret = self.turret_factory.CreateTurret() def test_turret_is_on_by_default(self): self.assertEquals(True, self.turret.is_on()) def test_turret_turns_can_be_turned_off(self): self.turret.turn_off() self.assertEquals(False, self.turret.is_on()) 

假设你有一个包含10个testing的套件。 8个testing共享相同的设置/拆卸代码。 其他2不。

设置和拆卸给你一个很好的方式来重构这8个testing。 现在你用另外两个testing怎么办? 你会把他们移动到另一个testing用例/套件。 所以使用setup和teardown也有助于提供一种自然的方式来将testing分解成案例/套件