当前位置: 首页 > 工具软件 > Robot Emil > 使用案例 >

RobotFramework 之 数据驱动

韩寒
2023-12-01

RF数据驱动

用例逻辑相同,每次输入的数据不同,并且数据量很大的时候,这时候就要使用到数据驱动。

比如测试输入框的内容,页面上有很多输入框,在输入框中要输入很多次数据进行验证,负数、0、小数、整数、中文、英文、特殊字符及组合输入。
总不能说每个输入框、每次输入都写一个测试用例进行验证,通过复制粘贴去修改内容,多麻烦。这时候用上数据驱动,就会省事很多

在RF中,通过使用 [template]用户关键字自发实现数据驱动

没有这种类型的例子进行很好的说明,依旧使用163邮箱登录进行举例验证

common.robot

*** Settings ***
Library     SeleniumLibrary

*** Keywords ***
登录网易邮箱
	[Arguments]    ${账号}      ${密码}
	# 打开chrome浏览器访问163邮箱
	open browser    https://mail.163.com/       chrome
	sleep    5
	maximize browser window
	# 切换到iframe
	select frame    xpath=//iframe[contains(@id,'iframe')]
	# 用户名输入框中输入 用户名
	sleep    2
	input text    xpath=//*[@name="email"]     ${账号}
	sleep    2
	# 密码输入框中输入 密码
	input text    xpath=//*[@name="password"]    ${密码}
	sleep    2
	# 点击登录按钮
	click element    xpath=//*[@id="dologin"]
	sleep    10


关闭浏览器
	close browser

[Template]关键字后的内容是定义的用户关键字,语法要求是后面接关键字
而此时用例的主体变成了要传递的参数的内容,对应的是${账号}${密码}
(编辑器会识别不了该语法,因为第一个参数不是关键字,会报红,但运行是不会报错的)

test.robot

*** Settings ***
Library     SeleniumLibrary
Resource    common.robot

*** Test Cases ***
网易邮箱
	[Template]      登录网易邮箱
	用户名1        密码1
	用户名2        密码2

注意,此时用例主体就不能再有其他关键字内容了,因为都变成了默认对应的参数${账号}${密码},如果还有其他关键字内容,会被当成是对应的参数进行传递,或者参数不对应,产生报错
test.robot

*** Settings ***
Library     SeleniumLibrary
Resource    common.robot

*** Test Cases ***
网易邮箱
	[Template]      登录网易邮箱
	用户名1        密码1
	用户名2        密码2
	sleep    10
	log		账号密码输入正确		登录成功		

此时 sleeplog都不被当成关键字了,而是当成是参数传递,因为 log一行相当于有3个参数,所以会产生报错

RF中的数据驱动没有python中来的方便,RF中没有关键字去读取excel中的数据,如果要在RF中使用比较复杂的数据驱动功能,还是推荐写成python模块,然后再进行引用

 类似资料: