使用 init_model 中的模型对 Pylons 应用程序进行鼻子测试?
我有一个使用 paster create -t pylons
创建的库存 Pylons 应用程序,其中包含一个控制器和匹配的功能测试,使用 paster 控制器
添加,以及一个 SQLAlchemy 表和映射的 ORM 类。 SQLAlchemy 的内容是在 init_model()
函数中定义的,而不是在模块范围内(并且需要在那里)。
运行 python setup.py test
会引发异常,因为 nose
不知何故导致 init_model()
在同一进程中被调用两次,因此它正在尝试创建一个已经存在的模型。
我可以通过在 init_model()
中设置和检查全局变量来巧妙地解决此问题,但是 (a) 我不愿意,(b) 动态定义模型的第三方库(例如 AuthKit)会中断测试也是如此,并且不能轻易更改。
有没有办法修复 Pylons 的 nose
测试,或者我应该编写自己的测试脚本并仅使用 unittest
、loadapp
和webtest ?有这方面的工作示例吗?
I have a stock Pylons app created using paster create -t pylons
with one controller and matched functional test, added using paster controller
, and a SQLAlchemy table and mapped ORM class. The SQLAlchemy stuff is defined in the init_model()
function rather than in module scope (and needs to be there).
Running python setup.py test
raises an exception because nose
is somehow causing init_model()
to be called twice within the same process, so it's trying to create a model that already exists.
I can hackishly fix this by setting and checking a global variable inside init_model()
, but (a) I'd rather not, and (b) third-party libraries such as AuthKit that dynamically define models break the tests as well, and can't be so easily changed.
Is there a way to fix nose
tests for Pylons, or should I write my own test script and just use unittest
, loadapp
, and webtest
directly? Any working examples of this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我会尝试调试你的鼻子测试运行。为什么不将:
放在
init_model()
函数中,看看它是如何被多次调用的。当 PDB 运行时,您可以使用
where
命令查看堆栈跟踪:I would try debugging your nosetest run. Why not put:
in the
init_model()
function and see how it is getting invoked more than once.With PDB running you can see the stack trace using the
where
command: