Mad*_*kul 7 python unit-testing exception python-unittest
我想测试是否使用unittest.
下面是我的示例代码:
def foo():
try:
raise Exception(ValueError)
except ValueError:
print "raised"
Run Code Online (Sandbox Code Playgroud)
这是我想做的事情:
self.assertRaises(ValueError, foo)
Run Code Online (Sandbox Code Playgroud)
由于我捕获了异常,因此我无法assertRaise处理异常。我错过了什么还是有其他方法?
我的完整代码:
#!/usr/bin/python
import unittest
def foo():
try:
raise ValueError
except ValueError, e:
print "caught"
class tester(unittest.TestCase):
def test1(self):
with self.assertRaises(ValueError):
foo()
def test2(self):
self.assertRaises(ValueError, foo)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
您可以捕获stdout并测试字符串匹配。Pytest为此提供了一个固定装置。
#!/usr/bin/python
import unittest
def foo():
try:
raise ValueError
except ValueError, e:
print "caught"
def test_foo(capfd):
foo()
out, err = capfd.readouterr()
assert out == "caught\n"
Run Code Online (Sandbox Code Playgroud)
py.test 测试.py
============================= test session starts ==============================
platform linux2 -- Python 2.7.9 -- py-1.4.28 -- pytest-2.7.1
rootdir: /tmp, inifile:
collected 1 items
test.py .
=========================== 1 passed in 0.01 seconds ===========================
Run Code Online (Sandbox Code Playgroud)