Python AttributeError:对象在Unittest中没有属性
我有两个脚本,第一个是All_方法,另一个是All_测试用例,因为我使用的是unittest框架,所以我们开始 所有方法如下所示:Python AttributeError:对象在Unittest中没有属性,python,class,methods,python-unittest,Python,Class,Methods,Python Unittest,我有两个脚本,第一个是All_方法,另一个是All_测试用例,因为我使用的是unittest框架,所以我们开始 所有方法如下所示: class All_Services(): def abc(self): x =1 def bca(self): print "My Name is Taimoor" self.abc() def cba(self): self.bca() 在另一个脚本上,所有的测试用例都
class All_Services():
def abc(self):
x =1
def bca(self):
print "My Name is Taimoor"
self.abc()
def cba(self):
self.bca()
在另一个脚本上,所有的测试用例都是这样的:
from All_Methods import All_Services as service
class All_TestCases(unittest.TestCase):
def test_1_running_method(self)
service.cba(self)
例外情况如下:
AttributeError: 'All_TestCases' object has no attribute 'bca'
请有人告诉我,我在这里错过了什么?
谢谢。当您将self传递给调用该类的方法时,您没有以通常的方式使用类。常见的方法是在类的实例上调用方法并隐式地获取自参数 调用
方法时。运行\u query\u Athena(self)
self是All\u测试用例的一个实例,它没有连接\u Athena的方法
你的意思是让All\u测试用例
派生自All\u方法
为什么所有方法都是类
使用适当的缩进,因为python完全基于代码缩进的方式
请,请使用适当的命名约定;根据本协议的建议
您试图在没有实例的情况下访问实例方法
请尝试以下操作:
class MyClass:
def my_instance_method(self):
return True
@classmethod
def my_class_method(cls):
return True
@staticmethod
def my_static_method():
return True
这行不通:
>> MyClass.my_instance_method()
TypeError: my_instance_method() missing 1 required positional argument: 'self'
但是,由于它们没有绑定到正在创建的类实例,因此它们将被删除
MyClass.my_class_method()
MyClass.my_static_method()
实例方法需要实例化该类;意思是你使用:
MyClass().my_instance_method()
因为您似乎想要在类实例上设置response\u id
;使用表示类实例的self
参数来获取响应\u id
-我建议您使用一个实例方法并如上所示实例化该类(注意类名称后面的()
)
请务必修复问题中的格式。示例中的代码有很多错误,但请将其放在一边
该错误是由于将class A
的实例作为self
参数传递给class B
的(非静态)方法而导致的。
Python将尝试在类A
的实例上调用此方法,从而导致缺少属性错误
以下是问题的简化示例:
class A:
def is_ham(self):
# Python secretly does `self.is_ham()` here,
# because `self` is the current instance of Class A.
# Unless you explicitly pass `self` when calling the method.
return True
class B:
def is_it_ham(self):
# Note, `self` is an instance of class B here.
return A.is_ham(self)
spam = B()
spam.is_it_ham()
你似乎有可变的缩进宽度,你应该解决这个问题。你应该尝试做一个最小的例子,在那里你可以显示使用相同的问题。您不需要unittest,也不需要方法中的任何代码来触发此问题。事实上,这是我们的要求。我的意思是,您可以使用更简单的代码来重现此问题,以理解并了解如何解决此问题。而这不是变量缩进问题,否则它会向我发送indicationError。将所有方法作为一个类使用只是一个通用示例。我试着去做你提到的,但是所有的事情都是一样的,当调用方法在脚本中创建一个对象时是有效的,但是当我在其他类的其他脚本上使用相同的东西时,它根本不起作用。你介意分享整个代码吗?(删除任何敏感数据)我猜您在测试用例中误用了self
;我想你可能把你的生活复杂化了一点,试着用这个-它可能会有帮助。另外:从所有方法导入所有方法作为方法
将其更改为更独特的方法。-这个问题本身很难理解,如果你想更新它,请告诉我,我会尽力帮助你。:)