在 Robot Framework 中实例化一个类

Aim*_*nes 2 python class instance robotframework

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

from api.MyApi import *

client = MyApi(server)

users = client.user.get_users()
Run Code Online (Sandbox Code Playgroud)

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

测试机器人

*** 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
Run Code Online (Sandbox Code Playgroud)

这导致

No keyword with name 'client.user.get_users()' found.
Run Code Online (Sandbox Code Playgroud)

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

Bry*_*ley 5

您不应该尝试在机器人测试中直接使用您的 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()
Run Code Online (Sandbox Code Playgroud)

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

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

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

*** Test cases ***
Example 
    ${users}=  get users
Run Code Online (Sandbox Code Playgroud)

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

${users}=  client.get_users
Run Code Online (Sandbox Code Playgroud)

或者

${users}=  client.get users
Run Code Online (Sandbox Code Playgroud)