我是Python的新手,我想使用assertRaises测试来判断ValidationError,它工作得很好.但是,我有很多ValidationError,我想确保退回正确的.我想我可以将一些东西传递给assertRaises,但是看起来我不能,所以我想我只需要执行assertTrue并判断异常消息.但是,我不知道如何访问它.这是处理这个问题的好方法吗?谢谢.

class DailyEntriesTests(TestCase):
def test_cant_have_ip_and_user(self):
    u = createUser(False)
    de = createDailyEntry(u, "1.1.1.1", 1)
    with self.assertRaises(ValidationError) as cm:
        de.full_clean()

    # this line bombs - message doesn't exist. I also tried "error_code" like I saw in the documentation, but that doesn't work
    print(cm.exception.message)

    self.assertTrue(cm.exception.message.contains("Both"))

推荐答案

你可以只用assertRaisesRegexp.

with self.assertRaisesRegexp(ValidationError, "Both"):
    de.full_clean()

当您将其用作上下文管理器时,第二个参数是一个正则表达式,用于搜索异常的字符串表示.

Django相关问答推荐

如何在REST框架中以SON格式返回错误,而不是HTML格式返回错误?

Django测试:如何模拟Django_apps.get_Model()的LookupError

Django Prefetch上的多重过滤

通过 B 的外键列表访问模型 B 的行

通过从不同模型中提取值来在基于 django 类的视图中传递变量

Django中的 联合(Union) 和相交(Intersect)

初始填充 Django 表单

Django:想要将一个空字段显示为空白而不是显示无

为 Django 模型生成非顺序 ID/PK

Django:将原始html(来自数据库)显示为html,而不是呈现

Django 管理命令参数

Django,如何从模型表单的 Select 字段中删除空白 Select ?

使用 Python / Django 的 Google API 示例的 Oauth

Django:使用render或render_to_response时添加响应头

Django查询在哪里

使用 Django 1.5 实现多种用户类型

Django Admin:如何在同一视图中显示来自两个不同模型的字段?

如何查询名称包含python列表中任何单词的模型?

为整个结果集向 Django Rest Framework 结果添加额外数据

关闭 Django Rest Framework ModelViewSet 的自动分页