我有一个可以像这样使用的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客户端实例?
答案 0 :(得分:2)
您不应尝试在机器人测试中直接使用您的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
答案 1 :(得分:1)
您可以拥有关键字文件和库文件。
要拥有一个库文件,您需要创建一个类,然后在robot框架脚本中调用它,然后在测试库中,您应该创建将在robot框架中充当关键字的方法
示例:
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
注意
此关键字带有参数,需要在自定义关键字之后将其传递到机器人框架内部。