【问题标题】:How to call a method from python class to a robot class如何将python类中的方法调用到机器人类
【发布时间】:2018-08-29 16:53:05
【问题描述】:

我在 python 文件中有一个方法,它返回一个值 lilke URL。 我想通过附加 environment 来调用机器人框架来启动测试用例。 下面是我用过的代码。

python 和机器人文件代码。请让我知道我在哪里做错了。 我正在尝试从 python 文件调用方法,该方法将 url 返回到机器人框架类中,

Environment.py

class TestUrl:
  def getBaseUrl(self, env):
    if env == 'int':
        domain = 'example.com/'
        return domain


  def getFullUrlForEclaimsHome(self, env, partner):
    x = self.getBaseUrl(env)
    url = 'https://' + partner + x
    print url
    return 'https://' + partner + x

test.robot
*** Settings ***
Variables    ../../CommonTestClass/Environments.py

*** Variables ***
${browser}  chrome
${env}  int
${partner}  example
${example URL}  = call method  getFullUrlForEclaimsHome('${env}','${partner}')


*** Keywords ***
Launch the browser 
    sleep  2s
    Open Browser  ${example URL}  ${browser}
    Maximize Browser Window

【问题讨论】:

  • 您有一个名为Environment.py(单数)的文件和一个尝试使用名为Environments.py(复数)的文件的机器人测试。可能还有其他问题,但这绝对是一个。

标签: python robotframework


【解决方案1】:

文件的名称和类的名称(根据我的经验)应该匹配,所以如果文件被称为“Environments.py”你的类应该被称为“环境”这是因为一旦你将它导入机器人框架,您将直接调用方法“getBaseUrl”或“getFullUrlForEclaimsHome”。

另外,您的类定义中缺少 ():

class TestUrl():

示例:

我的 Python 文件名为:Tree.py

from anytree import Node, RenderTree

class Tree ():
    def generate_tree (self,db_server,db_table,db_username, db_password):
        DO_SOMETHING

    def retrieve_tree_info (self,db_server,db_table,db_username, db_password, tree_ID):
        DO_SOMETHING
        return (SOMETHING)

我的机器人框架文件:

*** Settings ***
Library           YOUR_LIBRARY
Resource          YOUR_RESOURCE
Library           ../External Library/Tree.py #PATH TO YOUR Tree.py FILE

   #NOTE: If you use some IDLE (I'm using RED) it give you suggestion about the method name, in my example the IDLE call it in a bit different way than it was called in the python file
*** Variables ***
YOUR_VARIABLE

*** Test Cases ***
Create tree
    DO_SOMETHING
    ${tree}=    Retrieve Tree Info    ${db_server}    ${db_name}    ${db_user}    ${db_password}    ${tree_ID}
    DO_SOMETHING

Verify Locations tree
    DO_SOMETHING
    ${tree}=    Retrieve Tree Info    ${db_server}    ${db_name}    ${db_user}    ${db_password}
    DO_SOMETHING

【讨论】:

  • 如果类名和模块名匹配,则不必在库导入中指定前者,没错-doc reference。顺便说一句,只有在子类化时才需要类定义中的括号:)
  • 哦,我不知道括号,所以只是为了避免错误,我一直在输入:S tks for the Tips ;)
  • @Carlo1585r 你能举例说明我如何在机器人类中调用“getFullUrlForEclaimsHome”并将其设置为变量
  • @Mahantesh 在答案中添加了示例
猜你喜欢
  • 2018-06-16
  • 2022-11-01
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
相关资源
最近更新 更多