and*_*ell 5 python testing nose nosetests
我正在写一个带鼻子的测试服,并希望失败的情况下显示输出
"失败:is_even(5):甚至没有"
而不是默认输出:
======================================================================
FAIL: seed_db.test_generator(5,)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/home/apurcell/tests/prism/seed_db.py", line 59, in is_even
nose.tools.eq_(x % 2, 0, msg="Not even")
File "/usr/local/lib/python2.7/dist-packages/nose/tools.py", line 31, in eq_
assert a == b, msg or "%r != %r" % (a, b)
AssertionError: Not even
----------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
是否可以选择鼻子?
一种可能的解决方案是将错误流重定向到类似流的对象并在那里处理不同的输出。这可能类似于以下代码片段:
import sys
class MyErrorStream():
def write(self, txt):
# Do something if
# output contains
# special exception
altered_txt = 'My special exception is:\n' + txt
sys.__stderr__.write(altered_txt)
if(__name__ == '__main__'):
error_stream = MyErrorStream()
sys.stderr = error_stream
assert(1 == 0)
Run Code Online (Sandbox Code Playgroud)
但这个解决方案并不是最好的解决方案。改变堆栈跟踪的另一种方法是修改处理输出的鼻子的内部类。您可以将其子类化并覆盖/扩展创建输出文本的方法。因为我没有使用鼻子,所以我无法给出最小的代码片段。尽管如此,我还是希望能够帮助你。
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |