首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python鼻子测试(实际上是来自Mox的错误),每行打印一个字符(带有行号!)

Python鼻子测试(实际上是来自Mox的错误),每行打印一个字符(带有行号!)
EN

Stack Overflow用户
提问于 2011-05-25 12:04:45
回答 4查看 822关注 0票数 2

我最近开始在单元测试中使用鼻子。这是非常好的,但有时当错误发生时,它会以一种非常奇怪的方式输出错误信息。它将它分割成一行一个字符,然后用行号打印出来。有人知道怎么解决这个问题吗?

代码语言:javascript
复制
....F...............
======================================================================
FAIL: accounts.tests.testaccountserver.test_create_account_writes_an_account_to_the_store
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/tom/envs/myappshare/lib/python2.7/site-packages/nose/case.py", line 187, in runTest
    self.test(*self.arg)
  File "/media/Shared/Dropbox/jobs/myapp/myappshare/src/accounts/tests/testaccountserver.py", line 102, in test_create_account_writes_an_account_to_the_store
    mox.VerifyAll()
  File "/home/tom/envs/myappshare/lib/python2.7/site-packages/mox.py", line 286, in VerifyAll
    mock_obj._Verify()
  File "/home/tom/envs/myappshare/lib/python2.7/site-packages/mox.py", line 506, in _Verify
    raise ExpectedMethodCallsError(self._expected_calls_queue)
ExpectedMethodCallsError: Verify: Expected methods never called:
  0.  V
  1.  e
  2.  r
  3.  i
  4.  f
  5.  y
  6.  :
  7.   
  8.  E
  9.  x
 10.  p
 11.  e
 12.  c
 13.  t
 14.  e
 15.  d
 16.   
 17.  m
 18.  e       

等等,1346行!

编辑:

它不让我回答我自己的问题8个小时,所以我正在编辑的解决方案,我发现:

正如Aaron Digulla所指出的,问题不在于鼻子,而在于Mox (我用它来模拟对象)。

将这一行添加到ExpectedMethodCallsError的str方法的mox.py中,可以解决这个问题(或者这个症状):

代码语言:javascript
复制
if isinstance(self._expected_methods, str):
  self._expected_methods = self._expected_methods.split("\n")
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-26 08:55:17

正如Aaron Digulla所指出的,问题不在于鼻子,而在于Mox (我用它来模拟对象)。

将这一行添加到ExpectedMethodCallsError的str方法的mox.py中,可以解决这个问题(或者这个症状):

代码语言:javascript
复制
if isinstance(self._expected_methods, basestring):
  self._expected_methods = self._expected_methods.split("\n")
票数 3
EN

Stack Overflow用户

发布于 2011-05-25 12:06:28

ExpectedMethodCallsError__repr____str__方法似乎有错误。

或者在在mock_obj中注册预期方法的代码中。

票数 2
EN

Stack Overflow用户

发布于 2011-05-25 12:08:01

我不能直接解决你的问题,但我知道如何产生类似的问题。看起来鼻子遍历堆栈跟踪:

代码语言:javascript
复制
for line in lines:
   print "%s" % line

如果由于某种原因,变量lines是一个字符串,则该字符串将被迭代而不是行(导致每个字符打印一行,就像在您的例子中一样)。

问题是什么?我不知道:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6124180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档