Robot框架:无法从类中获取关键字,方法为

2024-04-20 11:08:25 发布

您现在位置:Python中文网/ 问答频道 /正文

如果python类包含方法,robot framework将无法从该类获取关键字(如果方法被注释掉,则测试将运行并通过)。在Python中实现测试类.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

<我的文件和机器人(>测试类机器人)是

^{pr2}$

我在运行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'

我想知道这是否是对robot框架的不支持使用,如果是,是否有一个建议的解决方案来重写/修改测试中的类以避免这个错误。在

通过调试器执行robot框架代码,我发现错误源于类\u类库中的方法测试库.py)。作为一个机器人框架的新手,我不知道如何解决这个问题。在

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


Tags: 方法pyself框架getreturnobjectdef
1条回答
网友
1楼 · 发布于 2024-04-20 11:08:25

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

一个简单的修复方法是检查两个对象是否属于同一类型,此外还要检查它们的属性:

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

相关问题 更多 >