ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-01-30 13:03:03  阅读:959  来源: 互联网

标签:log 关键字 robot framework rf html


视频教程传送门: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}

执行结果如下

 

wy_hhxx 发布了89 篇原创文章 · 获赞 1 · 访问量 4796 私信 关注

标签:log,关键字,robot,framework,rf,html
来源: https://blog.csdn.net/wy_hhxx/article/details/103996229

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有