gpt4 book ai didi

python - 机器人框架 : Unable to get keywords from class with __eq__ method

转载 作者:行者123 更新时间:2023-11-28 17:15:32 25 4
gpt4 key购买 nike

如果 python 类包含 __eq__ 方法,机器人框架无法从类中获取关键字(如果 __eq__ 方法被注释掉,测试运行并通过).例如,如果我的 Python 类(在 TestClass.py 中实现)是

class TestClass(object):
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2

def get_arg1(self):
return self.arg1

def get_arg2(self):
return self.arg2

def __eq__(self, other):
return self.arg1 == other.arg1 and self.arg2 == other.arg2

我的机器人文件 (TestClass.robot) 是

*** Settings ***
Library TestClass 1 2 WITH NAME First_Lib

*** Variables ***

*** Test Cases ***
MyTest1
${result}= First_Lib.get arg1
Should be equal as integers ${result} 1
MyTest2
${result}= First_Lib.get arg2
Should be equal as integers ${result} 2

我在运行 robot v3.0.2 时看到以下错误消息。

[ ERROR ] Error in file 'TestClass.robot': Getting keyword names from library 'TestClass' failed: AttributeError: type object 'object' has no attribute 'arg1'

我想了解这是否是对机器人框架的不支持使用,如果是,是否有推荐的解决方案来重写/修改被测类以避免此错误。

通过调试器执行机器人框架代码,我发现错误源自类 _ClassLibrary 中的方法 _get_handler_method(在文件 teSTLibraries 中.py)。作为机器人框架的新手,我不确定如何解决这个问题。

任何建议都会有很大帮助!!

最佳答案

您的 __eq__ 方法有问题。您的实现假设一个实例只会与另一个实例进行比较,但它可以与任何事物进行比较。例如,如果您将实例与字符串进行比较,您的函数将抛出错误,因为字符串没有 arg1 属性。

一个简单的解决方法是检查两个对象是否属于同一类型,以及检查它们的属性:

def __eq__(self, other):
return (isinstance(other, self.__class__) and
self.arg1 == other.arg1 and
self.arg2 == other.arg2)

关于python - 机器人框架 : Unable to get keywords from class with __eq__ method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44296954/

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