百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Robot Framework自动化测试框架(自动化测试框架怎么搭)

ccwgpt 2024-10-04 14:02 33 浏览 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

相关推荐

自己动手写Android数据库框架_android开发数据库搭建

http://blog.csdn.net/feiduclear_up/article/details/50557590推荐理由关于Android数据库操作,由于每次都要自己写数据库操作,每次还得去...

谷歌开源大模型评测工具LMEval,打通谷歌、OpenAI、Anthropic

智东西编译|金碧辉编辑|程茜智东西5月28日消息,据科技媒体TheDecoder5月26日报道,当天,谷歌正式发布开源大模型评测框架LMEval,支持对GPT-4o、Claude3.7...

工信部:着力推动大模型算法、框架等基础性原创性的技术突破

工信部新闻发言人今日在发布会上表示,下一步,我们将坚持突出重点领域,大力推动制造业数字化转型,推动人工智能创新应用。主要从以下四个方面着力。一是夯实人工智能技术底座。通过科技创新重大项目,着力推动大模...

乒乓反复纠结“框架不稳定”的三个小误区

很多球友由于对框架的认知不清晰,往往会把“框架不稳定”当成一种心理负担,从而影响学球进度,其典型状态就是训练中有模有样,一旦进入实战,就像被捆住了手脚。通过训练和学习,结合“基本功打卡群”球友们交流发...

前AMD、英特尔显卡架构师Raja再战GPU,号称要全面重构堆栈

IT之家8月5日消息,知名GPU架构师拉贾科杜里(RajaKoduri)此前曾先后在AMD和英特尔的显卡部门担任要职。而在今日,由Raja创立的GPU软件与IP初创企...

三种必须掌握的嵌入式开发程序架构

前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。我相...

怪不得别人3秒就知道软考案例怎么做能50+

软考高级统一合格标准必须三科都达到45分,案例分析也一直是考生头疼的一门,但是掌握到得分点,案例能不能50+还不是你们说了算吗?今天就结合架构案例考点,分享实用的备考攻略~一、吃透考点,搭建知识框架从...

UML统一建模常用图有哪些,各自的作用是什么?一篇文章彻底讲透

10万+爆款解析:9大UML图实战案例,小白也能秒懂!为什么需要UML?UML(统一建模语言)是软件开发的“蓝图”,用图形化语言描述系统结构、行为和交互,让复杂需求一目了然。它能:降低沟通成本避...

勒索软件转向云原生架构,直指备份基础设施

勒索软件组织和其他网络犯罪分子正越来越多地将目标对准基于云的备份系统,对久已确立的灾难恢复方法构成了挑战。谷歌安全研究人员在一份关于云安全威胁演变的报告中警告称,随着攻击者不断改进数据窃取、身份泄露和...

ConceptDraw DIAGRAM:释放创意,绘就高效办公新未来

在当今数字化时代,可视化工具已成为提升工作效率和激发创意的关键。ConceptDrawDIAGRAM,作为一款世界顶级的商业绘图软件,凭借其强大的功能和用户友好的界面,正逐渐成为众多专业人士的首选绘...

APP 制作界面设计教程:一步到位_app界面设计模板一套

想让APP界面设计高效落地,无需繁琐流程,掌握“框架搭建—细节填充—体验优化”三步法,即可一步到位完成专业级设计。黄金框架搭建是基础。采用“三三制布局”:将屏幕横向三等分,纵向保留三...

MCP 的工作原理:关键组件_mcp部件

以下是MCP架构的关键组件:MCP主机:像ClaudeDesktop、GitHubCopilot或旅行助手这样的AI智能体,它们希望通过MCP协议访问工具、资源等。MCP主机会...

软件架构_软件架构师工资一般多少

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员。软件架构应该是能力最强的一群程序员,他们通常会在自身承接编程任务的同时,逐渐引导整个团队向一个能够最大化生产力的系统设计方向前进。软件系统的架...

不知不觉将手机字体调大!老花眼是因为“老了吗”?

现在不管是联系、交友,还是购物,都离不开手机。中老年人使用手机的时间也在逐渐加长,刷抖音、看短视频、发朋友圈……看手机的同时,人们也不得不面对“视力危机”——老花眼,习惯眯眼看、凑近看、瞪眼看,不少人...

8000通用汉字学习系列讲座(第046讲)

[表声母字]加(续)[从声汉字]伽茄泇迦枷痂袈笳嘉驾架咖贺瘸(计14字)嘉[正音]标准音读jiā。[辨形]上下结构,十四画。会意形声字,从壴从加,加也表声。注:从壴,字义与鼓乐有关;从加,字义与...

取消回复欢迎 发表评论: