IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> robotframwork -> 正文阅读

[开发测试]robotframwork

创建测试case

本章介绍创建测试case的语法。

  1. 测试用例语法

1.1. 基础语法

测试用例是由测试库或者用户自定义的资源文件中的关键字组成的。基本格式如下:

*** Test Cases ***

Valid Login

Open Login Page

Input Username demo

Input Password    mode

Submit Credentials

Welcome Page Should Be Open

Setting Variables

Do Something    first argument    second argument

说明:

*** Test Cases ***:表示测试用例

Valid Login:第1个测试用例的名称

Input Username demo:蓝色字体表示的是关键字,对应的就是RF中的一个函数,红色字体表示的函数的参数

Setting Variables:表示第2个测试用例的名称

代码示例1:

*** Test Cases ***
logging
[Template] log
张三
李四
王五
time
${t} Get Time
log ${t}

执行结果:在这里插入图片描述
1.2. 配置测试用例表

测试用例也有自己的配置项,可以修改名单,超时时间等等,支持的配置项如下:

[Documentation]:Used for specifying a test case documentation.

[Tags]:Used for tagging test cases.

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

[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-johndoe
Log Hello, world!
执行结果:
在这里插入图片描述
3.setup和teardown

和其它自动化测试框架类似,Robot Framework也支持setup 和teardown的功能,用来执行一些初始化和清理的工作。setup 和teardown分为测试套件的setup 和teardown,还有测试用例的setup 和teardown,测试套件级别的就是在所有的测试用例中都会执行,测试用例级别的就是在某个测试用例下执行,具体的结构如下:

*** Settings ***

Test Setup Open Application App A

Test Teardown Close Application

*** Test Cases ***

Default values

[Documentation]    Setup and teardown from setting table

Do Something

Overridden setup

[Documentation]    Own setup, teardown from setting table

[Setup]    Open Application    App B

Do Something

No teardown

[Documentation]    Default setup, no teardown at all

Do Something

[Teardown]

No teardown 2

[Documentation]    Setup and teardown can be disabled also with special value NONE

Do Something

[Teardown]    NONE

Using variables

[Documentation]    Setup and teardown specified using variables

[Setup]    ${SETUP}

Do Something

[Teardown]    ${TEARDOWN}

说明:

  1. 在Setting中声明的是测试用例的setup 和teardown,以test开头,如果是测试套件级别的话是,以Site开头,如:

Suite Setup Open Browser To Login Page

Suite Teardown Close Browser

  1. 测试用例中默认会执行[Setup] or [Teardown](见Default Values)

  2. 测试用例中使用关键字[Setup] or [Teardown]是对Setting中声明的关键字重写(见Overridden setup)

  3. 如果使用了关键字[Setup] or [Teardown],但是后面紧跟的关键字是None的话,或者没有参数的话,那么相应的操作也不会执行(见No teardown和No teardown 2)

  4. 可以使用变量的方式(${var})执行[Setup] or [Teardown](见Using Variables)

  5. 测试模板

测试模板的作用是将关键字驱动的测试用例转换为数据驱动的测试用例。

4.1. 基本用法

可以使用[Template] 或者在Setting中用Test Template实现,模板如下:

方式一:[Template]

*** Test Cases **

Normal test case

Example keyword first argument second argument

Templated test case

[Template] Example keyword

first argument second argument

代码示例:

*** Test Cases ***
normal test case
log 光荣之路
log 测试开发培训

template test case
[Template] log
光荣之路
测试开发培训
执行结果:

方式二:

*** Settings ***

Test Template Example keyword

*** Test Cases ***

Templated test case

first round 1 first round 2

second round 1 second round 2

third round 1 third round 2

代码示例:

*** Settings ***
Test Template log

*** Test Cases ***
template test case
[Template] log
光荣之路
测试开发培训
执行结果:

4.2. 内置参数的模板

这种类型的模板中参数类似于占位符,调用时就用指定位置的数据替换,所以传入的参数个数需要好定义的参数个数相等,但是参数名可以不一致。

代码示例1:

*** Test Cases ***
Normal test case with embedded arguments
The result of 1 + 1 should be 2
The result of 1 + 2 should be 3

Template with embedded arguments
[Template] The result of ${calculation} should be ${expected}
1 + 1 2
1 + 2 3

*** Keywords ***
The result of ${calculation} should be ${expected}
${result} = Calculate ${calculation}
Should Be Equal ${result} ${expected}

Calculate
[Arguments] ${calculation}
r e s e v a l u a t e s t r ( e v a l ( s t r ( {res} evaluate str(eval(str( resevaluatestr(eval(str({calculation})))
[Return] ${res}
执行结果:
在这里插入图片描述

代码示例2:

*** Test Cases ***
Different argument names
[Template] The result of ${foo} should be ${bar}
1 + 1 2
1 + 2 3

Only some arguments
[Template] The result of ${calculation} should be 3
1 + 2
4 - 1

New arguments
[Template] The ${meaning} of ${life} should be 42
result 21 * 2

*** Keywords ***
The result of ${calculation} should be ${expected}
${result} = Calculate ${calculation}
Should Be Equal ${result} ${expected}

Calculate
[Arguments] ${calculation}
r e s e v a l u a t e s t r ( e v a l ( s t r ( {res} evaluate str(eval(str( resevaluatestr(eval(str({calculation})))
[Return] ${res}

执行结果:
Starting test: Em Arg Template1.Different argument names
20190629 13:52:45.376 : INFO : ${res} = 2
20190629 13:52:45.378 : INFO : ${result} = 2
20190629 13:52:45.383 : INFO : ${res} = 3
20190629 13:52:45.385 : INFO : ${result} = 3
Ending test: Em Arg Template1.Different argument names

Starting test: Em Arg Template1.Only some arguments
20190629 13:52:45.394 : INFO : ${res} = 3
20190629 13:52:45.395 : INFO : ${result} = 3
20190629 13:52:45.401 : INFO : ${res} = 3
20190629 13:52:45.402 : INFO : ${result} = 3
Ending test: Em Arg Template1.Only some arguments

Starting test: Em Arg Template1.New arguments
20190629 13:52:45.411 : INFO : ${res} = 42
20190629 13:52:45.412 : INFO : ${result} = 42
Ending test: Em Arg Template1.New arguments
6. 使用库

这部分介绍如何使用测试库和库的中的关键字。

6.1. 导入库

关键字是Library,有2种方式导入指定的库:

l 使用Library关键字,通过库名导入

这种方式本质使用的就是python中导入模块的,根据搜索路径来查找文件

语法:Library [库名]

*** Settings ***

Library OperatingSystem

Library my.package.TestLibrary

Library MyLibrary arg1 arg2

Library ${LIBRARY}

注意:库名都是大小写敏感的,而且空格的个数也需要严格按照库名来写

l 使用Library关键字,通过文件路径导入

语法:Library [库文件路径]

*** Settings ***

Library PythonLibrary.py (要有后缀名)

Library /absolute/path/JavaLibrary.java

Library relative/path/PythonDirLib/ possible arguments

Library ${RESOURCES}/Example.class

6.2. 导入库时使用别名

如果导入的库名很长或者级别很多,或者是同样的库但是用不同的版本等情况下,就可以使用别名,将库重命名为简单的字符,方便后续操作,

关键字:WITH NAME,大小写敏感。

基本用法如下:

*** Settings ***

Library com.company.TestLib WITH NAME TestLib

Library ${LIBRARY} WITH NAME MyName

同一个库引用多次:

*** Settings ***

Library SomeLibrary localhost 1234 WITH NAME LocalLib

Library SomeLibrary server.domain 8080 WITH NAME RemoteLib

*** Test Cases ***

My Test

LocalLib.Some Keyword some arg second arg

RemoteLib.Some Keyword another arg whatever

LocalLib.Another Keyword

  1. 变量

Robot Framework中有很多地方使用到变量,比如关键字的参数,临时变量等等,用来暂时或者永久存储一些数据。Robot Framework支持的变量类型包括,标量,列表、字典和环境变量,引用的语法分别为:${SCALAR}, @{LIST} ,&{DICT},%{ENV_VAR}。标量,可理解为单值变量,与之对应的是List这种多值变量。单值不仅仅可以是字符串、数值这样的,还有可能是个对象或者字典。

Robot Framework变量, 与关键字类似不区分大小写, 同时其中的下划线和空格也会被忽略。推荐使用大写字母来表示全局变量(如 ${PATH} 或 ${TWO WORDS}), 小写字母来表示局部变量(如 ${my var} 或 ${myVar})。

7.1. 标量

在*** Variables 下,用${var}定义标量,在 Test Cases ***中用log输出

代码示例1:

*** Variables ***
${NAME} robot framework
${VERSION} 3.1
${CONN} ${NAME} + ${VERSION}

*** Test Cases ***
scalar
log ${NAME}
log ${VERSION}
log ${CONN}

执行结果:

Starting test: Rf Demo1.Variables.scalar
20190629 15:53:46.477 : INFO : robot framework
20190629 15:53:46.479 : INFO : 3.1
20190629 15:53:46.481 : INFO : robot framework + 3.1
Ending test: Rf Demo1.Variables.scalar
7.2. 列表

创建:列表创建时使用的标识符为@,

访问:@{NAME}[index]或者 N A M E [ i n d e x ] , 其 中 i n d e x 为 下 标 。 R o b o t F r a m e w o r k 3.1 版 本 中 , 除 了 列 表 的 切 片 必 须 用 {NAME}[index],其中index为下标。Robot Framework 3.1版本中,除了列表的切片必须用 NAME[index],indexRobotFramework3.1符号外其它情况下@和 都 可 以 , 建 议 使 用 都可以,建议使用 使。列表的访问和python中类似,下标从0开始,负数的话表示从后向前取数据,如果下标超过列表长度的话会报索引错误,也可以使用切片

代码示例:

*** Variables ***
@{colors} red green white
@{nums} 1 2
${index} 2

*** Test Cases ***
list
log ${colors}[0]
log @{colors}[-1]#取最后一个元素
log KaTeX parse error: Expected 'EOF', got '#' at position 13: {colors}[1:]#?切片,注意是开头
log @{colors}[KaTeX parse error: Expected 'EOF', got '#' at position 9: {index}]#?列表和标量结合使用 log …{index}] #越界
执行结果:

7.3. 字典

创建:字典创建和访问时使用的标识符为&,

访问:通过 &{NAME}[key]或者 N A M E [ k e y ] 这 样 的 语 法 格 式 获 取 字 典 中 某 项 的 值 , 其 中 k e y 是 键 的 名 称 。 R o b o t F r a m e w o r k 3.1 版 本 中 , 以 上 两 种 语 法 都 支 持 , 但 是 建 议 使 用 {NAME}[key] 这样的语法格式获取字典中某项的值, 其中 key 是键的名称。Robot Framework 3.1版本中,以上两种语法都支持,但是建议使用 NAME[key],keyRobotFramework3.1使。字典的键名当作字符串处理, 非字符串的键可以用变量代替

代码示例1:创建字典并获取其中的项

*** Variables ***
&{user 1} name=kongsh password=1234 age=${42}
&{user 2} name=kongsh password=1234 password=8888#key重复
&{user 3} name=kongsh=tt #变量值中有=号时需要用反斜杠\转义
${key} name

*** Test Cases ***
dict
log many u s e r 1 [ {user 1}[ user1[{key}] ${user 1}[age]
log ${user 2}[password]
log &{user 3}[name]
log ${user 3.name}#点的方式访问

执行结果:

说明:

  1. 字典的key不会有重复的值,多次写同一个key时只保留最后一次写的结果

  2. 变量值中有=号时需要反斜杠转义

  3. 如果键是字符串, 还可以使用另一种语法格式 ${NAME.key}(注意这里是 $ )。

代码示例2:字典中的项可以作为命名参数传给关键字

假设有个字典变量 &{USER} 中有值 {‘name’: ‘robot’, ‘password’: ‘secret’}, 则下面两个用例的效果是等价的。伪代码:

*** Test Cases ***

Constants

Login name=robot password=secret

Dict Variable

Login &{USER}

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:59:46  更:2021-08-18 13:00:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 15:00:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码