有没有办法判断函数是否在单元测试中执行?

时间:2009-10-21 14:43:36

标签: python unit-testing sqlite

我正在使用配置文件来获取我的数据库的信息。它始终获取主机名,然后确定要从此配置文件中使用的数据库选项。我想能够判断我是否在这里的单元测试中并使用内存sqlite数据库。有没有办法告诉我是否在单位测试中,还是我必须找到不同的方式?

5 个答案:

答案 0 :(得分:3)

使用IoC将数据库依赖项注入您的类。这应该通过在类的构造函数中处理一个存储库对象来完成。请注意,您不一定需要IoC容器来执行此操作。您只需要一个存储库接口和两个存储库实现。

注意:在Python中,IoC的工作方式略有不同。有关详细信息,请参阅http://code.activestate.com/recipes/413268/

答案 1 :(得分:1)

使用某种数据库配置并配置要使用的数据库,并在单元测试期间配置内存数据库。

答案 2 :(得分:0)

这是一种蛮力,但它有效。有一个代码检查的环境变量UNIT_TEST,并将其设置在单元测试驱动程序中。

答案 3 :(得分:0)

正如Robert Harvey指出的那样,如果您可以将设置传递给组件而不是让组件自行查找它会更好。这允许您通过提供另一个对象来交换设置,即

TestComponent(TestSettings())

而不是

TestComponent(LiveSettings())

或者,如果你想使用配置文件,

TestComponent(Settings("test.conf"))

而不是

TestComponent(Settings("live.conf"))

答案 4 :(得分:0)

我建议使用模拟库,例如mocker。而且,仅供参考,编写代码以检查您是否处于单元测试中是一种糟糕的代码味道。您的单元测试应该在您编写代码时执行正在测试的代码。