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: [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,结果如下

robot framework笔记(介绍+基础关键字)_第1张图片

输出了三个文件,

report.html长这样 —>

robot framework笔记(介绍+基础关键字)_第2张图片

log.html长这样 —>

robot framework笔记(介绍+基础关键字)_第3张图片

output.xml长这样 —>

robot framework笔记(介绍+基础关键字)_第4张图片

robot framework编辑器

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++

robot framework笔记(介绍+基础关键字)_第5张图片

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

robot framework笔记(介绍+基础关键字)_第6张图片

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

robot framework笔记(介绍+基础关键字)_第7张图片

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

robot framework笔记(介绍+基础关键字)_第8张图片

注意:该语法高亮只适合扩展名为“.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笔记(介绍+基础关键字)_第9张图片

执行结果如下

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笔记(介绍+基础关键字)_第10张图片

(2)定义列表

编辑key_list.robot,内容如下

robot framework笔记(介绍+基础关键字)_第11张图片

log.html中关键字内容如下

robot framework笔记(介绍+基础关键字)_第12张图片

(3)连接字符串

编辑key_catenate.robot,内容如下

robot framework笔记(介绍+基础关键字)_第13张图片

log.html中关键字内容如下

robot framework笔记(介绍+基础关键字)_第14张图片

(4)时间关键字

编辑key_time.robot,内容如下

robot framework笔记(介绍+基础关键字)_第15张图片

说明:

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

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

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

robot framework笔记(介绍+基础关键字)_第16张图片

(5)分支语句关键字

编辑key_if.robot,内容如下

robot framework笔记(介绍+基础关键字)_第17张图片

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

log.html中关键字内容如下

(6)循环语句关键字

编辑key_for.robot,内容如下

robot framework笔记(介绍+基础关键字)_第18张图片

说明:

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

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

log.html中关键字内容如下

robot framework笔记(介绍+基础关键字)_第19张图片

(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笔记(介绍+基础关键字)_第20张图片

说明:

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笔记(介绍+基础关键字)_第21张图片

 

将上述用例写到一个文件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笔记(介绍+基础关键字)_第22张图片

 

(To be continued...)

你可能感兴趣的:(测试)