变量表中声明变量
首先我们要创建Variables表
***Variable***
${MgrloginUrl} http://localhost/mgr/login.html
${StudentLoginUrl} http://localhost/student/login/login.html
rf变量可以在用例里面定义,也可以在变量表里面定义
rf中的变量可以在测试套件文件中声明一个变量表。写法就是这样:Variables,对套件里的所有的测试用例都是有效的
*** Settings ***
*** Variables ***
${MgrloginUrl} http://localhost/mgr/login.html
${StudentLoginUrl} http://localhost/student/login/login.html
*** Test Cases ***
case1
log to console ${MgrloginUrl}
log to console ${StudentLoginUrl}
case2
log to console ${MgrloginUrl}
log to console ${StudentLoginUrl}
定义好了之后,只要改变变量就行
rf支持4种类型的表
Settings表:配置表;
Test Case:用例表;
Keywords:关键字表;
Variable:变量表。
List变量
- @{database} 127.0.0.1 3306
Dict变量
- ${user1} name=auto pw=sdfsdfsdf
使用整个变量
*** Variables ***
${MgrloginUrl} http://localhost/mgr/login.html
${StudentLoginUrl} http://localhost/student/login/login.html
@{database} 127.0.0.1 3306
&{adminuser} name=auto pw=sdfsdfsdf
*** Test Cases ***
case1
log to console ${database} #这样使用整个列表$
log to console ${adminuser} #这样写使用整个字典
#结果:['127.0.0.1', '3306'] name=auto pw=sdfsdfsdf
如果只想使用变量里面的单个的元素、
*** Variables ***
${MgrloginUrl} http://localhost/mgr/login.html
${StudentLoginUrl} http://localhost/student/login/login.html
@{database} 127.0.0.1 3306
&{adminuser} name=auto pw=sdfsdfsdf
*** Test Cases ***
case1
log to console @{database}[1] #这样使用单个的端口号
log to console &{adminuser}[name] #这样写使用单个名字
#结果:3306 auto
用户关键字为什么放到资源文件里面?就是复用性高,如果变量也是想在整个套件中使用。也可以放到资源文件里面
同样也是要在*** Settings ***里面Resource xx.robot 和关键字一样在同一个文件里,关键字申明过了,就行了
(定义字典关键字的图)
实际项目中可以弄一个用户关键字的keyword.robot的配置文件;在弄全局配置项config.robot配置文件。便于读写,便于维护
在用例的* Settings *表里面申明两个文件
也可以把变量文件写在python文件里面,用关键字Variables 同一个路径下面直接Variables xxx.py (也可以用绝对路径,但是不建议使用)。Variables搜索文件的时候。会在用例的同级目录下面找,如果找不到就在python的模块的搜索路(标准库,python.path)里面找。目录间的分割符是斜杠,不是点。
(有图)
单独加上来的
相对路径最好不要相对当前的文件的路径,最好相对当前项目的根目录。这时候所有的关键字文件,变量文件,都能找到。只要把rf项目的根目录作为py的模块搜索路径,就能解决这样的问题。不会因为层级的变化。而导致申明文件失败。所有的导入路径都是基于项目的根目录。
使用相对路径的时候,RF搜索规则和资源文件搜索规则一样:
先在相对当前文件的目录,匹配搜索
在python的模块搜索路径中搜索,可以用–pythonpath参数 (意思就是在pythonpath里面添加当前目录的路径)
Python扩展关键字
Python模块作为测试库
模块文件名作为测试库的名字
比如Python模块叫MyLibrary,对应的Python文件是Library.py。那么测试库名字就是MyLibrary
定义在Python模块文件中的函数,名称前有_前缀的不会作为关键字
def returnlist():
return[1,2]
def _returnlist(): #不会作为关键字的,有下划线就不可以
return[1,2]
申明Library的时候,最好是用点形容路径。
而Resourse,Variables都是用/表示