设置用于在Python中进行测试的环境

时间:2015-05-27 08:46:03

标签: python unit-testing integration-testing python-unittest stubbing

我正在Python中使用plain unittest编写集成测试(import unittest),并为一些外部服务创建存根。现在我想用真正的实现来运行相同的测试;但也保留存根。这样我可以使用和不使用存根运行测试并比较行为。

我正在从SetupTools和PyCharm运行我的测试。我是否有一些通用的方法来设置/注入/引导一个参数,告诉我的代码是否使用存根或真正的实现?命令行优先。任何指针赞赏。 :)

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找mocking framework。模拟框架允许您创建一个' stub'从你的测试中的方法。这很好,因为您不希望将任何特定于测试的代码插入到实际代码中。

python 2. *的一个比较流行的模拟框架是python-mock(实际上它带有python 3)所以你可以把代码编写为:

from mock import MagicMock

test_foo_mocked():
    bar = MagicMock()
    bar.return_value = 'fake_val'
    assertEqual(bar(), 'fake_val')

test_foo_real():
    assertEqual(bar(), 'real_val')

旁注:
我真的建议您将这些视为完全无关的测试。将集成测试与单元测试分开有很多好处。将它们视为运行“相同测试”的两种不同方式。可能会鼓励你写错误的测试。单元测试应该能够测试通过集成测试很难或不可能测试的东西,反之亦然。