robot framework笔记(介绍+基础关键字)

视频教程传送门: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,结果如下

robot framework笔记(介绍+基础关键字)

输出了三个文件,

report.html长这样 —>

robot framework笔记(介绍+基础关键字)

log.html长这样 —>

robot framework笔记(介绍+基础关键字)

output.xml长这样 —>

robot framework笔记(介绍+基础关键字)

robot framework编辑器

因为使用的是Python3,所以不使用RIDE,可以下载一些编辑器的插件,打开 https://robotframework.org/ 选中TOOLS中的EDITORS,点开对应插件的链接

(1)例如Notepad++

robot framework笔记(介绍+基础关键字)

可以使用 git 命令Clone或者下载到本地,这里下载到本地。

robot framework笔记(介绍+基础关键字)

然后按照按照 README.md 操作:
语言->自定义语言格式...->导入->选择lang-robot.xml,提示导入成功。

robot framework笔记(介绍+基础关键字)

然后在“语言”中就可以找到

robot framework笔记(介绍+基础关键字)

注意:该语法高亮只适合扩展名为“.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,内容如下

robot framework笔记(介绍+基础关键字)

执行结果如下

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

robot framework笔记(介绍+基础关键字)

(2)定义列表

编辑key_list.robot,内容如下

robot framework笔记(介绍+基础关键字)

log.html中关键字内容如下

robot framework笔记(介绍+基础关键字)

(3)连接字符串

编辑key_catenate.robot,内容如下

robot framework笔记(介绍+基础关键字)

log.html中关键字内容如下

robot framework笔记(介绍+基础关键字)

(4)时间关键字

编辑key_time.robot,内容如下

robot framework笔记(介绍+基础关键字)

说明:

1.第3行和第6行的关键字get time 可以获取当前时间

2.第5行的sleep 5 会等5秒

log.html中关键字内容如下,可以瞅瞅时间戳~

robot framework笔记(介绍+基础关键字)

(5)分支语句关键字

编辑key_if.robot,内容如下

robot framework笔记(介绍+基础关键字)

说明:4-7行是分支语句,第5-7行第一列是三个句点(...)不能少

log.html中关键字内容如下

robot framework笔记(介绍+基础关键字)

(6)循环语句关键字

编辑key_for.robot,内容如下

robot framework笔记(介绍+基础关键字)

说明:

1.循环10次,注意FOR前要有冒号

2.第一列为“\”(如果用python2 + RIDE,第一列是留空)

log.html中关键字内容如下

robot framework笔记(介绍+基础关键字)

(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,内容如下

robot framework笔记(介绍+基础关键字)

说明:

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中测试用例内容如下,前者生成范围内随机数,后者获取当前时间

robot framework笔记(介绍+基础关键字)

 

将上述用例写到一个文件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}

执行结果如下

robot framework笔记(介绍+基础关键字)

 

robot framework笔记(介绍+基础关键字)robot framework笔记(介绍+基础关键字) wy_hhxx 发布了89 篇原创文章 · 获赞 1 · 访问量 4796 私信 关注
上一篇:Hibernate:JPA的一对多操作


下一篇:robot framework 执行web自动化一次后没有log日志,重启后执行一次后也是