Robot Framework自动化测试框架(自动化测试框架怎么搭)
ccwgpt 2024-10-04 14:02 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
相关推荐
- 十分钟让你学会LNMP架构负载均衡(impala负载均衡)
-
业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...
- AGV仓储机器人调度系统架构(agv物流机器人)
-
系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...
- 远程热部署在美团的落地实践(远程热点是什么意思)
-
Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...
- springboot搭建xxl-job(分布式任务调度系统)
-
一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...
- 大模型:使用vLLM和Ray分布式部署推理应用
-
一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...
- 国产开源之光【分布式工作流调度系统】:DolphinScheduler
-
DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...
- 简单可靠高效的分布式任务队列系统
-
#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...
- 虚拟服务器之间如何分布式运行?(虚拟服务器部署)
-
在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...
- 一文掌握 XXL-Job 的 6 大核心组件
-
XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...
- 京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?
-
京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...
- 企业级项目组件选型(一)分布式任务调度平台
-
官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...
- python多进程的分布式任务调度应用场景及示例
-
多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...
- SpringBoot整合ElasticJob实现分布式任务调度
-
介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...
- 分布式可视化 DAG 任务调度系统 Taier 的整体流程分析
-
Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...
- SpringBoot任务调度:@Scheduled与TaskExecutor全面解析
-
一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)