在Robot Framework中实例化一个类

时间:2018-10-24 22:37:11

标签: python class instance robotframework

我有一个可以像这样使用的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客户端实例?

2 个答案:

答案 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

注意

此关键字带有参数,需要在自定义关键字之后将其传递到机器人框架内部。