Python 的“unittest”缺少“assertHasAttr”方法,我应该使用什么来代替?

2024-01-20

在众多的断言方法中Python的标准unittest package https://docs.python.org/3/library/unittest.html, .assertHasAttr()奇怪的是缺席了。在编写一些单元测试时,我遇到了一种情况,我想测试对象实例中是否存在属性。

对于失踪者来说,安全/正确的替代方案是什么.assertHasAttr() method?


当我写问题时想出了答案。给定一个继承自的类/测试用例unittest.TestCase,您只需添加一个基于的方法.assertTrue():

def assertHasAttr(self, obj, intendedAttr):
    testBool = hasattr(obj, intendedAttr)

    # python >=3.8 only, see below for older pythons
    self.assertTrue(testBool, msg=f'obj lacking an attribute. {obj=}, {intendedAttr=}')

Duh.

我之前在谷歌搜索时没有找到任何东西,所以我将把它留在这里,以防其他人遇到类似的问题。

update

我已经更新了我的答案以使用整洁的新f 字符串的“自记录”功能 https://docs.python.org/3/whatsnew/3.8.html#f-strings-support-for-self-documenting-expressions-and-debugging这是在 python 3.8 中添加的。如果你想要一个assertHasAttrfunc 将与任何 python(包括

# last line of original answer, will work with any python
self.assertTrue(testBool, msg='obj lacking an attribute. obj: %s, intendedAttr: %s' % (obj, intendedAttr))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 的“unittest”缺少“assertHasAttr”方法,我应该使用什么来代替? 的相关文章

随机推荐

  • Opencv:从许可证中裁剪文本区域

    我有一张驾驶执照的下图 我想提取有关驾驶执照 姓名 出生日期等的信息 我的思考过程是找到一种方法将它们逐行分组 并裁剪出包含姓名的单个矩形 eng 和 ara 的许可证等 但我却惨遭失败 import cv2 import os impor
  • 使用opengl进行真正的等角投影

    有没有简单的方法进行等角投影 I mean 真正的等角投影 http en wikipedia org wiki Isometric projection 不是一般的正交投影 只有当单位 X Y 和 Z 向量的投影长度相等且它们之间的角度恰
  • WCF 中的并发如何工作?

    我是WCF和SOA的新手 我刚刚开始研究这些 我有一个理论上的疑问 客户端 A 已调用服务 并且逻辑当前正在服务器上执行 当逻辑正在执行时 来自客户端 B 的另一个调用会进入同一服务 此时客户端 A 正在执行的逻辑发生了什么 该服务如何设法
  • 使用 getter 样式方法名称将业务逻辑添加到域类

    我正在尝试向 grails 域类添加一个方法 例如 class Item String name String getReversedName name reverse 当我尝试使用 grails 控制台加载应用程序时 出现以下错误 导致
  • WWDC 2010 示例代码 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以下载 WWDC 2010 代码示例 我是一名注册的 iPhone 开发人员 但似乎无法在 Apple 网站上找到示例 或者更简单
  • Angular:strictTemplates - 如何正确设置模板中的布尔值和数字?

    I set strictTemplates true并在 HTML 模板中使用以下内容
  • Seaborn 热图 pandas 对 isnull 的计算

    生成数据帧的一系列计算 以提供 NaN 占行总数的百分比 如下所示 data df isnull sum len df 100 RecordID 0 000000 ContactID 0 000000 EmailAddress 0 0000
  • “this”语法如何工作?

    这条线是 this attr id replace button 相当于这个 this attr id replace button since this始终包含对object of invocation 这确实取决于where你调用该代码
  • Pip 通过需求文件安装单个包的多个额外依赖项

    一些包 例如DVC https dvc org doc install linux install with pip允许您安装额外的依赖项以使用附加功能 安装单个额外的依赖项 无论是通过命令行还是在requirements txt 你只需使
  • 如何从 jquery 手风琴中删除活动轮廓?

    我正在使用 Jquery 手风琴 活动链接有一个轮廓 我尝试过使用CSS accordion a focus outline none accordion a active outline none font weight bold and
  • 如何突出显示 UITextView 的文本的一部分?

    我想做的是 如果我的详细视图被调用 我想仅突出显示文本的一部分UITextView元素 让我们说一下里面的文字UITextView is blatextbla 然后我只想动态突出显示text or late或用户想到的任何内容 我怎样才能做
  • 在 Node.js 中使用“网页”Phantom 模块

    我正在尝试将 PhantomJS 脚本包装在 node js 进程中 phantom 脚本从命令行提供的参数中获取 url 并输出 pdf 与 pahntom 安装中包含的 rasterize js 示例非常相似 我的幻像脚本工作正常 只是
  • 如何强制 Emacs 超时?

    我在 emacs 中经常使用 TRAMP 然而 有时服务器会宕机 流浪汉会等待超时 通常是在做了之后C x f在 ido 模式下打开一个新文件 我必须等待一段令人烦恼的漫长时间 有没有一种简单的方法可以告诉 TRAMP 超时并让 ido 模
  • 在流星中导入 svg 文件

    我正在开发一个使用 Meteor React 作为前端和后端的项目 对于前端 UI 我使用 element react https eleme github io element react en US quick start https
  • Matlab如何绘制平滑的等高线图?

    我想用 2D 格式的 2 个变量表示数据 该值由颜色表示 2 个变量作为第 2 个轴 我正在使用轮廓函数来绘制我的数据 clc clear load dataM mat cMap jet 256 set the colomap using
  • 刷新用户函数 t-SQL 的元数据

    我正在做一些 T SQL 编程 并且在我的数据库上定义了一些视图 这些天数据模型仍在变化 我定义了一些表函数 有时我故意使用 select from MYVIEW 在这样的表函数中返回所有列 如果视图 或表 发生变化 函数就会崩溃 我需要重
  • 滑动导航抽屉不处理菜单项android的点击

    我正在尝试在应用程序中使用滑动导航抽屉 然而 它似乎没有处理 OnItemClick 方法 当我点击一个项目时没有任何反应 我怎样才能让它工作 谢谢 主要活动 protected void onCreate Bundle savedInst
  • C++ 编译时子字符串

    我有非常大的代码库 它使用 FILE 广泛用于日志记录 但是 它包含完整路径 这是 1 不需要的 2 可能会发生安全违规 我正在尝试编写编译时子字符串表达式 最终以这个解决方案 https blog galowicz de 2016 02
  • 高级类型的辅助模式

    编辑 这是问题的一个更简单的表述 使用Foo作为一个例子Aux模式其中does work Foo is a simple Aux pattern type trait Foo A B type Out object Foo type Aux
  • Python 的“unittest”缺少“assertHasAttr”方法,我应该使用什么来代替?

    在众多的断言方法中Python的标准unittest package https docs python org 3 library unittest html assertHasAttr 奇怪的是缺席了 在编写一些单元测试时 我遇到了一种