我有一个使用paster create -t 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?这方面有什么有效的例子吗?
发布于 2009-08-28 00:43:47
我会试着调试你的nosetest运行。为什么不放在:
import pdb;pdb.set_trace()在init_model()函数中,查看它如何被多次调用。
在PDB运行的情况下,可以使用where命令查看堆栈跟踪:
w(here)
Print a stack trace, with the most recent frame at the bottom.
An arrow indicates the "current frame", which determines the
context of most commands. 'bt' is an alias for this command.https://stackoverflow.com/questions/1342232
复制相似问题