NOO*_*OOB 82 python unit-testing
任何人都可以在编写测试用例时解释Python setUp和tearDown方法的使用,setUp在调用测试方法之前立即调用tearDown它并在调用它之后立即调用吗?
Art*_*nka 72
通常,您将所有先决条件步骤添加到setUp,并将所有清理步骤添加到tearDown.
您可以在此处阅读更多示例.
定义setUp()方法时,测试运行器将在每次测试之前运行该方法.同样,如果定义了tearDown()方法,则测试运行器将在每次测试后调用该方法.
例如,您有一个需要项目存在的测试或某种状态 - 因此您将这些操作(创建对象实例,初始化db,准备规则等)放入setUp.
另外你知道每个测试应该停在它启动的地方 - 这意味着我们必须将app状态恢复到它的初始状态 - 例如关闭文件,连接,删除新创建的项目,调用事务回调等等 - 所有这些泪滴中包含了一些步骤.
因此,想法是测试本身应该只包含要在测试对象上执行的操作以获得结果,而setUp和tearDown是帮助您保持测试代码清洁和灵活的方法.
您可以为一组测试创建setUp和tearDown,并在父类中定义它们 - 因此您可以轻松地支持此类测试并更新常见的准备工作和清理.
如果您正在寻找一个简单的示例,请使用以下链接作为示例
Mat*_*tis 48
您可以使用这些来分解测试套件中所有测试的通用代码.
如果测试中有很多重复的代码,可以通过将此代码移动到setUp/tearDown来缩短代码.
您可以使用它来创建测试数据(例如设置假货/模拟),或使用假货来截断功能.
如果您正在进行集成测试,则可以在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())
Run Code Online (Sandbox Code Playgroud)
假设您有一个包含10个测试的套件.8个测试共享相同的设置/拆卸代码.另外2个没有.
设置和拆解为您提供了一个很好的方法来重构这8个测试.现在你用其他两个测试做什么?你将它们移动到另一个测试用例/套件.所以使用setup和teardown也有助于提供一种自然的方法来将测试分解为案例/套件
| 归档时间: |
|
| 查看次数: |
81799 次 |
| 最近记录: |