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 客户端实例?
您不应该尝试在机器人测试中直接使用您的 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)