ash*_*bar 17 python python-2.6 python-unittest
编辑:请注意我正在使用Python 2.6(标记为)
说我有以下内容:
class Foo:
def bar(self):
print 'bar'
return 7
Run Code Online (Sandbox Code Playgroud)
并说我有以下单元测试:
import unittest
class ut_Foo(unittest.TestCase):
def test_bar(self):
obj = Foo()
res = obj.bar()
self.assertEqual(res, 7)
Run Code Online (Sandbox Code Playgroud)
所以如果我跑:
unittest.main()
Run Code Online (Sandbox Code Playgroud)
我明白了:
bar # <-- I don't want this, but I *do* want the rest
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
Exit code: False
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法抑制被测对象的输出,同时仍然得到unittest框架的输出?
编辑 此问题不是标记问题的副本,该问题询问是否在正常python脚本中对特定函数的stdout进行静默.
虽然这个问题是在运行它的单元测试时询问是否隐藏了python脚本的正常标准输出.我仍然希望显示unittest标准输出,我不想禁用我测试过的脚本的标准输出.
Jan*_*sky 22
使用选项"-b"调用unittest - buffer stdout和stderr
Foo.pyclass Foo:
def bar(self):
print "bar"
return 7
Run Code Online (Sandbox Code Playgroud)
test.pyimport unittest
from Foo import Foo
class test_Foo(unittest.TestCase):
def test_bar(self):
obj = Foo()
res = obj.bar()
self.assertEqual(res, 7)
if __name__ == "__main__":
unittest.main()
Run Code Online (Sandbox Code Playgroud)
$ python test.py -b
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Run Code Online (Sandbox Code Playgroud)
nose$ pip install nose
Run Code Online (Sandbox Code Playgroud)
什么安装命令 nosetests
请注意,我已经修改了测试套件,以使类和方法前缀test为满足nose默认测试发现规则.
nosetests 默认情况下不显示输出
$ nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
Run Code Online (Sandbox Code Playgroud)
如果要查看输出,请使用-s开关:
$ nosetests -s
bar
.
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
Run Code Online (Sandbox Code Playgroud)
小智 10
您可以通过禁用 sys.stdout 并在测试完成后启用它来抑制输出:
import sys
import io
import unittest
class ut_Foo(unittest.TestCase):
def test_bar(self):
#You suppress here:
suppress_text = io.StringIO()
sys.stdout = suppress_text
obj = Foo()
res = obj.bar()
self.assertEqual(res, 7)
#You release here:
sys.stdout = sys.__stdout__
Run Code Online (Sandbox Code Playgroud)
所有这些都来自:
https://codingdose.info/2018/03/22/supress-print-output-in-python/
| 归档时间: |
|
| 查看次数: |
8037 次 |
| 最近记录: |