2

最近、ユニットテストにNoseを使い始めました。エラーが発生すると、エラー情報が非常に奇妙な方法で出力されることがあることを除けば、かなり良いです。1行に1文字に分割され、行番号とともに出力されます。誰かがこれを修正する方法を知っていますか?

....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(オブジェクトのモックに使用しています)にあります。

この行をmox.pyのExpectedMethodCallsErrorのstrメソッドの先頭に追加すると、問題(またはとにかくこの症状)が修正されます。

if isinstance(self._expected_methods, str):
  self._expected_methods = self._expected_methods.split("\n")
4

4 に答える 4

2

またはメソッドにエラーがあるようExpectedMethodCallsErrorです。__repr____str__

または、期待されるメソッドをに登録するコード内mock_obj

于 2011-05-25T12:06:28.537 に答える
2

あなたの問題を直接解決することはできませんが、同様のものを生成する方法は知っています。ノーズはスタック トレースを繰り返し処理しているようです。

for line in lines:
   print "%s" % line

何らかの理由で variablelinesが文字列の場合、文字列は行の代わりに反復されます (その結果、あなたの場合と同じように文字ごとに 1 行が印刷されます)。

問題は何ですか:わかりません:)

于 2011-05-25T12:08:01.037 に答える
1

私のシステムでは、文字列が Unicode として渡されていることがわかりました。追加のテスト ケースでこれをカバーします。

if (isinstance(self._expected_methods, str) or 
    isinstance(self._expected_methods, unicode)):
    self._expected_methods = self._expected_methods.split("\n")
于 2012-09-02T15:12:35.727 に答える