1

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

运行python setup.py test引发异常,因为在同一进程nose中以某种方式导致init_model()被调用两次,因此它试图创建一个已经存在的模型。

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

有没有办法修复nosePylons 的测试,或者我应该编写自己的测试脚本并直接使用unittest,loadappwebtest?这有什么可行的例子吗?

4

1 回答 1

3

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

import pdb;pdb.set_trace()

init_model()函数中,看看它是如何被多次调用的。

where随着 PDB 运行,您可以使用以下命令查看堆栈跟踪:

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.
于 2009-08-28T00:43:46.507 回答