【发布时间】:2015-08-09 05:47:04
【问题描述】:
我正在使用 Python 中的普通 unittest (import unittest) 编写集成测试,并正在为一些外部服务创建存根。现在我想用一个真实的实现来运行相同的测试;还要保留存根。这样我就可以在有和没有存根的情况下运行测试并比较行为。
我正在通过 SetupTools 和 PyCharm 运行我的测试。我是否有一些通用的方法来设置/注入/引导一个参数,告诉我的代码是使用存根还是真正的实现?命令行优先。任何指针表示赞赏。 :)
【问题讨论】:
-
单元测试不应该使用真正的实现。如果他们这样做,他们将是集成测试。进行使用真实实现的单独测试。
-
我只是在使用 unittest 库,但你是对的,它们是集成测试。无论如何:我希望能够同时练习真正的实现和存根。当外部发生变化时,这种比较给了我很多价值。
-
假设您正在测试一个名为
foo的单元。本单元使用bar的真实实现。 Bar 有错字并引发错误。即使foo单元没有任何错误,您对foo的单元测试也会失败。这就是为什么在单元测试中使用真正的实现是不可取的,我认为你应该重新考虑这种方法。 -
就像我说的:它们是集成测试。我也有单元测试。我想同时运行两者,而不仅仅是其中一个。但我需要一些方法来管理在那个特定时间点处于活动状态。
标签: python unit-testing integration-testing python-unittest stubbing