Robot Framework自动化测试框架(自动化测试框架工具)
off999 2024-11-03 14:15 24 浏览 0 评论
RF测试框架
RF(Robot Framework)是一个通用的开源自动化测试框架,通常使用python/java进行集成。简单的讲,RF可以把python中的函数名当成关键字,直接在RF框架中调用。
RF框架 --------> Python脚本 --------> 被测程序
网站链接
RF官网地址:https://robotframework.org/
RF使用指导:https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
RF下载地址:https://pypi.org/project/robotframework/
下载安装
python -m pip install robotframework
使用方法
robot [options] <paths>
示例:
robot mytest.robot
robot -l NONE -r NONE -o NONE mytest.robot
robot --loglevel=DEBUG -s ovs myconf.robot
options是选项,其中-l NONE是禁用html的log输出,-r NONE是禁用html的报告输出,-o NONE是禁用XML的日志输出,--loglevel指定日志的级别,-s指定测试套(测试用例所在目录)。paths是一般是项目的配置文件,也可以是测试用例文件,均为.robot后缀。使用robot --help可以查看更多的帮助信息。
工程目录
一般的工程目录结构如下(只包含robot配置文件和robot测试用例,不包含python脚本):
my_project/
test_configs/
config1.robot
config2.robot
...
test_scripts/
script1.py
script2.py
...
test_suite1/
__init__.robot
my_test1.robot
my_test2.robot
...
test_suite2
__init__.robot
my_test3.robot
...
变量类型
${}表示标准变量
&{}表示字典变量
@{}表示链表变量
脚本调用
RF的一个非常有用的特性是,在.robot文件中可以直接调用.py文件的函数。比如在 `mylib.py` 中有如下函数:
def add_numbers(a, b):
return a + b
只需要在.robot文件中导入mylib.py:
*** Settings ***
Library mylib.py
就可以通过如下方式调用(忽略大小写、忽略空格、忽略下划线):
*** Test Cases ***
mytest
${sum}= add_numbers 3 4
${sum}= Add_Numbers 3 4
${sum}= addnumbers_ 3 4
${sum}= _addnumbers 3 4
${sum}= aDd_nUMbers 3 4
${sum}= add numbers 3 4
${sum}= ADD NUMBERS 3 4
注意:RF的log关键字和python中的print具有同样的效果,都将内容打印到output.xml中。
使用举例
以下代码使用Python的`signal`和`scapy`库来实现UDP数据包的捕获和发送,并利用多线程来实现并发执行:
`captured`用于记录已捕获的数据包数量,
`stop`用于通知捕获数据包的线程停止执行,
`stop_event()`函数用于判断停止事件是否触发。
`handle_packets()`函数用于处理捕获到的数据包,此处我们只关心UDP协议,并且只对目标端口为12580的数据包进行计数。
`send_packets()`函数用于发送UDP数据包,这里我们使用`sendp()`函数来发送500个UDP数据包。
`sniff_packets()`函数用于捕获数据包,内部调用`sniff()`函数,并通过`filter`参数指定过滤条件,`prn`参数指定回调函数,`stop_filter`参数指定是否停止抓包。
`test_udp`函数是测试主函数,它创建了两个线程,分别用于捕获数据包和发送数据包。然后通过调用`start()`方法启动线程,实现并发执行。最后,调用`join()`方法等待发送数据包的线程结束后再执行后续代码,并将`stop`变量设置为1,通知捕获数据包的线程停止执行。
from signal import *
from scapy.all import *
import threading
captured = 0
stop = 0
def stop_event(event):
global stop
return stop == 1
def handle_packets(packet):
global captured
if packet.haslayer(UDP):
if (packet[UDP].dport == 12580):
captured += 1
def send_packets():
sendp(Ether()/IP(dst='127.0.0.1')/UDP(dport=12580), inter=0.01, count=500, verbose=False)
def sniff_packets():
sniff(filter='udp', prn=handle_packets, stop_filter=stop_event)
def test_udp():
global stop
sniffer = threading.Thread(target=sniff_packets)
sniffer.start()
sender = threading.Thread(target=send_packets)
sender.start()
sender.join()
stop = 1
sniffer.join()
return captured
robot自动化
*** Settings ***
Library testlib.py
Library String
*** Test Cases ***
Example Test
${result}= test_udp
Should Be Equal As Strings ${result} 500
内置关键字
参考RF使用指导:https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
Call Method
Catenate
Comment
Continue For Loop
Continue For Loop If
Convert To Binary
Convert To Boolean
Convert To Bytes
Convert To Hex
Convert To Integer
Convert To Number
Convert To Octal
Convert To String
Create Dictionary
Create List
Evaluate
Exit For Loop
Exit For Loop If
Fail
Fatal Error
Get Count
Get Length
Get Library Instance
Get Time
Get Variable Value
Get Variables
Import Library
Import Resource
Import Variables
Keyword Should Exist
Length Should Be
Log
Log Many
Log To Console
Log Variables
No Operation
Pass Execution
Pass Execution If
Regexp Escape
Reload Library
Remove Tags
Repeat Keyword
Replace Variables
Return From Keyword
Return From Keyword If
Run Keyword
Run Keyword And Continue On Failure
Run Keyword And Expect Error
Run Keyword And Ignore Error
Run Keyword And Return
Run Keyword And Return If
Run Keyword And Return Status
Run Keyword And Warn On Failure
Run Keyword If
Run Keyword If All Tests Passed
Run Keyword If Any Tests Failed
Run Keyword If Test Failed
Run Keyword If Test Passed
Run Keyword If Timeout Occurred
Run Keyword Unless
Run Keywords
Set Global Variable
Set Library Search Order
Set Local Variable
Set Log Level
Set Suite Documentation
Set Suite Metadata
Set Suite Variable
Set Tags
Set Task Variable
Set Test Documentation
Set Test Message
Set Test Variable
Set Variable
Set Variable If
Should Be Empty
Should Be Equal
Should Be Equal As Integers
Should Be Equal As Numbers
Should Be Equal As Strings
Should Be True
Should Contain
Should Contain Any
Should Contain X Times
Should End With
Should Match
Should Match Regexp
Should Not Be Empty
Should Not Be Equal
Should Not Be Equal As Integers
Should Not Be Equal As Numbers
Should Not Be Equal As Strings
Should Not Be True
Should Not Contain
Should Not Contain Any
Should Not End With
Should Not Match
Should Not Match Regexp
Should Not Start With
Should Start With
Skip
Skip If
Sleep
Variable Should Exist
Variable Should Not Exist
Wait Until Keyword Succeeds
相关推荐
- 大文件传不动?WinRAR/7-Zip 入门到高手,这 5 个技巧让你效率翻倍
-
“这200张照片怎么传给女儿?微信发不了,邮箱附件又超限……”62岁的张阿姨对着电脑犯愁时,儿子只用了3分钟就把照片压缩成一个文件,还教她:“以后用压缩软件,比打包行李还方便!”职场人更懂这...
- 电脑解压缩软件推荐——7-Zip:免费、高效、简洁的文件管理神器
-
在日常工作中,我们经常需要处理压缩文件。无论是下载软件包、接收文件,还是存储大量数据,压缩和解压缩文件都成为了我们日常操作的一部分。而说到压缩解压软件,7-Zip绝对是一个不可忽视的名字。今天,我就来...
- 设置了加密密码zip文件要如何打开?这几个方法可以试试~
-
Zip是一种常见的压缩格式文件,文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢?不清楚的小伙伴一起来看看吧。当我们知道密码想要打开带密码的Zip文件,我们需要用到适用于Zip格式的解压缩...
- 大文件想要传输成功,怎么把ZIP文件分卷压缩
-
不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置?方法一:使用7-Zip免费且强大的文件管理工具7...
- 高效处理 RAR 分卷压缩包:合并解压操作全攻略
-
在文件传输和存储过程中,当遇到大文件时,我们常常会使用分卷压缩的方式将其拆分成多个较小的压缩包,方便存储和传输。RAR作为一种常见的压缩格式,分卷压缩包的使用频率也很高。但很多人在拿到RAR分卷...
- 2个方法教你如何删除ZIP压缩包密码
-
zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利...
- 速转!漏洞预警丨压缩软件Winrar目录穿越漏洞
-
WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类...
- 文件解压方法和工具分享_文件解压工具下载
-
压缩文件减少文件大小,降低文件失效的概率,总得来说好处很多。所以很多文件我们下载下来都是压缩软件,很多小伙伴不知道怎么解压,或者不知道什么工具更好,所以今天做了文件解压方法和工具的分享给大家。一、解压...
- [python]《Python编程快速上手:让繁琐工作自动化》学习笔记3
-
1.组织文件笔记(第9章)(代码下载)1.1文件与文件路径通过importshutil调用shutil模块操作目录,shutil模块能够在Python程序中实现文件复制、移动、改名和删除;同时...
- Python内置tarfile模块:读写 tar 归档文件详解
-
一、学习目标1.1学习目标掌握Python内置模块tarfile的核心功能,包括:理解tar归档文件的原理与常见压缩格式(gzip/bz2/lzma)掌握tar文件的读写操作(创建、解压、查看、过滤...
- 使用python展开tar包_python拓展
-
类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...
- 银狐钓鱼再升级:白文件脚本化实现GO语言后门持久驻留
-
近期,火绒威胁情报中心监测到一批相对更为活跃的“银狐”系列变种木马。火绒安全工程师第一时间获取样本并进行分析。分析发现,该样本通过阿里云存储桶下发恶意文件,采用AppDomainManager进行白利...
- ZIP文件怎么打开?2个简单方法教你轻松搞定!
-
在日常工作和生活中,我们经常会遇到各种压缩文件,其中最常见的格式之一就是ZIP。ZIP文件通过压缩数据来减少文件大小,方便我们进行存储和传输。然而,对于初学者来说,如何打开ZIP文件可能会成为一个小小...
- Ubuntu—解压多个zip压缩文件.zip .z01 .z02
-
方法将所有zip文件放在同一目录中:zip_file.z01,zip_file.z02,zip_file.z03,...,zip_file.zip。在Zip3.0版本及以上,使用下列命令:将所有zi...
- 如何使用7-Zip对文件进行加密压缩
-
7-Zip是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用7-Zip可以轻松创建和解压.7z、.zip等格式的压缩文件,并且可以通过设置密码来保护压缩包中的...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)