我们正在为我们的模型使用Redisco,我正在为我们的模型编写一些测试,但redis一直在填充,因此对于每个测试,更多数据都会添加到reddis。
有没有办法清除每个测试的Redis,以及测试时的最佳实践(使用redis和redisco)
这是我最终采用的解决方案,我想与可能有同样问题的其他人分享这个问题
要确保每个测试用例都在干净的Redis实例上运行,请运行
启动每个测试用例redis = Redis()
redis.flushall()
正如人们在下面评论过的那样,请确保不针对Redis的生产实例运行测试
答案 0 :(得分:0)
我建议运行第二个redis实例进行测试(例如,在不同的端口上...),这样您在运行测试时也无法意外地从redis中删除任何生产数据。
然后您可以使用自定义BaseTestClass
来覆盖项目的设置(在setUp
方法中 - 您也可以在那里发送redis的dbs),以便它们指向另一个redis实例(希望你'我们在项目的设置中定义了你的redis连接,并让你的所有测试类继承自这个基类。
答案 1 :(得分:0)
处理单元测试中连接数据库等副作用的标准方法是在测试期间提供数据层的模拟实现。这可以通过多种方式完成,您可以使用不同的redis实例,或动态覆盖方法来报告您的测试,而不是实际操作数据库等。
Dependancy Injection是一种用于此类问题的模式,更常用于Java等静态语言,但有Python工具,请参阅http://code.google.com/p/snake-guice/