在使用googleappengine时,我已经开始关注unittest。从我所读的来看,这似乎有点棘手。因为您不能(也不应该)针对数据存储运行测试。在
我编写了一个抽象类来模拟数据存储模型类。在get、all、fetch等返回实体模型数据(只是在小范围内尝试过)返回类似dbModel的结果。在
我还没有找到一个我满意的解决方案,那就是如何区分使用哪个模型类。我想把模型用于单元测试和实际数据库模型用于webapp运行时。在
我当前的解决方案看起来像在My.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']
感觉好像随时都有可能破裂。这是该走的路还是可以把这些合并为一个类,如果数据库模型是否正确调用,否则使用模型?在
这不是真的。您可以而且应该将本地数据存储实现用作测试工具—没有理由浪费时间为每个数据存储行为创建模拟。你可以使用noseGAE或gaeunit之类的工具,正如其他海报所建议的那样,但是如果你想自己设置它,请参见this snippet。在
签出gaetestbed(docs)。它将数据存储(以及所有其他服务,如memcache)分离出来,并使从命令行进行测试变得非常容易。它确保在每次测试运行之前有一个干净的环境。在
我个人认为这比其他解决方案更好。在
我不想把你的
models.py
搞乱,我会选择gaeunit。在我在几个项目中成功地使用了它,我喜欢的功能有:
相关问题 更多 >
编程相关推荐