[英]AttributeError 'class name' object has no attribute 'method'
[英]Why do I receive the following AttributeError when testing a class method with unittest: 'class' object has no attribute 'testing method'?
为了练习编码,我正在尝试编写一个非常简单的游戏。 尝试对(私有)class 方法运行测试时,我收到以下错误: AttributeError: 'LivingBeing' object has no attribute '_Test_Class_Methods__lose_hp'
更详细:
我在文件 classes.py 中有一个名为“LivingBeing”的 class。
class LivingBeing:
def __init__(self, name, hp=100):
self.name = name
self.hp = hp
def __lose_hp(self, number=20, decimal_percentage=1):
self.hp = self.hp - (21 - number)*decimal_percentage
return self.hp
现在我想测试所说的 __lose_hp 方法,我用下面的代码试了一下:
import sys, unittest
sys.path.append("/Users/angel/OneDrive/Dokumente/Studium/CL/Programmieren/git_projects/fantasticgame/")
from classes import LivingBeing
class Test_Class_Methods(unittest.TestCase):
def setUp(self):
self.livingbeing = LivingBeing("Life")
def test_lose_hp(self):
self.assertEqual(self.livingbeing.__lose_hp(20), 99, "Should be 99")
if __name__ == "__main__":
unittest.main()
到目前为止我尝试了什么:
我查了一些资料说很可能是ImportError,所以我根据类似问题的解决方法尝试了“sys.path.append”-statement。 因此,如果我将其遗漏,我将收到相同的错误消息。 文件“classes.py”和测试文件位于同一个文件夹中。
起初,我没有 setUp 方法,但是它已经为其他人( 即这里)解决了一个有点类似的问题,所以我尝试了它 - 但是对我来说是同样的错误消息。
起初我也没有在 class 方法本身中有 return 语句,对此我非常理解为什么它现在会抛出错误(因为返回值将是 None)。
非常经典的尝试只是重新启动(计算机)并在发布前重试也没有帮助。
有一点我试图制作“Test_Class_Methods”
继承自 unittest.Testcase 和 LivingBeing,但这
再次导致同样的错误。
看起来像这样:
class Test_Class_Methods(unittest.TestCase, LivingBeing):
def setUp(self):
self.livingbeing = LivingBeing("Life")
def test_lose_hp(self):
self.assertEqual(self.livingbeing.__lose_hp(20), 99, "Should be 99")
这是我的第一个问题,我希望它尽可能完整和简洁,我感谢任何有助于解决上述错误的指示。
编辑:我将方法更改为公开而不是私有,并且通过这种更改,它现在可以工作了。 如果我碰巧找到了一个关于如何为私有方法编写测试的好指南,我可能会在此处链接它以供将来寻求答案的人使用。
我知道有点太晚了,但我面临着和你一样的 AttributeError。 从我想测试的 function 的开头删除双下划线对我有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.