您当前的位置:首页 > 互联网教程

Robot Framework之list用法及元素获取

发布时间:2025-05-13 19:41:57    发布人:远客网络

Robot Framework之list用法及元素获取

一、Robot Framework之list用法及元素获取

1、 Robot Framework是一款python编写的功能自动化测试框架,所以list的用法都是基于Python语法的。列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。在Python里创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。更多列表的必备灵活操作这里不做介绍,自己去学!

2、下面是robot framework里list的用法

3、 Scalar变量用$作为标识符,List型变量用@作为标识符,理论上可以互相进行转换,视为同一变量。所以注意尽量不要让取值不同的Scalar和List的变量重名,以免冲突。

4、在Python语法里元素索引 index从0开始,最后一个元素的索引是list长度length-1,在robot framework里获取一个list的长度使用的关键字是get length,如下图所示:

5、☆二维list是指list里包含list类型的元素。假设 j和 k分别是某个元素的一维二维索引,则用${变量名[j][k]}或@{变量名[j]}[k]访问。

6、☆区别是用$作为标识符的列表还是把索引都放在{}里面,用@作为标识符的列表把索引一个放在{}里面,一个放外面。

二、如何用Robot framework来编写优秀的测试用例

最重要的一条原则就是保证测试用例对于不熟悉这个领域的人来讲越简单越好。

关于这个主题的更多信息,你可以查看以下这些优秀的资源:

Writing Maintainable Automated Acceptance Tests作者:Dale H. Emery

How to Structure a Scalable And Maintainable Acceptance Test Suite作者:Andreas Ebbert-Karroum

套件的名称应该尽可能地描述这个套件的用途。

名称可以相对长一些,但是如果超过40个字那也太长了一些。

记住 Robotframework的套件名称是直接从文件/目录的名字转换来的。文件的后缀名被去掉了而且下划线会被转换成空格,如果你的用到的单词都是小写的,那么开头字母会被转换成大写的。比如 login_test.txt会被转换成 Login Tests, DHCP_and_DNS会被转换成 DHCP and DNS。

测试用例的名字应该与套件的名字描述相似。

如果一个套件里包含了好多个相似的测试用例,而且测试套件本身已经很好地命名了,那么用例的名称可以简短一些。

在测试用例文件中的名称应该恰好表达了你需要做什么。

同样的,关键词的名称也应该是清晰具体的。

应该可以表达这个关键词干了什么,而不是它如何去做。

关键词应该是非常不同的抽象层次(比如,「输入字符」或者「用户登录到系统」)。

试着用名称来描述这个步骤完成了什么。

或许你可以用一个已经存在的关键词

如果生成或者分解包含了不相关的步骤,那么可以接受更抽象一点的名称。

在名称中列举步骤是一个重复化和维护的问题(比如:登入系统,添加用户,激活警报和检查平衡)。

或许需要用到一些通用一些的名称比如「初始化系统」

每个用到这几个测试用例的人都需要明白这几个生成或者分解动作是干什么的。

通常把文档添加到包含测试用例的最底层套件中是一个不错的想法。

高层的套件不需要那么频繁地文档化。

文档应该包含必要的背景信息,比如为什么要创建这些测试用例,测试环境中需要注意的点等等。

文档内容不要只是简单地重复套件的名称。

如果不是真的有文档还不如不添加文档。

文档的内容不要包含关于测试用例的太详细的信息。

测试用例本身就应该足够清楚易懂了。

重复的信息是一种浪费,而且也不容易维护。

文档中可以添加一些详细内容的链接。

如果你需要在文档中添加一些比如(版本:1.0或者 OS:Linux)这样的「名称-值」组的话,可以考虑使用测试套件 metadata

套件名称和文档以及用例的名称已经提供了足够的背景信息。

测试用例的结构应该是不需要文档或者其他注释都足够清楚了的。

Tag通常比文档更灵活,还能提供更多的功能。

当测试用例的文档是有用的时候,也不要担心而不去添加哟。

如果这个关键词非常简单明了的话,不需要文档。

好的名称和明确的结构就足以说明一切了。

用户自定义关键词文档的一个重要的用途是用来记录参数和返回值的信息。

在 RIDE(比如在关键词补全的地方)以及在资源文件中显示的文档是由 libdoc.py生成的。

在套件中的用例应该是互相相关的。

如果测试用例拥有同样的生成或者分解部分,那么他们应该是属于一个套件的。

除非是数据驱动的,在一个套件中不要放10个以上的测试用例。

有时候如果测试用例之间无法避免地相关联

比如说,它可能是因为把所有的用例独立出来要化太多的时间在初始化上。

相关联的测试用例就那么几个(最多4到5个)

下一个用例是用来验证上一个用例的结果的。(用${PREV TEST STATUS}这个变量)

一致地使用抽象水平(单一水平的抽象原则)

前置条件(可选,通常在生成部分)

动作(对被测系统执行一些动作)

验证(必须有一个验证的部分!)

清理(可选,通常在分解部分,以保证用例已经执行完毕)

关键词是用来描述这个用例做了什么。

用清晰的关键词名称和合适的抽象层次。

应该包含足够的信息使得手动执行可以启动。

应该从来不需要文档或者沟通来告诉你这个用例在做什么。

不同的用例可以有不同的抽象层次。

端到端的测试可以是一个很高的抽象层次。

一个测试用例应该只使用一种抽象层次。

对于底层的详细测试和集成测试用例来讲应该是更关注技术细节。

所有人(包括顾客和产品负责人)都应该可以看明白。

不用 for循环或者 if/else判断结构。

测试用例不应该看起来像脚本一样难读。

每个测试用例有一个高层次的关键词。

关键词通常包含了与同一个用例文件中工作流程测试用例中描述的流程类似的流程。

在一个用例里去测试更容易去测试多种变化。

如果真的需要很多测试用例,考虑把他们做成依赖于外部的模型。

和工作流程测试用例一样的标准。

可以包含一些编程逻辑(for循环,if判断这些)

复杂的逻辑应该放在库里而不是用户定义的关键词里。

可以在变量表格里用注释来说明。

小写的本地变量只在当前的用例或者关键词中可用。

全局变量或者套件,用例级别的变量需要大写。

空格或者下划线都可以用来分割变量中的词。

推荐在变量表格中也把设置成动态的变量也列出来。

用Set Global/Suite/Test variable关键词来命名变量。

变量的初始值应该可以解释真实的值应该是什么。

通常的方式是通过关键词来返回值,把他们赋给变量,然后传递给其他关键词的参数。

备选方案是使用Set Test Variable关键词

不需要在测试用例层面上有什么编程风格。

要遵循起来比较复杂,很难重用关键词。

平均来说,安全的边界值会使得 Sleeping很长时间。

用包含了一定的动作触发的关键词来替代 Sleeping

关键词可以用 Wait Until…来开头

可能的话用内置的关键词Wait Until Keyword Succeeds来包装其他关键词。

有时候 Sleeping是一种最简单的解决方式

请总是小心使用,不要在经常用到的自定义关键词或者其他关键词中用 Sleeping。

在 Debugging的时候 Sleeping用来暂停测试执行还是很有用的。

虽然 DialogsLibrary通常更适合用来干这个。

三、RobotFramework之list用法及元素获取

Robot Framework是一个用 Python编写的自动化测试框架。在使用列表(list)时,其语法遵循 Python的规则。列表在 Python中是一种基本的数据结构,可以通过方括号内的逗号分隔的值来创建。例如,`my_list= [value1, value2, value3]`。这里不详细介绍列表的所有操作,因为这超出了本文的范围。

在 Robot Framework中,使用列表的方法如下:

1.标量变量使用 `$`作为标识符,而列表变量使用 `@`作为标识符。虽然可以互相转换,但为了避免混淆,应避免为不同的标量变量和列表变量取相同的名字。

2.在 Python中,列表元素的索引从 0开始,最后一个元素的索引是列表长度减 1。在 Robot Framework中,可以使用 `Get Length`关键字来获取列表的长度。

3.二维列表是指列表内部包含其他列表的元素。如果 `j`和 `k`分别是二维列表中某个元素的一维和二维索引,那么可以使用 `${variable_name[j][k]}`或 `@{variable_name[j]}[k]`来访问这个元素。

4.区别在于,使用 `$`标识符的列表将所有索引都放在花括号内,而使用 `@`标识符的列表则将一个索引放在花括号内,另一个放在外面。