RobotFramework测试框架(2)-测试用例

创建测试数据

测试数据语法

这里的测试数据就是指的测试用例。

测试文件组织

测试用例的组织层次结构如下:
在测试用例文件( test case file )中建立测试用例
一个测试文件自动的建成一个包含了这些测试用例的测试集( test suite
一个包含多个测试用例文件( test case file )的目录构成更高级别的测试集,即这个测试集目录包含多个子测试集,而子测试集即是由测试文件创建而来。
一个测试集目录可以包含其他测试集目录,这种层次结构可以满足层嵌套的需要
测试集目录可以有一个特殊的初始文件( initialization file
此外,还有:
测试库( Test libraries )包含最低级别的关键字( keywords
资源文件( Resource files )包含变量和更高层次的用户自定义关键字
变量文件( Variable files )可以提供比资源文件更灵活的方式创建变量

Test data sections

 测试用例文件包含这些部分。

支持的文件格式

Suite文件通常使用.robot扩展名,但哪些文件可以被解析是可以配置的。Resource files 也可以使用 .robot 扩展名,但使用专用的 .resource 扩展名是 建议,并可能在未来强制执行。

创建测试用例

测试用例语法

机器人框架用户指南 (robotframework.org)

基础语法:

Test cases是由关键字在test case sections中组织起来的。 关键字可以从 test libraries 或者 resource files中导入, 或者在测试文件中在 keyword section 中定义

Test case section中的设置:

[Documentation] Used for specifying a test case documentation.

[Setup], [Teardown] Specify test setup and teardown.

[Tags] Used for tagging test cases.

[Template] Specifies the template keyword to use. The test itself will contain only data to use as arguments to that keyword.

[Timeout] Used for setting a test case timeout. Timeouts are discussed in their own section.

*** Test Cases ***
Test With Settings[Documentation]    Another dummy test[Tags]    dummy    owner-johndoeLog    Hello, world!

标记测试用例

方法一:Test Tags setting in the Settings section

方法二:[Tags] setting with each test case

*** Settings ***
Library     SeleniumLibrary
Test Tags   smoke
*** Test Cases ***
Search keywords in baidu[Tags]  smokeOpen Browser    url=https://www.baidu.com    browser=edgeInput Text    //input[@id="kw"]    周杰伦Click Element    //input[@id="su"]Sleep    5Close Browser

 Test Setup和Test Teardown

test setup在test case之前执行,test teardown在test case之后执行。在RF中,setup和teardown只是有参数的关键字。

test teardow在两方面特殊:首先,在测试用例失败后,teardown仍会执行,所以可以用来进行清理活动,无论测试结果是什么。另外,teardown中所有的关键字都会执行,即使其中的一个关键字执行失败。失败仍继续功能也可以在一般的关键字中使用,但是在teardown中这个功能是默认开启的。

最简单的在测试用例中使用setup和teardown是在Setting部分使用Test Setup和Test Teardown设置。在单个test case中也可以使用[Setup]和[Teardown],并且可以覆盖setting部分中的设置。

*** Settings ***
Library     SeleniumLibrary
Test Setup
Test Teardown
*** Test Cases ***
Search keywords in baidu[Tags]  smoke[Setup]Open Browser    url=https://www.baidu.com    browser=edgeInput Text    //input[@id="kw"]    周杰伦Click Element    //input[@id="su"]Sleep    5[Teardown]Close Browser

Test templates

在Robot Framework(RF)中,测试模板(Test Templates)是一种机制,它允许你为测试用例定义一个固定的测试结构,而测试用例本身则只需提供该结构中所需的具体数据或参数。这有助于在多个测试用例之间重用相同的测试逻辑,从而提高测试的可维护性和一致性。

使用测试模板,你可以创建一个包含多个测试步骤的模板,并在多个测试用例中引用这个模板。每个测试用例只需提供模板所需的具体数据,而无需重复编写相同的测试步骤。

测试模板的定义通常位于测试套件文件(.robot)的*** Settings ***部分,使用Test Template关键字进行指定。例如:

*** Settings ***  
Test Template    Some Template  *** Test Cases ***  
Case 1  [Template]    arg1    arg2  Some value 1    Another value  Case 2  [Template]    argA    argB  Value A    Value B  *** Keywords ***  
Some Template  [Arguments]    ${arg1}    ${arg2}  Log    Starting test with ${arg1} and ${arg2}  # 其他测试步骤...


在上面的示例中:

  • Test Template Some Template 定义了一个名为 Some Template 的测试模板。
  • Case 1 和 Case 2 是两个测试用例,它们引用了 Some Template 测试模板。
  • 每个测试用例的 [Template] 设置指定了传递给模板的参数。
  • Some Template 关键字是模板的实现,它接收两个参数 ${arg1} 和 ${arg2},并包含实际的测试步骤。

当运行测试用例时,Robot Framework 会自动将每个测试用例的参数传递给 Some Template 关键字,并执行该关键字中定义的测试步骤。

测试模板的一个主要优点是,它允许你在多个测试用例之间共享相同的测试逻辑,同时保持测试用例的简洁和可读性。这尤其适用于那些包含多个相同步骤但使用不同数据的测试用例。通过使用测试模板,你可以减少代码冗余,提高测试的可维护性,并更容易地管理测试数据。

不同的测试用例模式

这里有几种不同编写用例的方法。测试用例是工作流( workflow )的描述,可以使用关键字驱动模式 (keyword-driven )也可以使用行为驱动模式( behavior-driven )。数据驱动模式可以在用变化的数据测试相同的工作流时使用。

创建测试集

RF的测试用例是使用test case section在suite file或者test case file中创建的。包含测试用例的文件即创建了test suite。(就test suite就是包含多个test case的文件)测试集没有测试用例个数的限制,但建议不要超过 10 个测试用例。

test suite的Setting section包含如下设置:

Name  Used for setting a custom suite name. The default name is created based on the file or directory name.

Documentation  Used for specifying a suite documentation.

Metadata Used for setting free suite metadata as name-value pairs.

Suite Setup, Suite Teardown  Specify suite setup and teardown.

*** Settings ***
Documentation
Metadata
Suite Setup
Suite Teardown
Library     SeleniumLibrary
Test Setup
Test Teardown
*** Test Cases ***
Search keywords in baidu[Tags]  smoke[Setup]Open Browser    url=https://www.baidu.com    browser=edgeInput Text    //input[@id="kw"]    周杰伦Click Element    //input[@id="su"]Sleep    5[Teardown]Close Browser

Suite initialization files

在Robot Framework中,Suite Initialization Files(套件初始化文件)是用于执行测试套件开始前的一系列初始化步骤的文件。这些文件允许你在测试套件开始之前执行一些必要的设置,比如配置测试环境、登录到应用程序、打开数据库连接等。

Suite Initialization Files通常使用.robot文件扩展名,并且它们位于测试套件目录中。你可以使用*** Settings ***部分来定义初始化步骤,例如设置变量或导入资源文件。在*** Variables ***部分,你可以定义将在整个测试套件中使用的变量。此外,你还可以在*** Keywords ***部分定义一些只在初始化阶段使用的关键字。

下面是一个简单的示例,展示了Suite Initialization Files的基本结构:

*** Settings ***  
Suite Setup    Open Application  
Suite Teardown    Close Application  *** Variables ***  
${SERVER_URL}    http://example.com/api  *** Keywords ***  
Open Application  Log    Opening the application  # 这里可以添加打开应用的代码  Close Application  Log    Closing the application  # 这里可以添加关闭应用的代码  *** Test Cases ***  
# 这里定义具体的测试用例

在上面的示例中:

  • Suite SetupSuite Teardown分别定义了测试套件开始和结束时执行的关键字。在这个例子中,它们分别调用了Open ApplicationClose Application关键字。
  • *** Variables ***部分定义了一个变量${SERVER_URL},它可以在整个测试套件中使用。
  • *** Keywords ***部分定义了Open ApplicationClose Application这两个关键字,这些关键字包含了初始化测试环境的逻辑。

在实际使用中,Open ApplicationClose Application关键字会包含实际的代码来执行测试环境的初始化和清理工作。这些代码可能包括连接数据库、启动和停止应用程序、登录到系统等。

当Robot Framework运行测试套件时,它会自动执行Suite Initialization Files中定义的Suite SetupSuite Teardown关键字,确保在测试开始前和结束后执行必要的初始化和清理步骤。这有助于确保测试环境的一致性和可预测性,从而提高测试结果的可靠性。

Suite documentation

在Robot Framework中,Suite Documentation(套件文档)是用于描述测试套件内容、目的、设置和测试执行上下文的重要信息。尽管Robot Framework并没有专门提供一个格式化的位置来编写套件级别的文档,但是你可以在测试套件文件的开始部分使用注释和特殊关键字来提供这些信息。

通常,Suite Documentation包含以下内容:

  • 测试套件的目的和范围
  • 必要的环境设置和依赖项
  • 测试数据的来源和格式
  • 已知的限制和问题
  • 其他对理解和执行测试套件有帮助的信息
*** Settings ***
Documentation    An example suite documentation with *some* _formatting_.
...              Long documentation can be split into multiple lines.

测试集元数据

*** Settings ***
Metadata        Version            2.0
Metadata        Robot Framework    http://robotframework.org
Metadata        Platform           ${PLATFORM}
Metadata        Longer Value
...             Longer metadata values can be split into multiple
...             rows. Also *simple* _formatting_ is supported.

 Suite setup and teardown

*** Settings ***
Suite Setup
Suite Teardown

变量

Robot Framework User Guide

标量变量

列表变量

字典变量

用户关键字

Robot Framework User Guide

*** Keywords ***
Open Login PageOpen Browser    http://host/login.htmlTitle Should Be    Login PageTitle Should Start With[Arguments]    ${expected}${title} =    Get TitleShould Start With    ${title}    ${expected}

 位置参数

*** Keywords ***
One Argument[Arguments]    ${arg_name}Log    Got argument ${arg_name}Three Arguments[Arguments]    ${arg1}    ${arg2}    ${arg3}Log    1st argument: ${arg1}Log    2nd argument: ${arg2}Log    3rd argument: ${arg3}

参数默认值

*** Keywords ***
One Argument With Default Value[Arguments]    ${arg}=default value[Documentation]    This keyword takes 0-1 argumentsLog    Got argument ${arg}

可变数量参数

*** Keywords ***
Any Number Of Arguments[Arguments]    @{varargs}Log Many    @{varargs}One Or More Arguments[Arguments]    ${required}    @{rest}Log Many    ${required}    @{rest}Required, Default, Varargs[Arguments]    ${req}    ${opt}=42    @{others}Log    Required: ${req}Log    Optional: ${opt}Log    Others:FOR    ${item}    IN    @{others}Log    ${item}END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中for与while的区别是什么

Python中for循环和while循环本质上是没有区别的,但是在实际应用上,针对性不太一样。 for主要应用在遍历中,比如: example1: for i in range(10):print(i) 打印结果为: 0 1 2 3 4 5 6 7 8 9 注:…

RuoYi-Vue若依框架-在框架内用颜色选择器,页面显示色块

在用若依框架进行二次开发的时候写到自己的一个模块,其中涉及到颜色,我就想着是手动输入还是采用颜色选择器呢,考虑到后续涉及到另一个字段编码于时就采用了颜色选择器,选择完的颜色显示的是十六进制的颜色选择器,这时…

Excel 文件底部sheet 如何恢复

偶然打开一个excel文件,惊奇地发现:原来excel文件底部的若干个sheet居然全都看不到了。好神奇啊。 用其它的电脑打开同样的excel文件,发现:其实能看到的。说明这个excel文件并没有被损坏。只要将修改相关设置。就可以再次看…

JS与Python函数在语法的区别

区别 标题语法:Python使用缩进来表示代码块,而JavaScript使用大括号{}。 Python函数定义: def my_function():# 函数体JavaScript函数定义: function myFunction() {// 函数体 }标题参数传递:Python支持位置参数、…

flask接口返回文本、json、图片格式

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍&…

【随笔】Git 高级篇 -- 提交的技巧(上) rebase commit --amend(十八)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

【分治算法】大整数乘法Python实现

文章目录 [toc]问题描述基础算法时间复杂性 优化算法时间复杂性 Python实现 个人主页:丷从心. 系列专栏:Python基础 学习指南:Python学习指南 问题描述 设 X X X和 Y Y Y都是 n n n位二进制整数,计算它们的乘积 X Y XY XY 基础…

ChatGPT 之联盟营销

原文:ChatGPT for Affiliate Marketing 译者:飞龙 协议:CC BY-NC-SA 4.0 第二章 制定转化对话 制定转化对话是每个营销人员和企业所有者都应该掌握的关键技能。它涉及创建和传递引人入胜的信息,吸引您的受众并激励他们采取行动。…

Pytorch张量的数学运算:矩阵运算

文章目录 一、基础运算二、矩阵的特殊运算1、矩阵的转置1.1、语法1.2、示例1.2.1、二维矩阵转置1.2.2、更高维度的张量转置 2、方阵的行列式2.1、计算行列式2.2、示例:使用PyTorch计算行列式 3、方阵的迹4、方阵的逆4.1、计算矩阵的逆4.2、使用PyTorch计算逆矩阵 二…

若依 ruoyi-vue 接口挂载获取Resources静态资源文件权限校验

解决小程序图片打包过大,放置后端,不引用ngnix、minio等组件,还能进行权限校验 package com.huida.web.controller.common.app;import com.huida.common.core.controller.BaseController; import com.huida.common.utils.file.FileUtils; imp…

vulhub之fastjson篇-1.2.27-rce

一、启动环境 虚拟机:kali靶机:192.168.125.130/172.19.0.1(docker地址:172.19.0.2) 虚拟机:kali攻击机:192.168.125.130/172.19.0.1 本地MAC:172.XX.XX.XX 启动 fastjson 反序列化导致任意命令执行漏洞 环境 1.进入 vulhub 的 Fastjson 1.2.47 路径 cd /../../vulhub/fa…

蓝桥杯刷题-12-公因数匹配-数论(分解质因数)不是很理解❓❓

蓝桥杯2023年第十四届省赛真题-公因数匹配 给定 n 个正整数 Ai&#xff0c;请找出两个数 i, j 使得 i < j 且 Ai 和 Aj 存在大于 1 的公因数。 如果存在多组 i, j&#xff0c;请输出 i 最小的那组。如果仍然存在多组 i, j&#xff0c;请输出 i 最小的所有方案中 j 最小的那…

PP-Structure 文档分析

本文接着上一篇文章&#xff1a;PaddleOCR环境搭建、模型训练、推理、部署全流程&#xff08;Ubuntu系统&#xff09;-CSDN博客 主要包括以下几种&#xff1a; PP-Structure 文档分析 --官方地址 1.1版面分析和表格识别1.2版面恢复1.3关键信息抽取 1. 简介 PP-Structu…

vue3+element-ui-plus的el-tree组件实现复选框形式下的单选功能,且禁用父级

实现效果图&#xff0c;一二级都是灰色的不可选&#xff0c;三级只能同时选中一个 <el-treev-model"selectedNode":data"deptOptions":props"{ label: title, children: children }" //自定义名称和子集的字段:render-after-expand"fal…

12 | 排序(下):如何用快排思想在O(n)内查找第K大元素?归并排序和快速排序

 下载APP  12 | 排序&#xff08;下&#xff09;&#xff1a;如何用快排思想在O(n)内查找第K大元素&#xff1f; 2018-10-17 王争数据结构与算法之美进入课程 讲述&#xff1a;修阳 时长21:58大小8.81M  上一节我讲了冒泡排序、插入排序、选择排序这三种排序算法&…

2024/4/2—力扣—栈的最小值

代码实现&#xff1a; typedef struct node {int val;struct node *next; } Node;typedef struct {struct node *top;int min; } MinStack;/** initialize your data structure here. */MinStack* minStackCreate() {MinStack *obj malloc(sizeof(*obj));obj->top NULL;ob…

爬虫 新闻网站 以湖南法治报为例(含详细注释) V1.0

目标网站&#xff1a;湖南法治报 爬取目的&#xff1a;为了获取某一地区更全面的在湖南法治报已发布的宣传新闻稿&#xff0c;同时也让自己的工作更便捷 环境&#xff1a;Pycharm2021&#xff0c;Python3.10&#xff0c; 安装的包&#xff1a;requests&#xff0c;csv&#xff…

【Java集合进阶】泛型的通配符和综合练习

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(七)- 向量算术指令格式

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容&#xff1a; 这是一份关于向量扩展的详细技术文档&#xff0c;内容覆盖了向量指令集的多个关键方面&#xff0c;如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…

Mysql底层原理六:InnoDB 数据页结构

1.行格式 1.1 Compact行格式 1.1.1 示意图 1.1.2 准备一下 1&#xff09;建表 mysql> CREATE TABLE record_format_demo (-> c1 VARCHAR(10),-> c2 VARCHAR(10) NOT NULL,-> c3 CHAR(10),-> c4 VARCHAR(10)-> ) CHARSETascii ROW_FORMATCOM…