视频教程传送门:https://ke.qq.com/course/417461?taid=3602880561307317
robot framework库
Builtin:提供了一组通常需要的通用关键字
String:生成、修改和验证字符串的库
Screenshot:提供关键字捕捉桌面截图
XML:生成、修改和验证xml文件的库
DateTime:日期和时间转换库
……
Web自动化测试: SeleniumLibrary, Selenium2Library, Selenium2Library for Java、watir-robot等。
Windows GUI测试: AutoltLibrary。
移动测试: Android library、 iOS library、 AppiumLibrary等。
数据库测试: Database Library(Java)、Database Library(Python)、 MongoDB library等。
文件对比测试: Diff Library。
HTTP测试:Http library(livetest)、Http library(Requests)等
……
robot framework库与单元测试框架比较
相同点:
setUp/tearDown
提供测试套件(用于运行一组测试用例的集合)
测试运行
生成HTML测试结果(主流的单元测试框架有生成HTML的扩展)
不同点:
语法
robot framework自建语法, unittest使用 Python语法。
支持库
robot framework支持特定库, unittest支持 Python的任意库。
@ 脚本对比, robot framework
*** Settings***
Library Selenium2Library
*** Test Cases ***
testcase
open browser https://www.baidu.com chrome
input text id=kw robot framework
click button id=su
close browser
说明:testcase之后的四条语句行首有四个空格
@ 脚本对比, unittest
from selenium import webdriver
import unittest
class Mytest(unittest.Testcase):
def testcase(self):
dr= webdriver.Chrome()
dr.find_element_by_id("kw").send_keys("robot framework")
dr.find_element_by_id("su").click()
dr.close()
if __name__ == '__main__':
unittest.main()
说明:定义的对象继承自unittest.Testcase,测试用例要以test开头-> def testcase(self)
robot framework准备
Python2.x/Python3.x/(对python2支持更好)
robot framework
wxPython2.8.12.1(win32) (可选)
robot framework-ride(可选,是官方标准编辑器)
Python -> https://www.python.org
robot framework -> https://github.com/robotframework/robotframework
wxPython -> http://sourceforge. net/projects/wxpython/files/wxPython/2.8.12.1/
robot framwork-ride -> https://github.com/robotframework/RIDE
robot framework安装
【环境】 Win10 + Python3.7(仅安装了这一个版本)
C:\Users>pip show robotframework
WARNING: Package(s) not found: robotframework
C:\Users>pip install robotframework
…(省略)…
C:\Users\Learnrf>pip show robotframework
Name: robotframework
Version: 3.1.2
Summary: Generic automation framework for acceptance testing and robotic process automation (RPA)
Home-page: http://robotframework.org
Author: Pekka Klärck
Author-email: peke@eliga.fi
License: Apache License 2.0
Location: c:\users\learnrf\appdata\local\programs\python\python37\lib\site-packages
Requires:
Required-by:
C:\Users\Learnrf>
编辑文件rf_demo.robot,内容如下
***Settings***
***Test Cases***
testcase
log robot framwork
执行命令 pybot rf_demo.robot,提示“pybot 不是内部命令”
【解决】找到路径Python\Python37\Scripts,编辑文件 pybot.bat内容如下
@Echo off
python -m robot.run %*
再次执行命令 pybot rf_demo.robot,结果如下
输出了三个文件,
report.html长这样 —>
log.html长这样 —>
output.xml长这样 —>
robot framework编辑器
因为使用的是Python3,所以不使用RIDE,可以下载一些编辑器的插件,打开 https://robotframework.org/ 选中TOOLS中的EDITORS,点开对应插件的链接
(1)例如Notepad++
可以使用 git 命令Clone或者下载到本地,这里下载到本地。
然后按照按照 README.md 操作:
语言->自定义语言格式...->导入->选择lang-robot.xml,提示导入成功。
然后在“语言”中就可以找到
注意:该语法高亮只适合扩展名为“.robot”的文件
(2)再如sublime
参考视频教程https://ke.qq.com/course/417461?taid=3602889151241909(后半节)
* 下载&安装
* 打开robot framework 项目与代码着色设置
Preferences->Browse Packages...
View->Syntax->Robot Framework syntax highlighting.)
* 运行
ROBOT FRAMEWORK基础关键字
* robot framework的基础关键字封装 Builtin库中,它里面包含了最基础的一些关键字。
例如:打印、定义变量、定义数组、时间、分支语句、循环语句、调用 Python模块等。
*其它基础库: Dialogs、Collections、Operating System、Remote、ScreenshotString、Telnet、XML、 Process、Date Time
@ Builtin
-定义变量
-定义列表
-连接字符串
-时间关键字
-分支语句关键字
-循环语句关键字
-使用python模块
(1)定义变量
编辑key_variable.robot,内容如下
执行结果如下
C:\rf>pybot key_variable.robot
==============================================================================
Key Variable
==============================================================================
variable | PASS |
------------------------------------------------------------------------------
Key Variable | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output: C:\rf\output.xml
Log: C:\rf\log.html
Report: C:\rf\report.html
C:\rf>
说明:
1.首行的 *** Test Cases *** 不可少,否则执行会报错
C:\rf>pybot key_variable.robot
[ ERROR ] Parsing 'key_variable.robot' failed: File has no tests or tasks.
Try --help for usage information.
C:\rf>
2.第二行是用例名称
3.第三行给变量a赋值,需要使用${}代表变量,每列以4个空格分隔
4.日志记录变量a的值,打开输出文件log.html,找到记录的log
(2)定义列表
编辑key_list.robot,内容如下
log.html中关键字内容如下
(3)连接字符串
编辑key_catenate.robot,内容如下
log.html中关键字内容如下
(4)时间关键字
编辑key_time.robot,内容如下
说明:
1.第3行和第6行的关键字get time 可以获取当前时间
2.第5行的sleep 5 会等5秒
log.html中关键字内容如下,可以瞅瞅时间戳~
(5)分支语句关键字
编辑key_if.robot,内容如下
说明:4-7行是分支语句,第5-7行第一列是三个句点(...)不能少
log.html中关键字内容如下
(6)循环语句关键字
编辑key_for.robot,内容如下
说明:
1.循环10次,注意FOR前要有冒号
2.第一列为“\”(如果用python2 + RIDE,第一列是留空)
log.html中关键字内容如下
(7)使用python模块
import random
number=random.randint(1000,9999)
print(number)
上述python语句对应如下robot framework语句
random_py
${d} Evaluate random.randint(1000,9999) random
log ${d}
编辑pymod.robot,内容如下
说明:
1.需要使用关键字Evaluate
2.第3行和第7行的第4列是导入的模块名,等价于python语句 import <模块名>
执行结果如下
C:\rf>pybot pymod.robot
==============================================================================
Pymod
==============================================================================
random_py | PASS |
------------------------------------------------------------------------------
time_py | PASS |
------------------------------------------------------------------------------
Pymod | PASS |
2 critical tests, 2 passed, 0 failed
2 tests total, 2 passed, 0 failed
==============================================================================
Output: C:\rf\output.xml
Log: C:\rf\log.html
Report: C:\rf\report.html
C:\rf>
log.html中测试用例内容如下,前者生成范围内随机数,后者获取当前时间
将上述用例写到一个文件base_key.robot 中
*** Test Cases ***
variable
${a} Set variable hello world
log ${a}
list
${abc} Create List a b c
log ${abc}
catenate
${hi} Catenate hello world
log ${hi}
time
${t} get time
log ${t}
sleep 5
${t} get time
log ${t}
if
${a} Set variable 59
run keyword if ${a}>=90 log 优秀
... ELSE IF ${a}>=70 log 良好
... ELSE IF ${a}>=60 log 及格
... ELSE log 不及格
for
: FOR ${i} IN RANGE 10
\ log ${i}
random_py
${d} Evaluate random.randint(1000,9999) random
log ${d}
time_py
${t} Evaluate time.ctime() time
log ${t}
执行结果如下