在使用谷歌应用引擎时,我已经开始研究单元测试。从我读过的内容来看,这似乎有点棘手。因为您不能(也不应该)针对数据存储运行测试。
我编写了一个抽象类来模拟数据存储模型类。在 get、all、fetch 等(仅小规模尝试)返回类似结果的 dbModel 时,返回模型数据非常好。
我还没有找到令我满意的解决方案的一件事是如何区分使用哪个模型类。我想使用模型进行单元测试,并在 webapp 运行时使用实际的 db.Model。
我当前的解决方案在包含所有 db.Models 的 .py 中如下所示:
if 'SERVER_SOFTWARE' in os.environ:
class dbTest(db.Model):
content = db.StringProperty()
comments = db.ListProperty(str)
else:
class dbTest(Abstract):
content = 'Test'
comments = ['test1', 'test2']
感觉它随时都可能坏掉。这是要走的路还是可以将它们组合为一个类,如果正确调用了 db.Model,则使用其他模型?
请您参考如下方法:
查看 gaetestbed (docs)。它会 stub 数据存储(以及所有其他服务,如内存缓存)并使从命令行进行测试变得非常容易。它确保在每次测试运行之前都有一个干净的环境。
我个人认为它比我见过的其他解决方案更好。
