我有一个使用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
测试,或者我应该编写自己的测试脚本并直接使用unittest
,loadapp
和webtest
?有什么实际的例子吗?
答案 0 :(得分:3)
我会尝试调试你的测试运行。为什么不放:
import pdb;pdb.set_trace()
<{1>}函数中的,看看它是如何被多次调用的。
运行PDB后,您可以使用init_model()
命令查看堆栈跟踪:
where