Python Unittest:Error False不是真的。将加密密码与普通密码匹配。地穴

2024-09-24 20:40:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个“密码检查器”,将随机密码列表中的密码与加密密码进行匹配(这些密码不是真实的)。 它必须通过由我的老师创建的单元测试

def checkPassword(pswd, cpswd):

hallo = crypt.crypt(pswd, salt=cpswd)
if hallo == cpswd:
    return True
else:
    return False

这是unittest中引发错误的部分

    def test_empty(self):
  
    self.assertTrue(opg_rh.checkPassword('', ''))
    self.assertTrue(opg_rh.checkPassword('', 'zqN6spSQhii2U'))

    def test_pdf_1(self):
    
    self.assertTrue(opg_rh.checkPassword('test', 'npDnXtpN5py4U'))
    self.assertFalse(opg_rh.checkPassword('test', '2Y8H2JzGziJ0M'))

我得到的错误= def测试_为空(自): self.assertTrue(opg_rh.checkPassword('','')) 断言者错误:False不是true

有人知道我的代码出了什么问题吗?我就是搞不懂


Tags: testselffalse密码returndef错误rh
1条回答
网友
1楼 · 发布于 2024-09-24 20:40:26

如果单元测试中的test_empty(..)函数失败,这意味着要求您处理空密码情况。这意味着当用户在任何时候提供一个空密码时,您应该始终返回True或false(取决于您的老师期望的)

若要修复此问题,请尝试处理空密码大小写以始终返回True(这意味着您仅在提供的字符串不为空时尝试对其进行哈希):

def checkPassword(pswd, cpswd):
  if pswd == '' or cpswd == '':
    return True

  hallo = crypt.crypt(pswd, salt=cpswd)
  if hallo == cpswd:
    return True
  else:
    return False

相关问题 更多 >