- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个小代码如下,请帮助我如何以正确的方式编写它。我想检查 ID 是否存在于 value
中,如果不存在则引发异常。
value = ({'av' : '123', 'user' : 'abc', 'version' : 'xyz'})
with self.assertRaises(IndexError, value[0]["ID"]):
print "not an error"
最佳答案
您的代码的问题是 value[0]["ID"]
只是一个任意参数,在 Python 中参数在执行函数调用之前被评估。所以在你的情况下 assertRaises
没有机会拦截错误,因为它没有被调用。
我猜你正在寻找这个片段,如果你想坚持使用基于上下文管理器的方法,这在你需要一次评估语句或多个表达式的情况下很有用:
with self.assertRaises(IndexError):
value[0]["ID"]
如果您需要解析单个表达式(语句在 lambda 中不起作用),您也可以这样工作:
self.assertRaises(IndexError, lambda: value[0]["ID"])
有关这方面的更多信息,请查看 this question ,因为它似乎解决了您关于如何正确使用 assertRaises
的问题。
另请注意,在您的情况下,value
只是字典,而不是元组,尽管有括号 — 为了制作 value
单元素元组,请使用 foo = (bar, )
语法——需要尾随逗号来区分优先级覆盖括号,如 (2 + 2) * 3
。
此外,在单元测试中,您通常不需要输出任何与断言状态相关的信息——无论它通过还是失败,单元测试框架的工作就是形成适当的报告。但是,如果您无论如何都愿意打印它,只需在您的断言之后包含 print()
— 因为如果断言失败,测试将停止运行,并且控制将无法到达您的 print()
.
关于Python self.assertRaises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056179/
是否可以将 assertRaises 用于多种类型的异常。就像是 assertRaises(RuntimeError, "error message") assertRaises(Exception,
我有一个小代码如下,请帮助我如何以正确的方式编写它。我想检查 ID 是否存在于 value 中,如果不存在则引发异常。 value = ({'av' : '123', 'user' : 'abc',
我正在为 unit test in Django 使用 assertRaises . 我要测试的示例方法: def example_method(var, optional_var=None):
以下问题是由this post中的讨论引发的. 假设有两个文件(foobar.py 和 foobar_unittest.py)。文件 foobar.py 包含一个具有两个函数(foo 和 bar)的类
我有这个脚本 import unittest,itertools,random ##testclass class Testcomb(unittest.TestCase): def test
assertRaises 使用以下代码给出断言错误。我做错了什么吗? class File_too_small(Exception): "Check file size" def foo(a,
说我有课 class myClass(object): pname = "" def __getName(self): return pname def __setNam
我从 python.org unittest 文档中逐字复制了这个: import random import unittest class TestSequenceFunctions(unittes
我正在尝试测试异常。 我有: def test_set_catch_status_exception(self): mro = self.mro NEW_STATUS = 'No su
当测试传递给它的无效文件的 ImageField 时,Django 断言不会引发ValidationError。这是在 with self.assertRaises 上下文中完成的。但是,当我访问 f
感谢您提前提供的帮助。 我正在尝试测试以下类方法: def _get_ldap_connection(self): """ Instantiate and return simplel
def test_invalid_host(self): controller = SSHController("host name") self.assertRaises(SSHEx
我正在为 python 项目创建测试。正常测试工作得很好,但是我想测试在某种情况下我的函数是否引发了自定义异常。因此我想使用 assertRaises(Exception, Function)。有什么
我想知道是否有办法做到以下几点: class Test_Vector_test(unittest.TestCase): def test_add(self): vector1
我有一些代码,我正在测试一个包装异常,当它失败并且异常传播时,我认为错误消息和回溯不够详细,主要是因为它没有告诉我预期与. 测试,我想要异常和期望的详细信息。 我调整了我的测试(参见下面的示例代码)。
我正在尝试在条件引发自定义异常消息的函数内 assertRaise 异常。 功能: if not Cart.objects.filter(member=member).count(): rai
我遇到了以下相当奇怪的问题: 我正在开发一个 Django 应用程序,在我的模型类中,我定义了一个在验证失败时应该引发的异常: class MissingValueException(Exceptio
我的模型中有以下验证功能: @classmethod def validate_kind(cls, kind): if kind == 'test': raise Valida
我正在尝试在 Python 中对我的“添加”函数运行测试,但出现错误: 7 E ============================================================
我想捕获代码产生的 TypeError,但不幸的是,unittest 失败了: 代码如下: import unittest
我是一名优秀的程序员,十分优秀!