python - 异常测试失败

标签 python django unit-testing testing django-testing

当我保存一个用户模型时,我想检查它是否有用户名。 因此我写了这个pre_save:

@receiver(pre_save, sender=User)
def validate_user(sender, instance, **kwargs):
    if len(instance.username) <= 5: raise Exception("Username too short")

现在在我的测试方法中我想测试这个异常:

def test_user_no_username(self):
    u = User.objects.create()
    self.assertRaises(Exception, u.save())

测试失败。为什么?

最佳答案

assertRaises是一种特殊的异常(exception) - 作为第二个参数你应该传递一个可调用的:

assertRaises(exception, callable, *args, **kwds)

换句话说,不要调用u.save():

self.assertRaises(Exception, u.save)

此外,您真的应该考虑使用自定义异常或使用内置的 Django 验证错误,而不是引发和捕获广泛的 Exception

关于python - 异常测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32849791/

相关文章:

python - Docker:如何调试 localhost "Internal Server Error"?

python - 当一个人创建一个新模型时,应该在哪里放置代码来自动增加 Google App Engine/Django 上的分片计数器?

c# - 无法设置 TestContext 属性

pygame 应用程序运行时弹出 Python 终端窗口

python - 我把一些Python代码转成R格式,但是输出不一样

python - 我的对象不可迭代

django-tinymce 现代主题

ios - Xcode 9.3 中主要目标的代码覆盖率

c++ - googletest:如果测试失败则执行附加操作

Python smtp.connect 无法连接