我刚刚重写了一大块Django代码,这些代码与40-like状态FSM有关。对于所涉及的三个模型,每个模型都有很多STATE_DEFINITIONS =“4.7.1”,如果当前状态== SOME_STATE或者在[ONE_STATE,OR_ANOTHER]中有很多检查。
我只使用一个词典。说其中一个模型看起来像:
class OneModel(models.Model):
STATUS_ONE = "1.0"
STATUS_TWO = "2.0"
STATUS_MAPPING = {
STATUS_ONE:OtherModel.STATUS_X,
STATUS_TWO:OtherModels.STATUS_Y,
}
所有键都是唯一的字符串,如果我从代码中删除它,就会发生同样的事情。
当我python manage.py test my_app
时,我得到了可能是最不有用的错误消息:
TypeError: unhashable type: 'list'
就是这样,没有它发生的线,没有上下文。有没有人对如何调试这个没有任何建议,不涉及文件中800+的逐行?
答案 0 :(得分:3)
尝试传递--traceback
选项。
答案 1 :(得分:0)
检查manage.py
是否有吞咽异常行为;可能是这样的:
try:
....
except Exception, exc:
print exc.message
如果找到它,请改为raise
,这样就可以看到整个追溯。
答案 2 :(得分:0)
如果您安装了ipython,可以尝试:ipython -i manage.py test my_app
。然后输入%debug
命令进行调试。