1.1 内置库介绍
内置库又称Standard Library,即标准库,还有一种External library,即扩展库,也称为第三方库。
标准库直接绑定在rf内,扩展库需要自行下载然后安装导入使用,标准库也分为两类,使用前不需导入的库:builtin,这类库是rf自动加载;另一类使用前需要导入,如collections,这类库使用前需要导入才能使用库中的关键字。
1.1.1 标准库
RF 标准库无需下载,直接导入使用即可,包括:
库名 作用 是否需要导入 Builtin 包括经常使用的关键字,如Evaluate,Log关键字, F Dialogs 提供了暂停测试执行和从用户输入的方式, T collections 提供一组关键字处理python列表和字典, T OperatingSystem 执行各种操作系统相关的任务 T Remote 远程库接口的一部分,本身没有任何关键字,作为rf和测试库之间代理的特殊库,实际测试库可以在不同的机器上运行,可以使用任何编程语言支持XML-RPC协议的实现 T Screenshot 提供关键字来捕获和存储桌面的截图, T string 用于处理字符串并验证他们的内容,如修改,生成,验证字符串 T Telnet 支持连接到telnet服务器上 T xml 用于生成、修改、和验证xml文件的库 T Process 系统中运行过程的库 T DateTime 日期和时间转换的库,支持创建和验证日期和时间值以及他们之间的计算 T
XML-RPC协议:请求体为xml的http-post请求,服务器把执行结果以xml格式编码返回
Telnet:TCP/IP协议族中的一员,是internet远程登陆服务的标准协议和主要方式,提供了在本地计算机完成远程主机工作的能力,是常用的远程控制web服务器的方法。
1.1.2扩展库
rf需要下载安装后使用的库,这里不一一列举
Android library:所有android自动化需要的测试库,内部使用的是Calabash Android
iOS library:所有iOS自动化需要的测试库,内部使用Calabash iOS服务
appiumlibrary:Android和iOS测试库,内部使用的是appium
HTTP library (livetest):内部使用LiveTest工具的HTTP测试的库。
HTTP library (Requests):内部使用request工具的HTTP测试的库。
MongoDB library:使用pymongo和MongoDB交互的库。(MongoDB是一个基于分布式文件存储的数据库)
Database Library (Java):基于Java的数据库测试库。也可使用Jython和Maven central.
Database Library (Python):基于Python数据库测试库。支持任何Python解释器,包括Jython。
watir-robot:使用Watir的工具的Web测试库。
seleniumlibrary:Web测试库,内部使用比较流行的selenium工具。利用早期的selenium1.0和本身已经过时。
selenium2library:使用selenium2的Web测试库。替换了大部分老的seleniumlibrary。
selenium2library java:selenium2library的java接口
Django Library:为Django的库,一个Python Web框架。
sudslibrary:一种基于泡沫基于SOAP的Web服务的功能测试库,动态的SOAP 1.1的客户端。
Archive library:处理.zip和.tar压缩包的库。
Diff Library:比较两个文件的库。
FTP library:Robot Framework上测试和使用FTP服务的库。
SSHLibrary:通过SSH连接的在远程机器上执行命令。还支持使用SFTP进行文件传输
rammbock:通用的网络协议测试库;提供简单的方法来指定网络数据包,并检查发送和接收数据包的结果。
imagehorizonlibrary:跨平台、基于图像识别的GUI自动化纯Python库。
autoitlibrary:Windows的GUI测试库,使用AutoIt的免费工具作为驱动。
Eclipse Library:使用SWT窗口小部件测试Eclipse RCP应用程序的库。
robotframework-faker:一个服务faker的库,faker的测试数据生成器。
swinglibrary:用Swing GUI测试java应用程序库
remoteswinglibrary:使用swinglibrary库测试和连接一个java进程,尤其是java web start的应用。(Java Web Start 是基于 Java 技术的应用程序的一种部署解决方案,它是连接计算机和 Internet 的便捷通道,允许用户在完全脱离 Web 的情况下运行和管理应用程序)
MQTT library:测试MQTT brokers和应用的库。
1.2 Evaluate万能关键字
Evaluate关键字在rf框架中被称为万能关键字,他能让你直接运行python脚本,在标准库和扩展库都不能满足功能需求时,直接使用python脚本实现。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bov5SRha-1619166759213)(C:\Users\super\AppData\Roaming\Typora\typora-user-images\image-20210324103322318.png)]
第一个参数:expression,指表达式
第二个参数:modules, 指需要导入的模块,默认值None
第三个参数:namespace: 指命名作用空间,默认值None
个人理解:就是直接跟python代码。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZtSZ8WD-1619166759218)(C://Users//super//Documents//JD//office_dongdong//ext.zhangliuxin//Temp//JdOnline20210324122356.png)]
使用关键字时,表达式参数需要加上引号,如上图。
evaluate可以处理简单的关系,当需要处理复杂的关系时,推荐通过自定义测试库和开发系统关键字。
1.3 类型转换
类型转换可以将某个类型的变量值转化为指定类型的值
1.3.1 Convert To String:转换成字符串
示例:
${string} Convert To String hello world Log ${string}
1.3.2 Convert to integer:转换成整数,如果参数是字符串,则默认转换为二进制。
所属库 参数 builtin item,base(指定转换为什么进制,0b表示二进制,0o表示八进制,0x表示十六进制)=None
示例:
${int} Convert To integer 50 Should be equal ${int} ${50}
首先先将50(此时是字符串‘50’)转化为整数,然后和数字50进行比较
1.3.3. Convert to number:转换成浮点数;如果可选参数是正数或0,返回四舍五入的值,如果可选参数是负数,则相当于修改小数点前precision位的值为0
所属库 参数 builtin item,precision=None
示例:
${float} Convert To number 32.512 log ${float} # 打印32.512
${float} Convert To number 32.512 1 log ${float} # 打印32.5
${float} Convert To number 32.512 0 log ${float} # 打印33.0
${float} Convert To number 32.512 -1 log ${float} # 打印30,(如果为-2,则输出0)
1.3.4 Convert to boolean :转换成布尔值,如果参数是字符串true(不区分大小写),则返回true,false则返回false,其他情况调用python的bool方法判断。
所属库 参数 builtin item,precision=None
简单来说:关键字接受的参数如果为非空值,返回true,如果参数为空值,如:
N
U
L
L
,
{NULL},
N U L L , {NONE},${EMPTY},则返回false。
1.3.5 encode string to bytes:字符编码;按照指定编码方式进行字符串编码。
所属库 参数 string string,encoding,errors=strict
errors有三种取值:
strict:默认参数,当字符无法编码时返回失败。 ignore:当字符不能编码时忽略。 replace:当字符不能编码时,使用替换字符来代替
${string} set variable 验证通过 ${to_utf8} encode string to bytes ${string} UTF-8
1.3.6 decode bytes to string(解码字节到字符串)同1.3.5,不重复介绍
1.4 变量操作
1.4.1 log variables:在输出日志打印所有变量(内置变量,自动变量等)
${var} set variable 本地变量 log variables
1.4.2 import variables:导出变量,通常应用在测试套件级别下。引用的路径必须为绝对路径。
先要新建变量文件文件名为variable.py,文件内容如下
# coding=utf-8
url=‘http://www.yaosi.com’
str_list=['a','b','c']
import variable ${CURDIR}/variable.py log ${url} log many @{str_list}
1.4.3 set variable:设置变量主要用于设置标量变量($)表示,也可创建列表或多重标量变量
变量名1 变量名2 set variable 变量值1 变量值2
该关键字只在当前作用范围内有效。
1.4.4 set global variable:设置全局变量,和命令行使用–variable或者variablefile创建的变量作用类似。
set global variable ${global_var} hello world
需要注意的点:1.如果是在测试用例创建的变量,要保证该测试用例优先执行;2.对于全局变量,在运行过程中的所有测试套件或测试用例都有效。
1.4.5 set suite variable:设置测试套件变量
set suite variable ${suite_var} hello world ${id} set variable 123456 set suite variable ${id}
测试套件变量仅对该测试套件及该测试套件下的测试用例有效。
1.4.6 set test variable:设置测试用例变量
set test variable ${test_var} hello
测试用例变量仅对该测试用例有效。
1.4.7 set variable if:当条件满足时设置变量 基于condition条件来设置变量,包括一个condition和两个value,使用should be true 来计算condition,如果为真返回第一个值,否则返回第二个,第二个可以省略,默认使用none。
所属库 参数 builtin condition,*values
${RE} set variable ${0} ${val1} set variable if ${RE}==0 zero nozero ${val1} set variable if ${RE}>0 value1 value2 ${val1} set variable if ${RE<0 whatever
结果为:zero,value2,None
1.4.8 get variables:获取所有变量 :获取包含当前作用域内所有变量的字典
1.4.9 get variable value 获取变量值,不存在返回default
所属库 参数 builtin name,default=None
1.4.10 get environment variables:获取当前环境所有环境变量的字典。
1.4.11 get environment variable:获取环境变量值,不存在返回default。
所属库 参数 operatingSystem name,default=None
1.4.12 set environment variable:设置环境变量,环境变量在测试执行前在操作系统中被设置。执行过程中一直可用;是全局的,测试结束后自动失效。
所属库 参数 operatingSystem name,value
1.5 关键字操作
1.5.1 run keyword:运行关键字:根据参数args运行关键字name,name可以动态设定,例如:来自另一个关键字的返回值或命令行。
${time} run keyword get time Log ${time}
1.5.2 run keyword if 当条件满足时运行关键字。
所属库 参数 builtin condition,name,*args
run keyword if ‘${STATUS}’=‘PASS’ SOME ACTION
${STATUS}的冒号不可以省略。
1.5.3 run keyword unless:当条件不满足时运行关键字,当condition参数为假时,运行关键字
所属库 参数 builtin condition,name,*args
1.5.4 repeat keyword :重复运行某关键字:对指定关键字调用n次,N为整数或可以转换为整数的字符串,还可以在N后面加后缀times或x(不区分大小写,去除多余空格)
所属库 参数 builtin times,name,*args
1.5.5 run keywords:依次运行多个关键字,常用于setup和teardown。
当执行多个需要参数的关键字时,关键字使用AND连接(区分大小写),运行次序是依次运行。
1.5.6 run keyword and return:运行关键字并返回结果。
参数名(接收返回值信息) run keyword and return 关键字
1.5.7 run keyword and return if:当条件满足时运行关键字并返回结果
所属库 参数 builtin condition,name,*args
参数名(接收返回值信息) run keyword and return if 条件 关键字
1.5.8 run keyword and continue on failure:失败后运行执行关键字
run keyword and continue on failure Fail 关键字
1.5.9 run keyword and lgnore error:运行关键字并忽略错误,根据参数args运行关键字,并忽略错误,此关键字返回两个值,第一是pass或fail,第二个是返回值或者收到的错误信息。
1.5.10 run keyword if all tests passed:所有测试用例通过后运行关键字,如果所有用例通过后运行关键字,如果所有测试用例通过,则根据参数args运行关键字,只能用于suite teardown。
1.5.11 run keyword if any tests failed:任一测试用例失败后运行关键字,只要有一条测试用例失败,运行关键字,只能用于suite teardown。
1.5.12 run keyword if test passed:测试用例通过后运行关键字,如果当前测试用例通过,则根据参数args运行关键字,只能用于test teardown。
1.5.13 run keyword if test failed:测试用例失败后运行关键字,如果当前测试用例失败,则根据参数args运行关键字,只能用于test teardown。
1.5.14 run keyword if timeout occurred:测试用例超时运行关键字,如果当前测试用例超时,则根据参数args运行关键字,只能用于test teardown。
1.6 条件和循环
1.6.1 continue for loop:用在for循环结构体中,用于跳出本层循环,继续下一次循环,相当于continue。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BPSZK51o-1619166759222)(C:\Users\super\AppData\Roaming\Typora\typora-user-images\image-20210406111122391.png)]
1.6.2 continue for loop if :当条件满足时继续下一次循环
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nsroQny5-1619166759226)(C:\Users\super\AppData\Roaming\Typora\typora-user-images\image-20210406111419211.png)]
1.6.3 exit for loop:在for结构体中,用于立即退出循环。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uOqViUzH-1619166759232)(C:\Users\super\AppData\Roaming\Typora\typora-user-images\image-20210406113057618.png)]
1.6.4 exit for loop if :当条件满足时跳出循环。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W2xgO5qq-1619166759234)(C:\Users\super\AppData\Roaming\Typora\typora-user-images\image-20210406113225271.png)]
1.7 断言操作
1.7.1 should (not) be empty :断言是否为空,如果断言不符合预期,则断言失败
所属库 参数 builtin itme|msg=None
判断 item是否为空,实际上通过调用get length关键字获取对应元素的长度是否为0,为0则为空,否则不为空。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1w5rg3c-1619166759237)(C:\Users\super\AppData\Roaming\Typora\typora-user-images\image-20210406143453398.png)]
1.7.2 should (not) be equal:断言是否相等。如果不相等,则断言失败.
所属库 参数 builtin first|second|msg=None|values=Ture|ignore_case=False
如果此关键字失败,则构造错误消息方法:
如果没有给出msg,则错误消息为!=. 如果给出msg并且values得到一个真值,则错误消息是:!=. 如果给出msg并且values得到一个假值,则错误消息是
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ycgDYURB-1619166759238)(C:\Users\super\AppData\Roaming\Typora\typora-user-images\image-20210406144817327.png)]
1.7.3 should (not)be equal as strings:断言作为字符串是否相等,即变量转换为字符串后再进行比较.使用方法同1.7.2
所属库 参数 builtin first|second|msg=None|values=Ture|ignore_case=False
1.7.4 should (not) be equal as integers:断言作为整数是否相等,即变量转换为整数再进行比较.使用方法同上。
1.7.5 should (not) be true :断言是否为真
所属库 参数 builtin condition,msg=None
如果condition是一个字符串则使用python的内置函数eval来处理表达式。
1.7.6 should (not) contain:断言是否包含某元素:
所属库 参数 builtin container|item|msg=None|values=Ture|ignore_case=False
适用于所有字符串,列表,和任何支持python的in表达式运算符对象。
1.7.7 should (not) contain any:断言是否包含任一元素
所属库 参数 builtin container|*items|**configuration
1.7.8 should contain x times:断言某元素是否被包含指定次数.
所属库 参数 builtin item1|item2|count|msg=none|ignire_case=False
适用于字符串,列表等支持get count关键字的对象,msg会覆盖默认的错误信息,实际次数会记录在日志里。
1.7.9 should(not) start with:断言是否以某某开头。断言str1是否以str2 开头,是则断言成功.
所属库 参数 builtin str1,str2|msg=none|values=True|ignore_case=False
1.7.10 should (not) end with:断言是否以某某结尾。断言str1是否以str2结尾
所属库 参数 builtin str1,str2|msg=none|values=True|ignore_case=False
1.7.11should (not) match regexp:断言是否匹配正则表达式,断言字符串string是否匹配指定的正则表达式。
所属库 参数 builtin string|pattern|msg=None|values=True
使用regexp需要注意
反斜杠是转义字符,使用反斜杠需要双重转义即\\(表示第一个反斜杠转义了第二个反斜杠)。、 需要转义的特殊字符可以使用regexp ESCAPE关键字 pattern不会匹配整个字符串,例如模式‘ello’会匹配字符串’hello world‘,如果要完整匹配,’^‘匹配开头,“$”匹配结尾。 如果关键字成功,则他返回字符串匹配模式的一部分,还可以返回元组。
1.7.12 length should be :断言长度是否相等,断言给定的item元素长度和length是否相等
所属库 参数 builtin item|length|msg=None
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-duKWRd6U-1619166759240)(C://Users//super//Documents//JD//office_dongdong//ext.zhangliuxin//Temp//JdOnline20210408110341.png)]
1.7.13 keyword should exist:断言关键字是否存在
所属库 参数 builtin name|msg=None
keyword should exist ${关键字} keyword should exist ${模块名.关键字}
当存在多个同名关键字时,可以使用模块名.关键字断言
1.7.14 list should (not) contain value:断言列表是否包含某值
所属库 参数 Collections list|value|msg=None
list should contain value ${LIST} name
1.7.15 lists should be equal:断言两个列表是否相等,首先验证列表长度是否相等,然后检查它们的值是否相等
所属库 参数 Collections list1|list2|msg=None|values=True|names=None
lists should be equal ${LIST1} ${LIST2}
1.7.16 list should not contain duplicates:断言列表不包含重复项,包含则断言失败,否则断言成功。
所属库 参数 Collections list|msg=None
list should not contain duplicates ${LIST}
1.7.17 dictionary should contain item:断言字典是否包含指定键值对
所属库 参数 Collections dictionary|key|value|msg=None
dictionary should contain item ${DICT} key value
1.7.18 dictionary should (not)contain key: 断言字典是否包含指定的key值
所属库 参数 Collections dictionary|key|msg=None
dictionary should (not)contain key ${DICT} key
1.7.19 dictionary should (not)contain value: 断言字典是否包含指定的value值
所属库 参数 Collections dictionary|value|msg=None
dictionary should (not)contain value ${DICT} value
1.7.20 dictonaries should be equal:断言给定的字典是否相等,先检查字典键的相等性,再检查所有键值对的相等性,如果存在差异,则断言失败.
所属库 参数 Collections dict1|dict2|msg=None|values=True
dictonaries should be equal ${DICT1} ${DICT2}
1.8 集合操作
1.8.1 create list :创建列表,并返回
1.8.2 log list:打印输入列表中的值。
所属库 参数 Collections list_|level=INFO
@{list} create list a log list ${list} level=INFO
1.8.3 append to list:添加列表到元素:向列表中添加元素,新添加的元素会自动加到列表末尾。
所属库 参数 Collections list_|*values
@{list} create list a append to list ${list}
1.8.4 insert into list:插入元素到列表,向列表中指定的位置(index)插入新的元素(value)
所属库 参数 Collections list_|index|value
@{list} create list a b insert into list ${list} 0 ${1}
1.8.5 copy list:复制列表,复制并返回一个新列表.
${list} create list a b @{new_list} copy list ${list}
1.8.6 get from list:从列表中取值,从列表中按指定索引位置取值。
所属库 参数 Collections list_|index
@{list} create list a b ${x} get from list ${list}
1.8.7 get index from list:获取列表值对应的索引位置,找不到返回-1
所属库 参数 Collections list_|value|start=0|end=None
@{list} create list a b ${a_index} get index from list ${list} a
1.8.8 reverse list :反转列表:对给定列表各元素值顺序进行反转,在原有列表中直接修改。
@{list} create list a b reverse list ${list}
1.8.9 set list value:设置列表值,向列表中指定位置设置值,会替换原有列表位置中的值。
所属库 参数 Collections list_|index|value
@{list} create list a set list value ${list} 0 bb
1.8.10 sort list:排序列表,对列表中的值进行排序,字符串按字母顺序排序,数字按照数值进行排序,该关键字修改原列表,且字符串不能和数字进行比较
@{list} create list a sort list @{list}
1.8.11 remove from list:移除列表指定位置的元素,并返回对应的值
所属库 参数 Collections list_|index
@{list} create list a ${delete} remove from list ${list} 0
1.8.12 remove values from list:从列表中移除给定的所有值,给出不存在的值不会报错。
所属库 参数 Collections list_|*values
@{list} create a remove values from list ${list} a
1.8.13 remove duplicates:从列表中移除重复项,并返回没有重复值的结果。
@{list} create list a b remove duplicates ${list} a
1.8.14 create dictionary:创建字典
&{dict} create dictionary name=mike age=19
1.8.15 log dictionary:打印字典
所属库 参数 Collections dict|level=info
&{dict} create dictionary name=mike age=19 log dictionary ${dict}
1.8.16 set to dictionary:添加元素到字典
所属库 参数 Collections dict|*key_value_pairs|**items
&{dict} create dictionary name=mike age=19 set to dictionary ${dict} sex man
1.8.17 copy dictionary:复制字典并返回
&{dict} create dictionary name=mike age=19 &{new_dict} copy dictionary ${dict}
1.8.18 get dictionary items:获取字典中的所有元素并以列表的形式返回
&{dict} create dictionary name=mike age=19 ${itmes} get dictionary itmes ${dict}
取出的值为:[‘name’,‘mike’,‘age’,‘18’]
1.8.19 get dictionary keys:获取字典中所有key值,并以列表形式返回
&{dict} create dictionary name=mike age=19 ${new_list} get dictionary keys ${dict}
1.8.20 get dictionary values:获取字典中所有value值,并以列表形式返回
&{dict} create dictionary name=mike age=19 ${values} get dictionary values ${dict}
1.8.21 get from dictionary :获取字典中指定的key的值。
&{dict} create dictionary name=mike age=19 ${age} get from dictionary ${dict} age
1.8.22 pop from dictionary:删除并返回字典中指定的key值
所属库 参数 Collections dict|key|default(当列表中不存在该值时,使用default值)=
&{dict} create dictionary name=mike age=19 ${age} pop from dictionary ${dict} age default=18
1.8.23 remove from dictionary:删除字典中指定的key值
所属库 参数 Collections dict|*key
&{dict} create dictionary name=mike age=19 remove from dictionary ${dict} name age
1.9 常用关键字
1.9.1 log 打印输出,按照指定日志级别打印输入message内容。
所属库 参数 builtin msg|level=info|html=false|console(是否输出到控制台)=false|repr(按照unicode编码原样显示)=False
其中level有五个级别:trace,debug,info(默认),html,warn,error,其中warn和error记录的消息可在控制台和日志报告中的错误提示栏看到,
log hello world console=True
1.9.2 log many :按照默认的info日志级别输出一个或多个msg内容,常用于打印列表或字典中各元素的值
log many @{list} &{dict} log many hello world
注意:字典和列表应该使用各自的标识:字典&。列表@
1.9.3 log to console:打印到控制台
所属库 参数 builtin msg|stream(标准流)=STDOUT|no_newline(不换行)=false
1.9.4 sleep:延时等待,按照给定的时间延时等待一段时间后执行,时间可以是数字或者时间字符串
格式1:1 day 2 hours 3 minutes 4 seconds 5 milliseconds
格式2 :1d 2h 3m 4s 5ms
所属库 参数 builtin time|reason(说明)=None
1.9.5 comment:对参数添加注释,不进行任何处理,且会显示在日志中。
comment 增加注释 comment sleep 10
1.9.6 call method:调用方法,使用参数args调用对象object的方法method_name
所属库 参数 builtin object|method_name|*args|**kwargs
call method ${hashtable} put value1 value2 ${value}= call method ${hashtable} get value1
1.通过关键字调用hashtable对象的put方法,向里面加入新值value1,value2
2.调用hashtable对象的get方法,取出value1
1.9.7 get count:获取数量,返回并在日志中记录item2在item1中出现的次数
${count} get count ${some} sub
1.9.8 get length:获取长度,返回并在日志中记录item的长度
item可以是任何有长度的对象,如字符串,列表,集合,
${length}= get length hello world
1.9.9 get time:获取时间,根据指定格式获取时间,不区分大小写
所属库 参数 builtin format=timestamp|time=now
1.如果格式中包含epoch,返回的是从(Jan 1,1970,0:00:00)开始计算的秒数
如果格式中包含year,month,day,hour,min或sec,则返回对应部分。
默认格式为2021-04-13 12:07:34
有效的时间戳,比如YYYY-MM-DD hh:mm:ss和YYYYMMDD hhmmss.
now:不区分大小写,为当前时间,
now -1 day 或now+ 1 hour 30 min 等会计算时间
1.9.10 pass execution:标记测试用例成功,跳过当前测试用例未执行的部分,直接标记测试用例结果为pass
pass execution log 此条语句不会执行
1.9.11 pass execution if:当条件满足时标记测试用例执行成功,跳过当前测试用例未执行的部分。
所属库 参数 builtin condition|msg|*tags
FOR ${var} in @{values} pass execution if ‘${var}’==‘a’ log hello
当var的取值时a时,会跳过打印hello,否则打印hello
1.9.12 fail:标记当前测试用例失败:停止当前测试用例执行,并标记测试用例失败.
所属库 参数 builtin msg=None|*tags
1.9.13 fatal error:停止当前所有待执行用例,并标记其状态为失败。
1.9.14 import library:导入测试库,一般可在测试套件中进行导入,也可在测试执行中通过调用关键字来导入,支持以库名或绝对路径的形式导入
可以使用WITH NAME来更改库名,用于增加别名。
import library mylibray import library mylibray WITH NAME mylib
导入成功显示黑色,失败显示红色