【发布时间】:2019-02-21 18:19:30
【问题描述】:
我有这个功能代码:
class PasswordChecker(object):
passwords = ["aD23"]
def check(self, passwords):
if not passwords:
raise NameError('You have not entered any password')
else:
pass
还有这个测试代码:
import unittest
from app.passwordchecker import PasswordChecker
class TestPasswordChecker(unittest.TestCase):
def setUp(self):
self.pswd = PasswordChecker()
def test_password_checker_raises_nameerror_for_noargs(self):
self.assertRaises(NameError, self.pswd.check, [])
我希望通过在self.assertRaises() 中将[] 替换为[items] 导致测试失败时,它应该抛出NameError - You have not entered any password。但是,它会引发不同的错误,这意味着我的代码有问题。请帮忙
【问题讨论】:
-
这不是预期的结果吗?
check不做任何事情if passwords,并引发NameErrorif not passwords。如果你的断言中的列表有值,那么passwords将是真实的,因此不会引发错误。 -
您是否尝试过操作测试代码,使其产生一个带有我给它的参数的 NameError,即“您没有....?你会看到我的问题。
-
当我运行这个测试时,它通过了。
-
是的,它通过了,但现在根据它被定义为失败的方式让它失败
-
当我通过
['a']而不是[]时,测试失败。您能否更清楚地了解您期望发生的事情?
标签: python python-3.x unit-testing tdd