在 Robot Framework 中实例化 class

Instantiating a class in Robot Framework

我有一个 python API 包装器,我可以像这样使用它:

from api.MyApi import *

client = MyApi(server)

users = client.user.get_users()

我想编写一个使用它的测试库,我可以在 Robot Framework 中使用它,但我无法让它按照我想要的方式工作。 我试过以下方法:

test.robot

*** Settings ***
Library  api.MyApi  ${SERVER}  WITH NAME  client

*** Variables ***

*** Keywords ***
Get users
    ${response}=  client.user.get_users()
    Log  ${response.content}   

*** Test Cases ***
Test: Test 1
    Get users

这导致

No keyword with name 'client.user.get_users()' found.

如何创建和使用 API 客户端的实例?

您可以有关键字文件和库文件。

要获得一个库文件,您需要创建一个 class,然后在机器人框架脚本中调用它,然后在您的测试库中,您应该创建将作为机器人框架关键字的方法

示例:

HelloWorld.py

class HelloWorld():
    def Keyword_Robot(hello, world):
        print(hello + " " + world)

Keyword.robot

*** Settings ***       
Library         HelloWorld.py

*** Test Cases ***

First custom Keyword
    Keyword Robot  "Hello"  "World"

输出:

Hello World

备注

此关键字采用的参数需要在自定义关键字之后传递到机器人框架内部。

您不应尝试在机器人测试中直接使用您的 api 库,因为它并非设计为用作关键字库。

相反,创建您自己的关键字库可以调用 api 来完成工作。然后,不是在测试中创建 get keywords 关键字,而是在库中创建。

例如,创建一个名为 "APIKeywords.py" 的文件,它将与您的服务器建立连接。在其中,创建一个名为 get_users 的关键字,它使用连接来获取用户:

from api.MyApi import *

class APIKeywords() :
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'

    def __init__(self, server):
        self.server = server
        self.client = MyAPI(self.server)

    def get_users(self):
        return self.client.user.get_users()

您可以像使用任何其他库一样使用此关键字库。例如:

*** Variable ***
${SERVER}  localhost

*** Settings ***
Library  APIKeywords.py  ${SERVER}  WITH NAME  client

*** Test cases ***
Example 
    ${users}=  get users

如果您想在调用关键字时明确使用 client,您可以将最后一行更改为:

${users}=  client.get_users

${users}=  client.get users