RobotFramework之用例执行时添加命令行参数(十三)
off999 2024-10-26 12:03 44 浏览 0 评论
学习目录
引言
标签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.path
import tempfile
class PythonListener:
ROBOT_LISTENER_API_VERSION = 2
def __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目录
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳
相关推荐
- 面试官:来,讲一下枚举类型在开发时中实际应用场景!
-
一.基本介绍枚举是JDK1.5新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错...
- 一日一技:11个基本Python技巧和窍门
-
1.两个数字的交换.x,y=10,20print(x,y)x,y=y,xprint(x,y)输出:102020102.Python字符串取反a="Ge...
- Python Enum 技巧,让代码更简洁、更安全、更易维护
-
如果你是一名Python开发人员,你很可能使用过enum.Enum来创建可读性和可维护性代码。今天发现一个强大的技巧,可以让Enum的境界更进一层,这个技巧不仅能提高可读性,还能以最小的代价增...
- Python元组编程指导教程(python元组的概念)
-
1.元组基础概念1.1什么是元组元组(Tuple)是Python中一种不可变的序列类型,用于存储多个有序的元素。元组与列表(list)类似,但元组一旦创建就不能修改(不可变),这使得元组在某些场景...
- 你可能不知道的实用 Python 功能(python有哪些用)
-
1.超越文件处理的内容管理器大多数开发人员都熟悉使用with语句进行文件操作:withopen('file.txt','r')asfile:co...
- Python 2至3.13新特性总结(python 3.10新特性)
-
以下是Python2到Python3.13的主要新特性总结,按版本分类整理:Python2到Python3的重大变化Python3是一个不向后兼容的版本,主要改进包括:pri...
- Python中for循环访问索引值的方法
-
技术背景在Python编程中,我们经常需要在循环中访问元素的索引值。例如,在处理列表、元组等可迭代对象时,除了要获取元素本身,还需要知道元素的位置。Python提供了多种方式来实现这一需求,下面将详细...
- Python enumerate核心应用解析:索引遍历的高效实践方案
-
喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。根据GitHub代码分析统计,使用enumerate替代range(len())写法可减少38%的索引错误概率。本文通过12个生产...
- Python入门到脱坑经典案例—列表去重
-
列表去重是Python编程中常见的操作,下面我将介绍多种实现列表去重的方法,从基础到进阶,帮助初学者全面掌握这一技能。方法一:使用集合(set)去重(最简单)pythondefremove_dupl...
- Python枚举类工程实践:常量管理的标准化解决方案
-
本文通过7个生产案例,系统解析枚举类在工程实践中的应用,覆盖状态管理、配置选项、错误代码等场景,适用于Web服务开发、自动化测试及系统集成领域。一、基础概念与语法演进1.1传统常量与枚举类对比#传...
- 让Python枚举更强大!教你玩转Enum扩展
-
为什么你需要关注Enum?在日常开发中,你是否经常遇到这样的代码?ifstatus==1:print("开始处理")elifstatus==2:pri...
- Python枚举(Enum)技巧,你值得了解
-
枚举(Enum)提供了更清晰、结构化的方式来定义常量。通过为枚举添加行为、自动分配值和存储额外数据,可以提升代码的可读性、可维护性,并与数据库结合使用时,使用字符串代替数字能简化调试和查询。Pytho...
- 78行Python代码帮你复现微信撤回消息!
-
来源:悟空智能科技本文约700字,建议阅读5分钟。本文基于python的微信开源库itchat,教你如何收集私聊撤回的信息。[导读]Python曾经对我说:"时日不多,赶紧用Python"。于是看...
- 登录人人都是产品经理即可获得以下权益
-
文章介绍如何利用Cursor自动开发Playwright网页自动化脚本,实现从选题、写文、生图的全流程自动化,并将其打包成API供工作流调用,提高工作效率。虽然我前面文章介绍了很多AI工作流,但它们...
- Python常用小知识-第二弹(python常用方法总结)
-
一、Python中使用JsonPath提取字典中的值JsonPath是解析Json字符串用的,如果有一个多层嵌套的复杂字典,想要根据key和下标来批量提取value,这是比较困难的,使用jsonpat...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python自定义函数 (53)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python人脸识别 (54)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)