注意:这与nosetests --pdb ...
相反
我通常在单元测试中使用这种模式。你知道吗
try:
assert something
except Exception, e:
if flag_pdb_enabled: pdb.set_trace()
raise
这样,当我运行单独的测试时,一旦出现异常,我就可以立即进入调试器。你知道吗
现在,大多数时候我都小心地用条件保护pdb.set_trace()
。但有时我忘记了,我有:
try:
assert something
except Exception, e:
pdb.set_trace()
raise
问题是,在nosetests
下,测试只是暂停,我没有得到调试器正在进行的指示。然后我就得去寻找那些不设防的pdb触发器。你知道吗
是的,我知道这可能不是最好的QA实践,但是这个系统运行良好,除了偶尔意外的停顿。你知道吗
有没有办法:
修补基本pdb.set\u跟踪让它在鼻子测试下什么都不做?
另一种选择:下拉到nosetests自己的调试器,就像从nosetests --pdb
得到的一样?
我的测试通过stdif __name__ == "__main__":
知道它们是否在nosetests
之下。你知道吗
mocking的想法是好的,但我有时会觉得mock有点让人望而生畏,很难尽早找到mock目标来修补它。但我真的不需要什么复杂的东西,只是一种无所事事的行为。你知道吗
我就是这么做的:
效果还不错。我故意的
pdb.set_trace
被完全忽略了。你知道吗甚至不干扰
nosetests pdb
,它必须是它自己的函数引用:我的“用户pdb”打印出假代码,而nosetests的调试器在其他异常时触发。你知道吗这是在Python2.7的nosetests上
这是一个混乱的解决方案,但你可以使用单元测试.mock你知道吗
像这样的
如果您使用
nosetests -s
(或nocapture
),那么您将得到实际的pdb
提示,而不是挂起。当然,这只有在以交互方式运行测试时才有帮助,但这可能仍然是一种改进。你知道吗相关问题 更多 >
编程相关推荐