我想为handleEmail()创建2个测试: 1.电子邮件可以,没有任何错误 2.该函数引发消息电子邮件格式错误或重复
但是,我不知道该怎么做,因为它不返回任何内容。那么如何测试该功能呢?
class RegisterController:
def handleEmail(self):
"""get email from user, check email then display message
"""
self.getEmail()
status = self.model.checkEmailOk(self.email)
if not status:
message = "Email is either wrong format or duplicate"
self.displaymessage(message)
return self.handleEmail()
def createAccount(self):
self.handleEmail()
self.handlePasswordValid()
答案 0 :(得分:0)
您可以执行以下操作:
checkEmailOk()
函数如何检查电子邮件以及该电子邮件返回什么状态pytest-mock
:
checkEmailOk()
并返回真实值或虚假值displaymessage()
函数来检查是否被调用,并检查是否调用了该参数(例如,如果要使用assert_called_once_with()
,则使用pytest-mock
断言方法) 不过,总的来说,添加测试确实是一件好事,因为在为其编写测试时实际上正在使用代码。只需注意为代码添加测试是多么容易和直接,并且,如果在检查某些用例时发现问题/复杂性,在添加测试时达到某些前提条件/行为,则可能表示设计和可用性不佳。测试中的代码,以及有充分的理由考虑对其进行重构/重构。
答案 1 :(得分:0)
您的方法可以返回状态(应该吗?)。然后,您可以断言该状态对于有效的电子邮件来说是正确的。
对于另一部分-引发异常:
import unittest
class MyTest(unittest.TestCase):
def test_sample(self):
with self.assertRaises(TypeError):
c = "a" + 42
if __name__ == '__main__':
unittest.main()
使用self.assertRaises(...),您可以告诉测试您将要做一些应该引起错误的事情。如果引发了异常,则测试通过(违反直觉,但可以进行测试)。因此,在上面添加带有int的字符串是TypeError,因为在python中没有定义带有int的字符串的加法定义。因此,该行引发TypeError异常。测试用例看到了异常,并且自从我告诉它将会发生,测试就通过了。
然后您应该在代码中引发一个异常,例如:
if not status:
raise Exception(" Wrong email ")
理想情况下不会引发这样的泛型异常-您可能想创建一个自定义异常(或者如果您不知道/想获得泛型异常就好了,或者我在这里走得太远了)。