我试图通过Python中的函数在登录时生成一个随机名称。问题在于,尽管我已经导入了库并显式调用了它,但它不将其视为函数,而是视为纯文本。这是文件Generators.py中的Python函数:

import random

letters = [chr(ord('a')+i) for i in range(26)]

def generate_name():
    name = ""
    for i in range(9):
        name = name + random.choice(letters)
    return "Testing_Mark[" + name + "]"


这是机器人文件:

*** Settings ***
Library     Generators.py
Library     Selenium2Library

*** Variables ***
${User}                     Generators.Generate Name
${Password}                 1234
*** Test Cases ***
Organisation Test
    Open Browser    http://mywebsite.com/login     googlechrome
    Log In
    [Teardown]  Close Browser

*** Keywords ***
Log In
    Wait Until Page Contains    Log in
    Input Text          //input[@name="name"]        ${User}
    Input Password      //input[@name="password"]     ${Password}
    Click Button        //button[@type="submit"]
    Wait Until Element Is Visible   //span[@class="alert-description"]
    Sleep   3


我究竟做错了什么?我知道Robot应该将上述功能识别为关键字,但仍然不知道为什么不是这样。这两个文件都在同一文件夹中。

最佳答案

变量表仅按原样分配值,而关键字不在变量表中执行。

Robot Framework User Guide的报价:


  它们(变量表)的主要缺点是值始终是字符串,并且它们
  无法动态创建。如果其中任何一个有问题,
  可以使用变量文件代替。


因此,您的${User}现在是Generators.Generate Name。作为字符串。移动

${User}                     Generators.Generate Name


进入测试用例。

*** Test Cases ***

Organisation Test
    ${User}                     Generators.Generate Name
    Open Browser    http://mywebsite.com/login     googlechrome
    Log In
    [Teardown]  Close Browser

10-07 19:59
查看更多