文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
6.2 fixture
在单元测试中,fixture表示“测试前创建,测试后销毁”的(辅助性)组件。比较好的方式是为它们构建一个特殊的组件,因为它们会在许多不同的地方被重用。例如,如果你需要一个对象来表示你的应用程序的配置状态,很可能你希望在每个测试前初始化它,并在测试结束后将其重置为默认值。对临时文件创建的依赖也需要该文件在测试开始前被创建,测试结束后被删除。
unittest只为我们提供了已经提及的setUp和tearDown函数。不过,是有机制可以hook这两个函数的。fixtures(https://pypi.python.org/pypi/fixtures)Python模块(并非标准库的一部分)提供了一种简单的创建fixture类和对象的机制,如useFixture方法。
fixtures模块提供了一些内置的fixture,如fixtures.EnvironmentVariable,对于在os.environ中添加或修改变量很有用,并且变量会在测试退出后重置,如示例6.5所示。
示例6.5 使用fixtures.EnvironmentVariable
import fixtures import os class TestEnviron(fixtures.TestWithFixtures): def test_environ(self): fixture = self.useFixture( fixtures.EnvironmentVariable("FOOBAR", "42")) self.assertEqual(os.environ.get("FOOBAR"), "42") def test_environ_no_fixture(self): self.assertEqual(os.environ.get("FOOBAR"), None)
当你发现类似的通用模式时,最好创建一个fixture,以便它可以被你的所有其他测试用例重用。这极大地简化了逻辑,并且能准确地体现你在测试什么以及以何种方式测试。
注意
本节的示例代码之所以没有用unittest.TestCase,是因为fixtures.TestWith-Fixtures继承自unittest.TestCase。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论