RobotFramework之用例执行时添加命令行参数(十三)

学习目录

引言

标签tag

设置变量

随机执行顺序

设置监听器

输出日志目录和文件

引言

Robot Framework 提供了许多命令行选项,可用于控制测试用例的执行方式以及生成的输出。本节介绍一些常用的选项语法。

标签tag

之前文章我们介绍过,在测试套件或者测试用例中,可设置标签(tag),可以设置多个标签,它们支持AND, OR和NOT运算符,这些运算符可用于将两个或多个单独的标签或模式组合在一起通过添加参数--include(缩写为-i,指包含这些标签)或者--exclude(缩写为-e,指忽略这些标签)使用

  • AND或者&

--include fooANDbar # 匹配包含标签“foo”和“bar”的测试。

--exclude x&y&z # 匹配包含标签“x”、“y”和“z”的测试。

  • OR

--include fooORbar # 匹配包含标签“foo”或“bar”的测试。

--exclude xORyORz # 匹配包含任何标签“x”或“y”或“z”的测试。

  • NOT

--include fooNOTbar # 匹配包含标签“foo”但不包含“bar”的测试。

--exclude xNOTyNOTz # 匹配包含标签“x”但不包含“y”或“z”的测试。

--include NOTfoo # 匹配不包含标签“foo”的测试

--include NOTfooANDbar # 匹配不包含标签 'foo' 和 'bar' 的测试

上述运算符也可以一起使用。运算符优先级从最高到最低依次为AND、OR和NOT:

--include xANDyORz # 匹配包含标签“x”和“y”或标签“z”的测试。

--include xORyNOTz # 匹配包含标签“x”或“y”但不包含标签“z”的测试。

--include xNOTyANDz # 匹配包含标签“x”的测试,但不匹配标签“y”和“z”。

举例:有四个用例,tags标签如下:

执行时添加参数--include xNOTz,匹配包含标签x,不包含标签z的用例,预期将执行CASE2。

执行后结果: 与预期结果一致

标签在实际项目中使用比较常见,可用于将一些用例归类,比如归类为功能测试、性能测试、UI测试、回归测试、冒烟测试等等一些特性方便挑选执行,也可标注一些日常版本号,比如version1.1、version1.2等区分版本号特性等等。

设置变量

可以使用--variable (缩写为-v)设置变量或者--variablefile (缩写为-V)设置变量文件。

比如在CASE1中传入变量${URL}

  • 使用--variable 

  • 使用--variablefile

在工程test目录新建config目录,新建一个python文件,配置URL='/brotli',执行时添加参数-V config/url.py添加变量文件

随机执行顺序

可以使用选项--randomize随机化测试执行顺序

  • tests

每个测试套件内的测试用例都按随机顺序执行。

  • suites

所有测试套件都以随机顺序执行,但套件内的测试用例按照定义的顺序运行。

  • all

测试用例和测试套件都以随机顺序执行。

  • none

测试和套件的执行顺序都不是随机的。该值可用于覆盖之前使用--randomize设置的值。

举例:选中两个测试套件的用例,添加参数--randomize tests,随机执行测试用例

可以看到测试执行顺序与用例顺序不同

设置监听器

监听器可用于监视测试执行。使用--listener 命令行选项,该值可以是侦听器的路径或侦听器名称。

我们在ride中执行测试用例时,虽然没有指定监听器,但是执行命令中会包含一个监听器:

--listener D:\Python37\lib\site-packages\robotide\contrib\testrunner\TestRunnerAgent.py:65273:False

以下是上面的监听文件中定义的method:

Method

说明

start_suite

当测试套件启动时调用。传入的测试套件名和测试套件执行结果对象

end_suite

当测试套件结束时调用,传入的参数与start_suite相同

start_test

当测试用例开始时调用。传入的测试用例名和测试执行结果对象

end_test

当测试用例结束时调用。传入的参数与start_test相同

output_file

输出out_file时调用。

log_file

输出log_file时调用。

report_file

输出report_file时调用。

xunit_file

输出xunit_file时调用。

debug_file

输出debug_file时调用。

close

当整个测试执行结束时调用。

我们自己定义一个监听文件:监听测试执行过程的一些日志ing输出到一个txt文件

import os.pathimport tempfileclass PythonListener:ROBOT_LISTENER_API_VERSION = 2def __init__(self, filename='listen.txt'):outpath = os.path.join(tempfile.gettempdir(), filename)print(outpath)self.outfile = open(outpath, 'w')def start_suite(self, name, attrs):self.outfile.write("%s '%s'\n" % (name, attrs['doc']))def start_test(self, name, attrs):tags = ' '.join(attrs['tags'])self.outfile.write("- %s '%s' [ %s ] :: " % (name, attrs['doc'], tags))def end_test(self, name, attrs):if attrs['status'] == 'PASS':self.outfile.write('PASS\n')else:self.outfile.write('FAIL: %s\n' % attrs['message'])def end_suite(self, name, attrs):self.outfile.write('%s\n%s\n' % (attrs['status'], attrs['message']))def close(self):self.outfile.close()

执行时添加--listener参数--listener config/PythonListener.py

执行后将会输出一些日志到上图中的listen.txt中。

输出日志目录和文件

执行时带上如下参数,定义输出日志的目录和文件名

-d, --outputdir <dir>

-o, --output <file>

-l, --log <file>

-r, --report <file>

-x, --xunit <file>

-b, --debugfile <file>

比如下面这些参数,执行后日志文件存放到指定的logs目录

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳

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

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

相关文章

Appium自动化测试:通过appium的inspector功能无法启动app的原因

在打开appium-desktop程序&#xff0c;点击inspector功能&#xff0c;填写app的配置信息&#xff0c;启动服务提示如下&#xff1a; 报错信息&#xff1a; An unknown server-side error occurred while processing the command. Original error: Cannot start the cc.knowyo…

分库分表

分库&#xff0c;分表&#xff0c;分库分表 “只分库“&#xff0c;“只分表“&#xff0c;“既分库又分表" 何时分库 在面对高并发的情况下&#xff0c;数据库连接成为性能瓶颈。当数据QPS过高导致数据库连接数不足时&#xff0c;考虑分库。在读多写少的场景下&#x…

window上Clion配置C++版本的opencv

window上Clion配置opencv 注意版本一定要对的上&#xff0c;否则可能会出错&#xff0c;亲测 widnows 11mingw 8.1.0opencv 4.5.5 mingw8.1下载地址https://sourceforge.net/projects/mingw/ 配置环境变量 cmake下载 安装完添加环境变量 来到官网&#xff0c;下载 windows 对…

性能测试学习——项目环境搭建和Jmete学习二

项目环境搭建、Jmeter学习二 环境的部署虚拟机的安装虚拟机中添加项目操作步骤 使用环境的注意事项Jmeter的安装和简单使用Jemter的使用的进阶Jemter元件 Jmeter属性执行顺序和作用域作用域以自定义用户变量和用户参数(前置处理器)为例如何解决用户变量和线程组同级时&#xff…

字符串函数详解

一.字母大小写转换函数. 1.1.tolower 结合cppreference.com 有以下结论&#xff1a; 1.头文件为#include <ctype.h> 2.使用规则为 #include <stdio.h> #include <ctype.h> int main() {char ch A;printf("%c\n",tolower(ch));//大写转换为小…

【Rust】快速教程——从hola,mundo到所有权

前言 学习rust的前提如下&#xff1a; &#xff08;1&#xff09;先把Rust环境装好 &#xff08;2&#xff09;把VScode中关于Rust的插件装好 \;\\\;\\\; 目录 前言先写一个程序看看Rust的基础mut可变变量let重定义覆盖变量基本数据类型复合类型&#xff08;&#xff09;和 [ …

前端面试:如何实现并发请求数量控制?

题目&#xff1a;实现一个并发请求函数concurrencyRequest(urls, maxNum) 要求如下&#xff1a; 要求最大并发数 maxNum;每当有一个请求返回&#xff0c;就留下一个空位&#xff0c;可以增加新的请求;所有请求完成后&#xff0c;结果按照 urls 里面的顺序依次打出&#xff1b;…

openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库

文章目录 openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库127.1 前提条件127.2 背景信息127.3 操作步骤 openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库 127.1 前提条件 系统中需要有审计管理员或者具有审计管理员权…

【数据结构】C语言实现队列

目录 前言 1. 队列 1.1 队列的概念 1.2 队列的结构 2. 队列的实现 2.1 队列的定义 2.2 队列的初始化 2.3 入队 2.4 出队 2.5 获取队头元素 2.6 获取队尾元素 2.7 判断空队列 2.8 队列的销毁 3. 队列完整源码 Queue.h Queue.c &#x1f388;个人主页&#xff1a…

电磁场与电磁波part4--时变电磁场

1、采用洛伦兹条件使得矢量位 与标量位 分离在两个独立的方程中&#xff0c;且矢量位 仅与电流密度 有关&#xff0c;而标量位 仅与电荷密度 有关。 2、电磁能量守恒定理&#xff08;坡印廷定理&#xff09; 即减少的电磁能量电磁场所做的功流出的电磁能量 3、设u(r,t)是…

【Flink】核心概念:并行度与算子链

并行度&#xff08;Parallelism&#xff09; 当要处理的数据量非常大时&#xff0c;我们可以把一个算子操作&#xff0c;“复制”多份到多个节点&#xff0c;数据来了之后就可以到其中任意一个执行。这样一来&#xff0c;一个算子任务就被拆分成了多个并行的“子任务”&#x…

340条样本就能让GPT-4崩溃,输出有害内容高达95%?OpenAI的安全防护措施再次失效

仅需340个示例微调GPT-4&#xff0c;即可绕过安全限制&#xff0c;让模型说出“枪支改装方法”、“生化武器制作过程”等有害内容&#xff1f; OpenAI的安全防护措施再次失效&#xff0c;攻击的成功率高达95%&#xff01; 近日&#xff0c;美国顶尖大学UIUC与斯坦福联合对GPT…

Vue面试题

1. 解释单向数据流和双向数据绑定 对于 Vue 来说&#xff0c;组件之间的数据传递具有单向数据流这样的特性称为单向数据流&#xff0c;单向数据流&#xff08;Unidirectional data flow&#xff09;方式使用一个上传数据流和一个下传数据流进行双向数据通信&#xff0c;两个数…

数据分析思维与模型:相关分析法

相关分析法是一种用于研究两个或多个变量之间关系强度和方向的统计方法。这种方法在多个领域&#xff0c;如经济学、心理学、社会科学和自然科学中都有广泛应用。其核心是通过计算相关系数来量化变量之间的相关性。以下是相关分析法的一些基本概念和步骤&#xff1a; 选择变量…

小程序开通电子发票

总目录 文章目录 总目录前言结语 前言 随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。 首先登录商户号&#xff1a;https://pay.weixin.qq.com/index.php/core/home/lo…

基于Python+OpenCV+Tensorflow图像迁移的艺术图片生成系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统![请添加图片描述](https://img-blog.csdnimg.cn/dbda87069fc14c24b71c1eb4224dff05.png)四. 总结 一项目简介 基于PythonOpenCVTensorfl…

【汇编】[bx+idata]的寻址方式、SI和DI寄存器

文章目录 前言一、[bxidata]寻址方式1.1 [bxidata]的含义1.2 示例代码 二、SI和DI寄存器2.1 SI和DI寄存器是什么&#xff1f;2.2 [bxsi]和[bxdi]方式寻址2.3 [bxsiidata]和[bxdiidata] 总结 前言 在汇编语言中&#xff0c;寻址方式是指指令如何定位内存中的数据。BX寄存器与偏…

storage和正则表达式

一、Storage 1.认识Storage WebStorage主要提供了一种机制&#xff0c;可以让浏览器提供一种比cookie更直观的key、value存储方式&#xff1a; localStorage&#xff1a;本地存储&#xff0c;提供的是一种永久性的存储方法&#xff0c;在关闭掉网页重新打开时&#xff0c;存…

c语言-输入输出详解

文章目录 格式化输入输出占位符printfscanf 字符串输入输出puts&#xff08;&#xff09;gets&#xff08;&#xff09; 字符输入输出putchar&#xff08;&#xff09;getchar&#xff08;&#xff09; 区别 格式化输入输出 输入输出的库函数的头文件&#xff1a; #include<…

数据结构 堆

手写堆&#xff0c;而非stl中的堆 如何手写一个堆&#xff1f; //将数组建成堆 <O(n) for (int i n / 2;i;i--) //从n/2开始down down(i); 从n/2元素开始down&#xff0c;最下面一层元素的个数是n/2&#xff0c;其余上面的元素的个数是n/2&#xff0c;从最下面一层到最高层…