视频教程传送门:https://ke.qq.com/course/417461?taid=3602880561307317
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)等
……
相同点:
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)
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
【环境】 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: [email protected]
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长这样 —>
1.尝试在python3环境下安装RIDE
参考:
Python3+Robot Framework+RIDE安装使用教程 https://www.cnblogs.com/lsdb/p/10861344.html
Python3下robot framework ride 测试环境搭建 https://blog.csdn.net/be_x_man/article/details/80916063
Win10+Python3,使用pip安装log如下:
C:\rf>pip install robotframework-ride
Collecting robotframework-ride
Downloading https://files.pythonhosted.org/packages/36/d5/ece871dc64e4022c5f8c6772c333a7c686bccec45825c463c5542c2a5eac/robotframework-ride-1.7.4.1.zip (1.2MB)
|████████████████████████████████| 1.2MB 43kB/s
Collecting wxPython
Downloading https://files.pythonhosted.org/packages/8a/12/08d58ad0a782aa003f2f4c19c2d2d8a55bc0141f9b925ea2f066732a7319/wxPython-4.0.7.post2-cp37-cp37m-win_amd64.whl (23.0MB)
|████████████████████████████████| 23.0MB 43kB/s
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pypubsub/
Collecting PyPubSub
Downloading https://files.pythonhosted.org/packages/1a/41/a0aceb552d8ec63bb1e8223d130f9dd0f736470036d75d708183b104a2cb/Pypubsub-4.0.3-py3-none-any.whl (61kB)
|████████████████████████████████| 61kB 46kB/s
Collecting Pygments
Downloading https://files.pythonhosted.org/packages/be/39/32da3184734730c0e4d3fa3b2b5872104668ad6dc1b5a73d8e477e5fe967/Pygments-2.5.2-py2.py3-none-any.whl (896kB)
|████████████████████████████████| 901kB 18kB/s
Collecting Pywin32
Downloading https://files.pythonhosted.org/packages/bb/23/00fe4fbf9963f3bcb34a443eba0d0283fc51e5887d4045552c87490394e4/pywin32-227-cp37-cp37m-win_amd64.whl (9.1MB)
|████████████████████████████████| 9.1MB 31kB/s
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pillow/
Collecting pillow
Downloading https://files.pythonhosted.org/packages/88/6b/66f502b5ea615f69433ae1e23ec786b2cdadbe41a5cfb1e1fabb4f9c6ce9/Pillow-7.0.0-cp37-cp37m-win_amd64.whl (2.0MB)
|████████████████████████████████| 2.0MB 33kB/s
Collecting six
Downloading https://files.pythonhosted.org/packages/65/eb/1f97cb97bfc2390a276969c6fae16075da282f5058082d4cb10c6c5c1dba/six-1.14.0-py2.py3-none-any.whl
Requirement already satisfied: numpy; python_version >= "3.0" in c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages (from wxPython->robotframework-ride) (1.17.3)
Installing collected packages: pillow, six, wxPython, PyPubSub, Pygments, Pywin32, robotframework-ride
Running setup.py install for robotframework-ride ... done
Successfully installed PyPubSub-4.0.3 Pygments-2.5.2 Pywin32-227 pillow-7.0.0 robotframework-ride-1.7.4.1 six-1.14.0 wxPython-4.0.7.post2
WARNING: You are using pip version 19.3.1; however, version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
C:\rf>
然后会提示是否创建桌面快捷方式,点击确认即可。LOGO长这样
2.使用Python3,也可以下载编辑器插件,打开 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的基础关键字封装 Builtin库中,它里面包含了最基础的一些关键字。
例如:打印、定义变量、定义数组、时间、分支语句、循环语句、调用 Python模块等。
*其它基础库: Dialogs、Collections、Operating System、Remote、ScreenshotString、Telnet、XML、 Process、Date Time
@ Builtin
-定义变量
-定义列表
-连接字符串
-时间关键字
-分支语句关键字
-循环语句关键字
-使用python模块
(1)定义变量
执行结果如下
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}
执行结果如下
(To be continued...)