使用init_model中的模型对Pylons app进行鼻子测试?

时间:2009-08-27 16:29:19

标签: python sqlalchemy pylons nose nosetests

我有一个使用paster create -t pylons创建的库存Pylons应用程序,其中包含一个控制器和匹配的功能测试,使用paster controller添加,以及一个SQLAlchemy表和映射的ORM类。 SQLAlchemy的内容在init_model()函数中定义,而不是在模块范围内定义(并且需要在那里)。

运行python setup.py test会引发异常,因为nose会导致init_model()在同一进程中被调用两次,因此它正在尝试创建已存在的模型。

我可以通过设置和检查init_model()内的全局变量来解决这个问题,但是(a)我宁愿不这样做,而且(b)动态定义模型的第三方库(如AuthKit)会破坏测试同样,也不能那么容易改变。

有没有办法修复Pylons的nose测试,或者我应该编写自己的测试脚本并直接使用unittestloadappwebtest?有什么实际的例子吗?

1 个答案:

答案 0 :(得分:3)

我会尝试调试你的测试运行。为什么不放:

import pdb;pdb.set_trace()
<{1>}函数中的

,看看它是如何被多次调用的。

运行PDB后,您可以使用init_model()命令查看堆栈跟踪:

where