[英]Robot Framework - Not able to call Python function
I've a Python script on the same directory that I have my robotframework script.我有一个 Python 脚本,与我的机器人框架脚本位于同一目录。 I want to log on the console the result from a function present in my python script using robotframework.
我想使用机器人框架将 python 脚本中的 function 的结果登录到控制台。
My Python script (called raw_data.py):我的 Python 脚本(称为 raw_data.py):
from random import random
class raw_data:
def return_random_number(self):
result = random()
return result
raw_data = raw_data()
number = raw_data.return_random_number()
print(number)
My RobotFramework on the same directory:我的 RobotFramework 在同一目录中:
*** Settings ***
Library DatabaseLibrary
Library OperatingSystem
Library raw_data.py
Suite Setup Connect To Database pymysql ${DBName} ${DBUser} ${DBPass} ${DBHost} ${DBPort}
Suite Teardown Disconnect From Database
*** Variables ***
${DBName} #
${DBUser} #
${DBPass} #
${DBHost} #
${DBPort} #
Print random number
${result}= evaluate return_random_number()
log result: ${result}
But when I run my RobotFramework script I get:但是当我运行我的 RobotFramework 脚本时,我得到:
Print random number | FAIL |
Evaluating expression 'return_random_number()' failed: NameError: name 'return_random_number' is not defined nor importable as module
Well, you really just need to read the error message:好吧,你真的只需要阅读错误信息:
'return_random_number' is not defined nor importable as module
But the question is how to go from here.但问题是如何从这里 go 。
First off, it's good to start with reading the official documentation, specifically how to create custom libraries and use such keywords in your RF files.首先,最好从阅读官方文档开始,特别是如何创建自定义库并在您的 RF 文件中使用此类关键字。
After doing so, you'll find out several problems:这样做之后,你会发现几个问题:
from random import random
class RawData:
ROBOT_LIBRARY_SCOPE = 'TEST CASE'
def return_random_number(self):
return random()
raw_data = raw_data()
number = raw_data.return_random_number()
print(number)
So, your custom library should look like:因此,您的自定义库应如下所示:
RawData.py原始数据.py
from random import random
class RawData:
ROBOT_LIBRARY_SCOPE = 'TEST CASE'
ROBOT_LIBRARY_VERSION = 1.0
def return_random_number(self):
return random()
You can also add library version .您还可以添加库版本。 It's recommended, it's a good practice.
推荐,这是一个很好的做法。
Now, you want to import your library in RF:现在,您想在 RF 中导入您的库:
*** Settings ***
Library RawData.py
I don't know why you're calling it RawData
when in fact it returns a random number.我不知道你为什么叫它
RawData
实际上它返回一个随机数。 Consider using proper names.考虑使用专有名称。
Then you want to call your custom keyword.然后你想调用你的自定义关键字。 Custom keywords created in custom libraries could be called by simply typing the names of the Python methods without underscores, so you don't need any
Evaluate
keyword, you can just call your custom keyword like this:在自定义库中创建的自定义关键字可以通过简单地键入不带下划线的 Python 方法的名称来调用,因此您不需要任何
Evaluate
关键字,您可以像这样调用您的自定义关键字:
${result}= Return Random Number
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.