python - Is there a way to suppress printing that is done within a unit test? -
this question has answer here:
edit: please notice i'm using python 2.6 (as tagged)
say have following:
class foo: def bar(self): print 'bar' return 7 and have following unit test:
import unittest class ut_foo(unittest.testcase): def test_bar(self): obj = foo() res = obj.bar() self.assertequal(res, 7) so if run:
unittest.main() i get:
bar # <-- don't want this, *do* want rest . ---------------------------------------------------------------------- ran 1 test in 0.002s ok exit code: false my question is: there way suppress output of object being tested while still getting output of unittest framework?
call unittest option "-b" - buffer stdout , stderr
foo.py
class foo: def bar(self): print "bar" return 7 test.py
import unittest 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 -b option
$ python test.py -b . ---------------------------------------------------------------------- ran 1 test in 0.000s ok alternative: use nose
$ pip install nose what installs command nosetests
note, have modified test suite have class , methods prefixed test satisfy nose default test discovery rules.
nosetests default not show output
$ nosetests . ---------------------------------------------------------------------- ran 1 test in 0.002s ok if want see output, use -s switch:
$ nosetests -s bar . ---------------------------------------------------------------------- ran 1 test in 0.002s ok
Comments
Post a Comment