我试图通过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