在机器人框架中,我有一个这样的测试套件:
test-suite/
??? Common.robot
??? TestCaseA.robot
??? TestCaseB.robot
Run Code Online (Sandbox Code Playgroud)
该文件Common.robot定义了两个TestCaseA.robot和将使用的一些关键字TestCaseB.robot.在其他语言Common.robot中称为库,但尝试像这样导入它
*** Settings ***
Library Commons
Run Code Online (Sandbox Code Playgroud)
或者那样
*** Settings ***
Library Commons.robot
Run Code Online (Sandbox Code Playgroud)
导致错误.
[ ERROR ] Error in file '[...]/TestCaseA.robot': Importing test library 'Commons' failed: ImportError: No module named Commons
Run Code Online (Sandbox Code Playgroud)
该关键字Library似乎仅适用于低级别测试库.我相信还有另一种方式.用户定义的库如何包含在机器人框架中?
我正在尝试使用我的机器人框架测试套件运行chrome headless.我设法用pylen使用selenium独立完成,如下所示:
options = webdriver.ChromeOptions()
options.add_argument('--headless')
my_driver = webdriver.Remote(command_executer=my_remote_address, desired_capabilities=options.to_capabilities)
Run Code Online (Sandbox Code Playgroud)
以下代码是我在机器人中所做的但是没有用的代码:
${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
${options.add_argument}= Set Variable add_argument=--headless
Create WebDriver Chrome chrome_options=${options}
Open Browser http://www.google.com chrome
Run Code Online (Sandbox Code Playgroud) 在将robotframework-seleniumlibrary与TSV文件一起使用时,如何为文本字段指定空白/空值?例如,我有以下内容:
Textfield Value Should Be identifier=name1 Chris
Textfield Value Should Be identifier=name2
Run Code Online (Sandbox Code Playgroud)
我想测试name2是空白的.我试过把它留空(它返回一个关于参数数量不正确的消息.我试过"",它寻找一对引号,''输入一个引号,而selenium似乎在寻找那个
以前我使用Robot Framework来自动化应用程序测试,但是新客户要求关注Spock + GEB.我从来没有使用它,但我需要快速比较其中两个工具并做出选择.请帮助我了解它们之间的区别以及每种方法的优点/缺点.
我正在尝试在机器人框架中创建测试设置层次结构.
我有一个子套件,它定义了自己的测试设置 - 但这会覆盖父套件的测试设置.
我希望两个测试设置一个接一个地运行,首先是父测试设置(在init .txt中定义),然后是使用*Settings*部分定义的测试设置.
我有一组按测试用例分类的测试数据,我希望有一个测试设置关键字来加载每个测试用例的数据.像这样的东西会起作用:
*** Keywords ***
Load Test Data
[Arguments] ${test case name}
${data}= Get File ${test case name}.txt
Set Test Variable ${data} ${data}
*** Testcases ***
First Test
Load Test Data First Test
Log ${data}
Second Test
Load Test Data Second Test
Log ${data}
Run Code Online (Sandbox Code Playgroud)
但是,不必在每个测试用例的开头包含"负载测试数据"关键字.是否有一个关键字可以获取测试用例的名称,所以我可以在"加载测试用例"中调用它并使其成为测试设置关键字,就像这样?
*** Settings ***
Test Setup Load Test Data
*** Keywords ***
Load Test Data
${test case name}= Get Test Case Name
${data}= Get File ${test case name}.txt
Set Test Variable ${data} ${data}
*** Testcases ***
First …Run Code Online (Sandbox Code Playgroud) 假设我在python中有一个类:
class TestClass(object):
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def print_args(self):
print arg1, arg2
Run Code Online (Sandbox Code Playgroud)
我想用来robotframework实现我的测试场景.我想从上面的类创建一个实例并调用它的方法.怎么做?我知道如何导入lib; 它应该是这样的:
Library TestClass
Run Code Online (Sandbox Code Playgroud)
我不知道如何从这个类初始化一个对象,并通过这个对象调用类方法.如果我想用python实现它,我会写一些像这样的代码:
import TestClass
test = TestClass('ARG1', 'ARG2')
test.print_args()
Run Code Online (Sandbox Code Playgroud)
现在,我想知道如何写这个robotframework.有帮助吗?
我有一个RF测试,我需要打印变量值,而不是名称.我正在尝试" 登录控制台Num:$ {Num} ",但log.html仅显示:
**KEYWORD** BuiltIn . Log To Console Num:, ${Num}
Documentation:
Logs the given message to the console.
Start / End / Elapsed: 20170209 12:14:05.273 / 20170209 12:14:05.273 / 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
我已经尝试设置日志级别(TRACE,DEBUG)但是没有用.我感谢你的帮助,谢谢.
*** Variables ***
${BROWSER} firefox
${URL} http://url/
${Delay} 0
Run Code Online (Sandbox Code Playgroud)
在我的settings.txt文件中,我有一个名为{BROWSER}的变量和关联值如上所示它是firefox
但我想要的是
*** Variables ***
@{BROWSERS} firefox chrome IE
${URL} http://url/
${Delay} 0
Run Code Online (Sandbox Code Playgroud)
像上面这样......所以当我首先运行测试套件时它将在firefox中运行并且在完成所有测试用例之后它将关闭firefox并将打开chrome并在chrome浏览器上再次运行所有测试用例..依此类推它将在IE上运行
那我们怎么能这样呢?
我不想手动(我的意思是逐个传递或通过编辑txt文件).完全自动....一旦我运行测试,它将自动在所有浏览器中测试.
PS:这是在settings.txt文件中,我有两个文件夹,其中我有test.txt文件.因此存在主要问题..我必须在循环中迭代这些文件夹
|-- main.py
|-- settings.txt //in this file i have browser variable (or Array)
|-- test1
| |-- testl.txt
| |-- test1_settings.txt //this will contain all the variables and user defined keyword related to test1 and
|-- test2
| |-- test2.txt
| |-- test2_settings.txt //same as test1
Run Code Online (Sandbox Code Playgroud)
我运行这样的测试用例
$pybot test1 test2
我有一个调用python方法的机器人框架测试套件.我希望该python方法在不失败测试的情况下将消息返回到控制台.具体来说,我正在尝试计划一个过程.
我可以使用"raise"将消息返回到控制台,但同时未通过测试.
def doSomething(self, testCFG={}):
'''
Do a process and time it.
'''
testCFG['operation'] = 'doSomething'
startTime = time.time()
response=self.Engine(testCFG)
endTime = time.time()
duration = int(round(endTime-startTime))
raise "doSomething took", duration//60 , "minutes and", duration%60, "seconds."
errmsg = 'doSomething failed'
if testCFG['code']: raise Exception(errmsg)
Run Code Online (Sandbox Code Playgroud)
或者我可以使用"打印"将消息返回到日志文件并报告而不会使测试失败,但该信息仅在报告中可用,而不是在控制台中.
def doSomething(self, testCFG={}):
'''
Do a process and time it.
'''
testCFG['operation'] = 'doSomething'
startTime = time.time()
response=self.Engine(testCFG)
endTime = time.time()
duration = int(round(endTime-startTime))
print "doSomething took", duration//60 , "minutes and", duration%60, "seconds."
errmsg = 'doSomething …Run Code Online (Sandbox Code Playgroud)