gpt4 book ai didi

Python 的 `unittest` 缺少 `assertHasAttr` 方法,我应该用什么代替?

转载 作者:太空狗 更新时间:2023-10-29 21:45:10 27 4
gpt4 key购买 nike

Python's standard unittest package 中的许多断言方法中, .assertHasAttr() 奇怪地缺席了。在编写一些单元测试时,我遇到了一个案例,我想测试对象实例中是否存在某个属性。

对于缺少的 .assertHasAttr() 方法,什么是安全/正确的替代方法?

最佳答案

在我写问题的时候想出了一个答案。给定一个继承自 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=}')

呃。

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

更新

我已经更新了我的答案以使用全新的 "self-documenting" feature for f-strings这是在 python 3.8 中添加的。如果您想要一个与任何 python(包括 <=3.7)兼容的 assertHasAttr 函数,请将最后一行更改为:

# last line of original answer, will work with any python
self.assertTrue(testBool, msg='obj lacking an attribute. obj: %s, intendedAttr: %s' % (obj, intendedAttr))

关于Python 的 `unittest` 缺少 `assertHasAttr` 方法,我应该用什么代替?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com