当前位置: 首页 > news >正文

RobotFramework介绍与使用

介绍

robotframework 官网介绍
robotframework是一个开源的自动化测试框架,支持关键字驱动,可以采用python和java进行库的拓展。支持web、app、api、desktop、db等的自动化操作。支持关键字驱动和数据驱动方法。

有RIDE等UI编辑器,但是建议用vscode或pycharm直接编辑,因为有插件,可以辅助编辑更方便。安装方法
同时有网址可以查找常用的关键词

安装

pip install robotframeworkrobot --version
# 查看版本,验证安装没问题

常用的库

Builtin 常用的内建库
SeleniumLibrary 基于SELENIUM的web自动化库
Browser Library 基于playwright的web自动化库
RequestsLibrary 基于requests的api自动化库
AppiumLibrary 基于Appium的app自动化库
Database Library 数据库Oracle、Mysql链接库
DataDriver Library csv, xls, xlsx的读写库

常规的格式

*** Settings ***
Library    Browser*** Variables ***
${BROWSER}    chromium
${HEADLESS}    false*** Test Cases ***
Create Quote Test Case NameOpen Insurance ApplicationEnd Test*** Keywords ***
Open Insurance ApplicationNew Browser    browser=${BROWSER}    headless=${HEADLESS}New Context    locale=en-GBNew Page    http://sampleapp.tricentis.com/End TestClose ContextClose Browser

注意事项

变量作用域
set global variable 使用该关键字修改变量作用域后,在所有测试套件suite中都可以使用该关键字定义的变量
Set Suite Variable 使用此关键字设置的变量在当前执行的测试套件的范围内随处可用
Set Test Variable 使用此关键字设置的变量在当前执行的测试用例的范围内随处可用

变量
变量 用scalar数组创建时用scalar数组创建时用{scalar} 或 @{list};当遍历时用@{list},用scalar时只遍历一次;当向自定义python函数传输时用scalar时只遍历一次;当向自定义python函数传输时用${scalar}
字典 创建时用&{dict};当遍历时用&{dict}

运行用例

# 在项目脚本目录下运行
robot --pythonpath . -d logfolder testcasefolder_or_robotfile

testcasefolder_or_robotfile 可以指定运行的文件夹或robot文件
--pythonpath . 引用文件时可以用相对路径,否则用${CURDIR}/指定绝对路径或设置环境变量PYTHONPATH
-d logfolder 测试结果和日志存放的位置

重新运行失败用例

robot --output original.xml tests                          # first execute all tests
robot --rerunfailed original.xml --output rerun.xml tests  # then re-execute failing
rebot --merge original.xml rerun.xml                       # finally merge results

或者 用新的扩展插件

pip install robotframework-retryfailed
robot --listener RetryFailed:1 <robot suite>

测试工程构建

一般按照如下结构来搭建,主要分关键字(resources)和测试用例(testcases)两部分。

resources下主要是变量和关键字。根据测试场景进行细分,如UI测试可按POM模式进行细分为公共操作关键字,网页元素定位变量、网页操作关键字、业务层面关键字等;API测试可分为接口请求关键字和响应关键字,共同处理关键字等。

testcases下是实际测试用例的组装,将上面的resource引入测试用例,组装成可运行的cases。

如此拆分,更容易理解,并且对变化的修改更容易。

按照上面的结果,写了一个demo,将RF的几个经典的关键字和用法放进去,大家可以参照。

# demo.robot
*** Settings ***
Documentation    Test case for adding and removing todo items in a TodoMVC application.
Library    SeleniumLibrary
Library    Collections
Resource   ${CURDIR}/../resources/demo.resource
Variables    ${CURDIR}/../resources/variables.py
Library   ${CURDIR}/../resources/utils.py
Suite Setup    Open Website    url=${URL}
Suite Teardown    Close All Browsers*** Variables ***
${URL}    https://todomvc.com/examples/angular/dist/browser/#
${TODO1}    Complete Robot Framework Training
${TODO2}    Write Automated Tests
${TODO3}    Take a nap
@{TODOLeftlist}=   ${TODOLeft2}  ${TODOLeft1}   ${TODOLeft0}*** Test Cases ***
Add And Remove Todo Items[Documentation]   Test adding and removing todo items on the TodoMVC application.[Tags]    TodoMVC    Regression[Timeout]    5 minutes[Setup]Log To Console      had opened the websiteLog Many    @{TODOLeftlist}@{TODOlist}=   Create List   ${TODO1}    ${TODO2}   ${TODO3}FOR    ${ToDo}    IN    @{TODOlist}Add New-Todo Item    ${ToDo}Log To Console      Added todo item:============== ${ToDo}ENDVerify Todo Count    ${TODOLeft3}@{PAIRS}=   Zip List Items    ${TODOlist}    ${TODOLeftlist}FOR    ${PAIR}    IN    @{PAIRS}${TODO}=   Set Variable    ${PAIR}[0]${TODOLeft}=   Set Variable    ${PAIR}[1]Delete Todo Item    ${TODO}Sleep    1sVerify Todo Count    ${TODOLeft}END[Teardown]Log To Console      had done all things

setup\teardown、自定义函数使用、resource文件使用、基本结构 等等

# demo.resource
*** Settings ***
Library    SeleniumLibrary*** Keywords ***
Open Website[Arguments]    ${url}Open Browser    ${url}    browser=chromeMaximize Browser WindowAdd New-Todo Item[Arguments]    ${item}Input Text    css:.new-todo    ${item}Press Keys    css:.new-todo    RETURNVerify Todo Count[Arguments]    ${expected_count}Element Text Should Be    class:todo-count    ${expected_count}Delete Todo Item[Arguments]    ${item}Mouse Over    xpath: //*[contains(text(), "${item}")]Click Element    xpath: //*[contains(text(), "${item}")]/../input

关键字demo

# variables.py
TODOLeft3="3 items left"
TODOLeft2="2 items left"
TODOLeft1="1 item left"
TODOLeft0="0 items left"

外部定义变量

#utils.py
from robot.libraries.BuiltIn import BuiltIn
from robot.api.logger import consoledef zip_list_items(items1, items2):# console(str((items1)))i = []for index, item in enumerate(items1):i.append([item, items2[index]])return i

外部定义函数,并使用robot自带函数

数据驱动是使用template来实现。

工具使用,在于熟能生巧

http://www.xdnf.cn/news/1350865.html

相关文章:

  • 改华为智能插座为mqtt本地控制
  • 计算机视觉工程师业务场景题:智能推荐视频封面
  • ros 消息类型与查阅相关内容
  • Redis面试精讲 Day 28:Redis云原生部署与Kubernetes集成
  • 鸿蒙中CPU活动分析:CPU分析
  • Java—— 动态代理
  • 【Linux网络编程】分布式Json-RPC框架 - 项目设计
  • UAD详解
  • BEVDepth
  • 领码方案:新一代页面权限体系全景解析(完整版)
  • 英伟达显卡GPU驱动的本质
  • 在WSL2 Ubuntu中部署FastDFS服务的完整指南
  • 【K8s】整体认识K8s--K8s架构与集群创建过程
  • GRS认证是国际供应链的“硬性门槛“
  • 数据库字段类型深度解析:从关系型到 NoSQL 的全面指南
  • 自动化运维Ansible
  • 强光干扰与密集场景下工服识别准确率↑89%!陌讯多模态融合算法在安全生产中的实战优化
  • 在Excel和WPS表格中快速插入多行或多列
  • 一个适用于 Word(Mac/Win 通用) 的 VBA 宏:把所有“上角标格式的 0‑9”以及 “Unicode 上角标数字 ⁰‑⁹” 批量删除。
  • PYTHON让繁琐的工作自动化-列表
  • 构建现代高并发服务器:从内核机制到架构实践
  • Win11 下卸载 Oracle11g
  • 青少年机器人技术(五级)等级考试试卷(2020年9月)
  • 基于Python对酷狗音乐排行榜数据分析可视化【源码+LW+部署】
  • 【Win】Motrix+Aria2浏览器下载加速
  • 深入解析Spring Boot自动配置原理:简化开发的魔法引擎
  • 在 Spring Boot 中配置和使用多个数据源
  • C++之list类的代码及其逻辑详解 (中)
  • 构建真正自动化知识工作的AI代理
  • 随着威胁的加剧,地方政府难以保卫关键基础设施