1 、什么是 Robot Framework
- 由 Nokia Siemens Networks(诺基亚西门子)开发。
- Robot Framework 是一款基于 python 的功能自动化测试框架。
- 可以同时测试多种类型的客户端和接口。
- 主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。
2、 Robot Framework 的特点
- Robot Framework 框架本身并不提供任何类型的测试,它只提供作为自动化测试框架 的基本功能,如用例的批量执行、测试报告的生成等。
- 使用简单 ,可以像编写程序一样编写 Robot Framework 脚本。
- 易于使用,采用表格式语法,统一测试用例格式
3、Robot Framework 框架组成
4、导入包
5、注释
6、输出日志
7、运行测试
--》设置运行的测试
--》Run 选项卡→Start(或者快捷键 F8)
8、设置报告存储位置
9、控制台汉字乱码解决
方式一:修 改 pythonlibsite-packages obotidecontrib estrunner estrunner.py 中 的 latin1 为 mbcs;重启 ride
mbcs(Multi-Bytes Character Set):多字节字符集,根据系统自动显示为本国语言的字符,在中文系统下表示 GB2312
方试二:
修改pythonLibsite-packages obotidecontrib estrunner estrunnerplugin.py的SYSTEM为OUTPUT
10、创建变量、列表和字典
--》调节表格宽度
4、if语句
5、for循环
--》简单for与in range
--—》自定义关键字
--》exit for loop
--》continue for loop
提前进入下一轮循环
上述变量与循环的代码

*** Test Cases *** test01 Log hello ${uname} set variable zs #存入变量uname ${age} set variable 33 #存入变量age ${uname_type} evaluate type($uname) #查看变量uname类型 ${age_type} evaluate type($age) ${age_to_int} evaluate int($age)+20 #转str为int ${age_to_int_type} evaluate type($age_to_int) #查看变量age_to_int类型 ${ulist} create list zs ls ww Log ${ulist} #查看uist @{agelist} create list 19 20 33 Log ${agelist} Comment Log @{agelist} #写成@{agelist}会报错 ${student} create dictionary stu_name=zs stu_age=12 stu_class=chinese #字典 Log ${student} test02 Log if #如果num<=0,就让获取num的负数,再赋值给num ${num} set variable -56 ${num} run keyword if ${num}<=0 evaluate -int($num) Log ${num} Log if_else ${age} set variable 18 ${msg} run keyword if ${age}<18 set variable juveniles ... ELSE set variable adult Log ${msg} log if_else if_else ${score} set variable 22 ${level} run keyword if ${score}>=90 set variable A ... ELSE IF 80<=${score}<90 set variable B ... ELSE IF 70<=${score}<80 set variable C ... ELSE set variable D Log ${level} testFor [Tags] run Log for_ FOR ${num} IN 1 2 3 log ${num} END Log for_in_range FOR ${target} IN RANGE 4 8 log ${target} END testForj FOR ${i} IN RANGE 1 5 forj ${i} END testExit @{ulist} create list 2 5 6 8 FOR ${i} IN @{ulist} log ${i} run keyword if ${i}==5 exit for loop END testNext FOR ${num} IN RANGE 11 run keyword if ${num}%2==0 continue for loop log ${num} END *** Keywords *** forj [Arguments] ${i} FOR ${j} IN RANGE 1 ${i}+1 ${result} evaluate ${i}*${j} log ${i}*${j}=${result} log ${j} END
6、get请求
7、post请求
8、处理响应数据
json格式
获取json中的项
获得响应状态码
${响应结果.status_code}
获得响应 cookies
获得响应头
发送 cookies 数据
${响应结果} get request 会话名 /路径?参数=值&cookie 参数名=值
正则表达式查找数据
变量转存
1 create session webindex http://192.168.109.205:1080/webtours 2 ${res} get request webindex /welcome.pl?signOff=true 3 log ${res.content} #获取页面内容 4 log ${res.cookies} #获取页面的cookies 5 ${cookie} get from dictionary ${res.cookies} MSO #将cookies存到变量中 6 log ${cookie} #输出cookie值 7 ${res} get request webindex /nav.pl?in=home&MSO=${cookie} #发送 cookies 数据 8 log ${res.content} 9 ${session} get regexp matches ${res.text} userSession value=(.*)> 1 #获取useSession 10 log ${session}[0] #获取列表中的第一个 11 ${session} convert to string ${session}[0] #将{session}[0]转为字符串 12 ${header} create dictionary Content-Type=application/x-www-form-urlencoded #请求头 13 ${param} create dictionary username=zs1 password=1 userSession=${session} #登录参数 14 ${res} post request webindex /login.pl data=${param} headers=${header} #发送登录请求 15 log ${res.text} #获取结果
断言
-->equal
--》contain
-->Should Match Regexp
${变量} Should Match Regexp 变量 1 (?i)left 正 则 表 达 式 模 式 right 断言失败消息
参数化
1)使用列表参数化
2)使用文件数据参数化
--》创建模块,至少定义函数,建议使用参数和返回值。
1 def readFile(filename): 2 flist=[] 3 file=open(filename,'r') 4 for row in file : 5 flist.append(row.split()) 6 return flist
--》将 py 文件(即自定义库)加载到ride ,在 RF 用导入 Library 的方式导入。
--》在用例中直接使用返回值、函数名、参数。使用循环处理行、列数据。
--》实现读取文件进行登录
完整代码

1 testFile 2 [Tags] run 3 ${filename} set variable E:/pythonDocument/robotTest/users.txt #users.txt文件路径 4 @{users} readFile ${filename} 5 Comment log ${res} 6 FOR ${row} IN @{users} #循环输出每行 7 log ${row}[0] ${row}[1] 8 create session webindex http://192.168.109.201:1080/webtours 9 ${res} get request webindex /welcome.pl?signOff=true 10 Comment log ${res.content} #获取页面内容 11 Comment log ${res.cookies} #获取页面的cookies 12 ${cookie} get from dictionary ${res.cookies} MSO #将cookies存到变量中 13 Comment Comment log ${cookie} #输出cookie值 14 ${res} get request webindex /nav.pl?in=home&MSO=${cookie} #发送 cookies 数据 15 Comment log ${res.content} 16 ${session} get regexp matches ${res.text} userSession value=(.*)> 1 #获取useSession 17 Comment log ${session}[0] #获取列表中的第一个 18 ${session} convert to string ${session}[0] #将{session}[0]转为字符串 19 ${header} create dictionary Content-Type=application/x-www-form-urlencoded #请求头 20 ${param} create dictionary username=${row}[0] password=${row}[1] userSession=${session} #登录参数 21 ${res} post request webindex /login.pl data=${param} headers=${header} #发送登录请求 22 Comment log ${res.text} #获取结果 23 ${assert} run keyword and continue on failure Should Contain ${res.text} User password was correct - added a cookie with the user's default -------login fail------ 24 Comment log ${assert} 25 END
命令行运行
--》
@Echo off
python -m robot.run %*
--》进入测试文件所在文件夹,运行某个测试用例
--》运行当前文件夹下的所有用例
pybot.bat .
--> 运行当前目录下以.robot 为后缀名的测试文件
pybot *.robot
-->运行当前 test_a
pybot test_a