我想为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()
您可以执行以下操作:
checkEmailOk()
函数如何检查电子邮件,以及它返回哪个电子邮件的状态checkEmailOk()
并返回truthy或falsy值displaymessage()
函数来检查它是否被调用,如果被调用则检查它被调用的参数(例如,如果要使用pytest-mock
,则使用assert_called_once_with()
断言方法)不过,一般来说,添加测试是一件非常好的事情,因为在编写测试时,实际上是在使用代码。请注意为代码添加测试是多么简单和直接,如果您在检查某些用例时看到问题/复杂,在添加测试时达到某些前提条件/行为,这可能是被测代码设计和可用性较差的标志,也是考虑重新分解/重新构造代码的一个很好的理由。你知道吗
您的方法可以返回状态(should?)。然后您可以断言,对于一封有效的电子邮件,状态返回良好。你知道吗
对于另一部分-提出例外:
与自有资产(…),您可以告诉您的测试您将要执行的操作会引起错误。如果引发异常,测试就通过了(这与直觉相反,但测试它是有意义的)。因此,上面添加带有int的字符串是一个TypeError,因为python中没有关于带有int的字符串的加法定义。因此,该行引发TypeError异常。测试用例看到了异常,既然我告诉它会发生,测试就通过了。你知道吗
然后应该在代码中引发一个异常,例如:
理想情况下,不要引发这样的泛型异常—您可能希望创建一个自定义异常(或者,如果您不知道/不想想象泛型异常就可以了,那么我在这里做得太过分了)。你知道吗
相关问题 更多 >
编程相关推荐