除了在调用测试方法之前立即调用 setUp和在调用之后立即调用 tearDown之外,还有人能解释在编写测试用例时使用 Python 的 setUp和 tearDown方法吗?
setUp
tearDown
您可以使用它们分解出测试套件中所有测试的公共代码。
如果您的测试中有很多重复的代码,可以通过将这些代码移动到 setUp/tearDown 来缩短它们。
您可以使用它来创建测试数据(例如,设置 fakes/mock) ,或者使用 fakes 来清除函数。
如果您正在进行集成测试,那么您可以在 setUp 中使用检查环境前置条件,如果某些设置不正确,则可以跳过测试。
例如:
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())
Suppose you have a suite with 10 tests. 8 of the tests share the same setup/teardown code. The other 2 don't.
Setup 和 teardown 为您提供了一个重构这8个测试的好方法。那剩下的两个测试怎么办?你会把他们转移到另一个测试套件。因此,使用 setup 和 teardown 也有助于提供一种将测试分解为案例/套件的自然方法
通常,您需要将所有必备步骤添加到 setUp,并将所有清理步骤添加到 tearDown。
你可以阅读更多的例子 给你。
在定义 setUp ()方法时,测试运行程序将运行该方法 prior to each test. Likewise, if a tearDown() method is defined, the 测试运行程序将在每次测试后调用该方法。
例如,您有一个测试,它要求项目存在,或者某种状态-因此您将这些操作(创建对象实例、初始化 db、准备规则等)放入 setUp。
同样,你知道每个测试应该在它开始的地方停止——这意味着我们必须将应用程序状态恢复到它的初始状态——例如关闭文件、连接、删除新创建的项目、调用事务回调等等——所有这些步骤都包含在 tearDown 中。
因此,测试本身应该只包含要在测试对象上执行的操作以获得结果,而 setUp 和 tearDown 是帮助您保持测试代码清洁和灵活的方法。
您可以为一系列测试创建 setUp 和 tearDown,并在父类中定义它们——因此您很容易支持这样的测试并更新常见的准备工作和清理工作。
如果你正在寻找一个简单的例子请 使用以下连结举例