robot framework
(仅作为个人笔记,如有雷同,请联系删除。。)
参考:https://www.cnblogs.com/chenyuebai/p/8359577.html
1、Robot Framework是一个基于Python可扩展地关键字驱动的测试自动化框架。
-
支持简单易用的表格型语法,使得可以用统一方式创建测试用例;
-
提供可以复用既存的关键字的功能;
-
提供HTML的简单易读的报表和日志结果文件;
-
平台和应用相互独立;
-
提供简单的Libary API,可以使用Ptyhon或者java进行实现;
-
提供命令行接口和XML格式的输出文件,非常容易进行持续集成;
-
支持Selenium,Java Gui测试,Telnet,SSH等;
-
支持创建数据驱动的测试用例;
-
变量的内建支持,尤其是不同测试环境下的测试;
-
提供test case和test suite级别的setup和teardown;
2、环境搭建:【默认已安装python,ride好像不支持python3,需要python2 ??后期确认下】
-
pip install robotframework
:Robot framework 框架。[ 也可直接下载exe安装包:https://github.com/robotframework/robotframework ]。 -
pip install wxPython
:python 非常有名的一个GUI库,RIDE基于这个库开发,是安装RIDE的前提。 -
pip install robotframework-ride
:RIDE是一个图形界面的用于创建、组织、运行测试的软件【我们当前用的RFCode】。[ 也可直接下载exe安装包:https://github.com/robotframework/RIDE ]。注意:安装版本要和RobotFramework匹配。安装好ride之后,桌面就会生成一个RIDE图标,可双击图标启动工具,也可cmd窗口中输入ride运行。 -
pip install robotframework-selenium2library
:RF版的selenium 库,selenium(webdriver)可以认为是一套基于web的规范(API),所以RF、appium 等测试工具都可以基于这套API进行页面的定位与操作。https://github.com/robotframework/Selenium2Library
pip install robotframework-seleniumlibrary
,https://pypi.python.org/pypi/robotframework-seleniumlibrary -
pip install robotframework-appiumlibrary
:RF版的appium 库 -
pip install requests
:request库,web测试需要 -
pip install -U robotframework-requests
:web测试需要,requests和robotframework-requests的区别:https://blog.csdn.net/huluwababy/article/details/80524288 -
pip install pygments
:非必要,可以用来实现代码高亮,参考:https://blog.csdn.net/mouday/article/details/83114164
3、cmd 运行 case:
pybot --test test_case test_suit.robot
,运行一条casepybot test_suit.robot
,运行指定文件pybot *.robot
,运行当前目录下以.robot为后缀名的测试文件pybot testpath/
,运行当前testpath/目录下的所有case
4、测试脚本[ .robot文件 ]的基本语法:
*** Settings ***
Library MyLib #导入自定义的库
Library SeleniumLibrary
*** Test Cases ***
#第一行为固定格式,标识
#建议同python一致,使用tab缩进对齐(pycharm中设置tab=4空格),否则可能报执行失败,报 "Test case contains no keywords"
case 1 helloworld #案例名
log first rfw case #log 相当于python的print,可在生成的log.xml中查看
case 2 log #打异常日志,支持多种级别
log test line 2 ERROR
case 3 varible
${
myname} Set variable daqiang #定义变量
log my name is ${
myname} #使用变量
#case 4 use varible #变量作用域为其定义所在的案例(case3),否则报 "Variable '${myname}' not found."
# log ${myname}
case 5 Catenate
${
hi1} Catenate hello world #定义变量方式2 连接两个对象,支持自定义连接符
log ${
hi1}
${
hi2} Catenate SEPARATOR=---- hello world
log ${
hi2}
case 6 list
@{
mylist} create list a b c #定义列表
log many @{
mylist} #打印列表中的元素
case 7 get time
${
currentTime} get time #获取当前时间 2022-02-21 21:05:47
log ${
currentTime}
${
currentYear} get time format=year #支持多种传参,详情看函数定义
log current year is ${
currentYear}
case 8 sleep
log get time
sleep 1 #睡眠,等同于python的time.sleep(5)
log get time
case 9 if
${
score} set variable 55
run keyword if ${
score}>=90 log 优秀 #if小写
... ELSE IF ${
score}>=70 log 良好 #ELSE/ELSE IF要大写
... ELSE log 很差
case 10 for #for循环,注意需要使用\来标识这个for循环范围
:FOR ${
i} IN RANGE 5 # for in in range(5):
\ log ${
i} # print(i)
case 11 allround the list # 列表循环
@{
myList} create list 1 2 3 4