你看到的行为似乎是正确的:
self.assertRaises(NameError, self.pswd.check, [])
你打电话来
check
not passwords
是
True
NameError
升起。就测试而言,这是预期的行为,一切正常。
现在,如果您将行更改为,例如:
self.assertRaises(NameError, self.pswd.check, ['123'])
======================================================================
FAIL: test_password_checker_raises_nameerror_for_noargs (test_check.TestPasswordChecker)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/so/test_check.py", line 10, in test_password_checker_raises_nameerror_for_noargs
self.assertRaises(NameError, self.pswd.check, ['123'])
AssertionError: NameError not raised
因为方法已运行,并返回
None
命名错误
实际上,您的测试可能如下所示:
...
def test_password_checker_raises_nameerror_for_noargs(self):
self.assertRaises(NameError, self.pswd.check, [])
def test_password_checker_returns_none_with_args(self):
self.assertIsNone(self.pswd.check(['123']))
...
我们希望没有args
命名错误
被抚养。经过论证,我们预计
没有
被退回。
NameError
通常的意思是尝试使用未知变量。也许
ValueError
更合适。或者您可能需要定义自己的异常。