首页 > 代码库 > Python 中的 fixture 和 fixtures
Python 中的 fixture 和 fixtures
1 Fixture 概念
Fixture是测试中的概念:
- Fixture 指的是测试中依赖的数据和条件等等
- Python的 unittest 库提供了对 fixture的一些支持
- 每个TestCase 应该在setUp中, 自己负责资源的创建, 例如
class MyTestCase(unittest.TestCase): def my_fixture_setup(self): pass def setUp(self): super(MyTestCase, self).setUp() self.my_fixture_setup()
- 每个TestCase 应该新建一个函数, 负责资源的销毁. 并把这个新的函数加入到TestCase的cleanup列表当中
class MyTestCase(unittest.TestCase): def my_fixture_cleanup(self): print("++++ my_cleanup") def setUp(self): super(MyTestCase, self).setUp() self.addCleanup(self.my_fixture_cleanup)
以下是完整的代码
from __future__ import print_function import unittest class MyTestCase(unittest.TestCase): def my_fixture_setup(self): pass def my_fixture_cleanup(self): print("++++ my_cleanup") def setUp(self): super(MyTestCase, self).setUp() self.my_fixture_setup() self.addCleanup(self.my_fixture_cleanup) def tearDown(self): super(MyTestCase, self).tearDown() print("++++ tearDown") def my_cleanup(self): print("++++ my_cleanup") def test_case_1(self): print("++++ test case 1")
2 Python 中的 Fixtures 包
Fixtures(复数)是Python中的一个包, 提供了一些工具包来快速创建/销毁 fixturehttps://pypi.python.org/pypi/fixtures
- Test Case需要派生于 testtools.TestCase 类
- 如果需要自定义Fixtures, 需要派生于 fixtures.Fixture类, 并覆写父类的setUp/cleanUp方法
一个自定义Fixtures类的例子如下
from __future__ import print_function import fixtures import testtools class MyFixture(fixtures.Fixture): def setUp(self): super(MyFixture,self).setUp() self.frobnozzle = 42 print("++++ MyFixture.setup()") def cleanUp(self): super(MyFixture,self).cleanUp() print("++++ MyFixture.cleanup()") print() class MyTestCase(testtools.TestCase): def setUp(self): super(MyTestCase, self).setUp() self.my_fixture = self.useFixture(MyFixture()) print("++++ setUp") def tearDown(self): super(MyTestCase, self).tearDown() print("++++ tearDown") def test_case_1(self): self.assertEqual(42, self.my_fixture.frobnozzle) print("++++ test case 1")
Python 中的 fixture 和 fixtures
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。