私は最近、単体テストでNoseを使い始めました。ただし、エラーが発生したときにエラー情報を実際には奇妙な方法で出力することを除いて、かなり良いです。 1行に1文字に分割し、行番号で印刷します。誰にどのようにこれを修正するための任意のアイデアがありますか?Pythonのノーズテスト(実際にはMoxのエラーです)は、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行!
EDIT:
それは私が8時間の自分の質問に答えることはできませんので、私は私が見つけた解決策で編集しています:
アーロンDigullaが指摘するように、問題は鼻ではありませんMox(私はオブジェクトをモックするために使用しています)。
mox.pyでExpectedMethodCallsErrorのSTRメソッドの先頭に次の行を追加すると、(とにかくまたはこの症状)問題が修正されています。
if isinstance(self._expected_methods, str):
self._expected_methods = self._expected_methods.split("\n")
上記はUnicode文字列では機能しません。 strとunicodeの両方を処理するより安全な方法は、isinstance(self._expected_methods、basestring)です。 –
Davideさん、ありがとうございます。 –