从零学习基于Python的RobotFramework自动化
从零学习基于Python的RobotFramework自动化
一、 Python基础
1) 版本差异
|
版本 |
编码 |
语法 |
其他 |
|
2.X |
ASCII |
try: raise TypeError, 类型错误" except TypeError, err: print err.message |
…… |
|
3.X |
UTF-8 |
try: raise TypeError("类型错误") except TypeError as err: print(err) |
去除不等于<> 去除long类型 新增bytes类型 |
2) 输入输出
text = input('Enter any content : ') #输入
print("Your input content is : %s" % text) #输出
=============== C:\Python37\python.exe E: /TestScript.py ======================
Enter any content : who am I.
Your input content is : who am I.
____________________________________________________________________________________________
3) 分支循环
for i in range(10): #range(start, stop[, step])
if i % 2 == 0:
print(i, end=' ')
=============== C:\Python37\python.exe E: /TestScript.py ======================
0 2 4 6 8
____________________________________________________________________________________________
4) 数据类型
a = 123 #整型 int()
b = '' #字符串 str()
c = [1, 2, 3] #列表 list()
d = (1, 2, 3) #元组 tuple()
e = {1, 2, 3} #集合 set()
f = {'aa': 1, 'bb': 2} #字典 dict()
注意:
- 字符串、列表、元组均可以通过索引获取值,以及截取部分。例如:a[0] >>> 1,b[1:-]>>> '2'。
- 整型、字符串、元组数据不可变; 集合是无序唯一的; 字典中key必须唯一且与value成对。
____________________________________________________________________________________________
5) 函数方法
class Operation(): #类定义
def add(self, a, b): #方法定义
return a + b #返回结果
opt = Operation() #实例化类
print(opt.add(3, 5)) #调用类方法
=============== C:\Python37\python.exe E: /TestScript.py ======================
8
____________________________________________________________________________________________
6) 模块导入
from robot.api import logger import configparser
____________________________________________________________________________________________
7) 异常报错
² KeyboardInterrupt Ctrl+C被按下
² AttributeError 试图访问对象没有的属性(比如foo没有属性x,却试图访问foo.x)
² IOError 输入/输出异常(一般是无法打开文件)
² ImportError 无法引入模块或包(一般是名称或路径错误,或者是无此第三方包)
² IndentationError 语法错误(一般是代码没有正确对齐)
² SyntaxError 代码非法,代码不能编译(一般是语法错误,写错了)
² NameError 使用一个还未被赋予对象的变量
² IndexError 下标索引超出序列边界,(比如f只有3个元素,却试图访问f[5])
² TypeError 传入对象类型与要求的不符合
² KeyError 试图访问字典里不存在的键
² ValueError 传入一个调用者不期望的值
二、 RobotFramework基础
1) 版本差异
|
版本 |
安装 |
支持 |
运行 |
其他 |
|
1.5.X之前 |
wxPython2.8.x |
Pyhton2.x |
pybat |
…… |
|
1.7.X之后 |
wxPython4.0.x |
Pyhton2.x |
robot |
新增debug模式 |
2)
输入输出
Import Library Dialogs
${username} = Get Value From User Input user name default
Log ${username}
=======================================================
20190724 12:37:36.010 : INFO : ${username} = zhangsir
20190724 12:37:36.010 : INFO : zhangsir
_________________________________________________________________________________
3) 分支循环
FOR ${i} IN RANGE 5
Run Keyword If ${i}%2==0 Log ${i}
END
=======================================================
20190724 12:51:55.658 : INFO : 0
20190724 12:51:55.658 : INFO : 2
20190724 12:51:55.658 : INFO : 4
________________________________________________________________________________
4) 数据类型
${a}= Set Variable ${123}
${b}= Set Variable 123
@{c}= Create List 1 2 3
&{d}= Create Dictionary aa=1 bb=2 cc=3
=======================================================
20190724 13:44:11.701 : INFO : ${a} = 123
20190724 13:44:11.717 : INFO : ${b} = 123
20190724 13:44:11.717 : INFO : @{c} = [ 1 | 2 | 3 ]
20190724 13:44:11.717 : INFO : &{d} = { aa=1 | bb=2 | cc=3 }
20190724 13:44:11.717 : INFO : 123
20190724 13:44:11.717 : INFO : 123
20190724 13:44:11.717 : INFO : ['', '', '']
20190724 13:44:11.717 : INFO : {'aa': '', 'bb': '', 'cc': ''}
________________________________________________________________________________
5) 函数方法
*** Keywords ***
Library MyLibrary
*** Keywords ***
Query Redis String
[Arguments] ${key} ${db}=8
${conn} Connected To Redis ${db}
${result} Get From Redis ${conn} ${key}
[Return] ${result}
________________________________________________________________________________
6) 模块导入
Import Library MyLibrary
Import Resource BasicResource.robot
Import Variables ${adultCode}
________________________________________________________________________________
7) 异常报错
=======================================================
20190724 14:08:07.692 : INFO : 123
20190724 14:08:07.692 : FAIL :
Replacing variables from setting 'Variables' failed: Variable '${test}' not found. Did you mean:
${TEST_TAGS}
${TEST_NAME}
20190724 14:08:07.692 : DEBUG :
Traceback (most recent call last):
None
三、 RobotFramework常用关键字
1) Evaluate关键字
以Python模式计算指定的表达式并返回结果。
- ${random} = Evaluate random.randint(0, sys.maxint) modules=random, sys
2) Should系列关键字
用于判断校验测试结果。
Should Be Empty:如果指定对象不为空则失败(反之Should Not …)。
Should Be Equal:如果指定对象不相等则失败(反之Should Not …)。
Should Be True:如果指定条件不成立则失败(反之Should Not …)。
Should Contain:如果指定对象不包含则失败(反之Should Not …)。
……
3) Convert系列关键字
用于数据的类型转换。
Convert To Integer:将指定项转换为整数。
Convert To Number:将指定项转换为浮点数。
Convert To String:将指定项转换为unicode字符串。
……
4) Run Keyword系列关键字
根据判断条件的真假执行关键字
Run Keyword If:如果条件为真,则使用指定的参数运行指定的关键字。
Run Keyword Unless:如果条件为假,则使用指定的参数运行指定的关键字。
Run Keyword:使用指定的参数执行指定的关键字。
Run Keywords:按顺序执行所有指定的关键字(使用AND连接)。
- ……
5) Get系列关键字
根据关键字作用获取值。
Get Count:返回item1中出现item2的次数。
Get Length:返回指定项的长度。
Get Time:返回指定格式时间。
……
6) Set系列关键字
设置参数或变量。
Set Variable:设置变量。
Set Variable If:根据指定条件设置变量。
Set Log Level:设置日志登记。
……
7) 其他关键字
Sleep:强制休眠指定时间(秒)。
Catenate:连接多个字符串(默认有空格)。
Call Method:使用提供的参数调用指定对象的方法。
Exit For Loop If:如果条件为真,则结束FOR循环。
四、 RobotFramework安装
1) 安装Python3.x
首先运行python-3.7.3-amd64.exe,勾选“Add Path…”,最好选择自定义安装在根目录。
然后打开DOS命令窗口,分别输入python --version和pip –version,显示对应判断则安装成功。
2) 安装相关模块
pip install redis
pip install pysolr
pip install pymysql
pip install robotframework
pip install robotframework-ride
pip install robotframework-requests # 用于接口测试
pip install robotframework-databaselibrary # 用于数据库测试
3) 自定义库管理
把自定义文件包放到Python目录下Lib/site-packages即可。
4) 常见错误处理
- 运行RF3.X报错,提示信息“python2.x调用失败”?
这是由于你之前安装过RF2.X,切换到RF3.X后数据文件未清除导致。
请在系统盘搜索librarykeywords.db文件并删除(AppData\Roaming\RobotFramework\ride),重启RIDE。
- 运行RF3.X报错,提示信息“找不到pybat”?
这是因为RF3.X去除了pybat模式,合并到了robot模式。请更改执行模式为robot,并更改用例文件格式为.robot。

五、 日期时间处理
1) 日期格式
l 常见形式: 2019-07-20 18:45:18(格式化"%Y-%m-%d %H:%M:%S")
l Solr库: 2019-07-20T18:45:18Z(格式化"%Y-%m-%dT%H:%M:%SZ")
l Redis库: Jul 7, 2019 6:45:18 PM(格式化"%b %d, %Y %I:%M:%S %p")
l MySQL库: datetime.datetime(2019, 7, 20, 18, 45, 18)
l 含毫秒: 2019-07-20 18:45:18.000(格式化"%Y-%m-%d %H:%M:%S.%f")
l 时间戳: 1564453476000
l 其他: 20190720184518(格式化"%Y%m%d%H%M%S")
2) 处理方法
※ Convert Date:转换日期格式,可指定输入输出格式(epoch表示时间戳)。
参数:
date: 日期字符串
result_format: 返回的日期格式,
exclude_millis: 是否舍去毫秒
date_format: 格式化的日期格式
示例:
| Convert Date | 2014-05-28 12:05:03.111 | result_format=epoch | #返回'1401267903.111' |
| Convert Date | Jul 7, 2019 6:45:18 PM | date_format=%b %d, %Y %I:%M:%S %p | #返回'2014-05-28 12:05:03'|
※ Get Current Date:获取当前日期时间,可指定输出格式。
参数:
time_zone:获取此时区的当前时间(目前仅支持本地和UTC)
increment:设置返回日期时间增量,可为负数
result_format:返回日期的格式。
exclude_millis:是否舍去毫秒
示例:
| Get Current Date | result_format=%Y-%m-%d | #返回当天日期 |
六、 JSON处理
1) 标准格式
{
"key1": {
"key2": 123,
"key3": "123",
"key4": [1, 2, 3],
"key5": {"key": "value"}
},
"key6": true,
"key7": null
}
2) 处理方法
※ Get Json Value:获取JSON中指定目标节点值。
参数:
json_string:JSON文档
json_pointer:JSON节点
示例:
| ${result}= | Get Json Value | {"foo": {"bar": [1,2,3]}} | /foo/bar |
| Should Be Equal | ${result} | [1, 2, 3] |
※ Set Json Value:设置JSON中指定目标节点值。
参数:
json_string:JSON文档
json_pointer:JSON节点
json_value:JSON值
示例:
| ${result}= | Set Json Value | {"foo": {"bar": [1,2,3]}} | /foo | 123 |
| Should Be Equal | ${result} | {"foo": 123} |
七、 Jenkins集成

从零学习基于Python的RobotFramework自动化的更多相关文章
- 基于python的webUI自动化-小白基础篇
最近打算研究一下基于python的webUI自动化,先自学了一下相关基础知识,大概用了一个多月的时间,主要是找视频,一边看视频或者文档一边对照着敲代码运行. 重点强调:一定要一边看一边对照着敲代码运行 ...
- ShutIt:一个基于 Python 的 shell 自动化框架
ShutIt是一个易于使用的基于shell的自动化框架.它对基于python的expect库(pexpect)进行了包装.你可以把它看作是“没有痛点的expect”.它可以通过pip进行安装. Hel ...
- 基于Python的接口自动化-01
为什么要做接口测试 当前互联网产品迭代速度越来越快,由之前的2-3个月到个把月,再到班车制,甚至更短,每次发版之前都需要对所有功能进行回归测试,在人力资源有限的情况下,做自动化测试很有必要.由于UI更 ...
- 基于Python的接口自动化
第一步 Python的安装配置 打开官网: https://www.python.org/downloads/ 目前官网上已经更新到3.6.1啦,有两个版本,大家可以按自己喜欢的去下载,我自己选择的是 ...
- 20191108-从零搭建基于Linux的RobotFramework框架
第一步:安装Centos7 64位操作系统 直接安装即可,不详述 第二步:yum下载wget yum update yum install wget 第三步:安装Python3 建议安装3.7,我在 ...
- centos7 打造基于python语言Selenium2自动化开发环境
1. 准备 安装模块 # yum groupinstall "Development tools" # yum install zlib-devel bzip2-devel ope ...
- 基于Python的接口自动化实战-基础篇之读写配置文件
引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变 ...
- 基于Python的接口自动化实战-基础篇之pymysql模块操作数据库
引言 在进行功能或者接口测试时常常需要通过连接数据库,操作和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操作是否正确等.因此,在进行接口自动化测试时,我们一样绕不开接 ...
- 基于Python的接口自动化-读写excel文件
引言 使用python进行接口测试时常常需要接口用例测试数据.断言接口功能.验证接口响应状态等,如果大量的接口测试用例脚本都将接口测试用例数据写在脚本文件中,这样写出来整个接口测试用例脚本代码将看起来 ...
随机推荐
- StackOverflow 周报 - 高质量问题的问答(Java、Python)
这是 Stack Overflow 第三周周报,本周加入了 Python 的内容,原计划两篇 Java.两篇 Python.但明天过节所以今天就先把周报发了,两篇 Java.一篇 Python.公众号 ...
- 时间复杂度big-O、Big-Omega和big-Theta
我们有三种曲线: A curve that we know is "above" the running time function when n is large. ( Bi ...
- 8 分钟了解 Kubernetes
Kubernetes 脱胎于 Google 的 Borg 系统,是一个功能强大的容器编排系统.Kubernetes 及其整个生态系统(工具.模块.插件等)均使用 Go 语言编写,从而构成一套面向 AP ...
- 使用HTML制作网页
网页基本信息[编码格式] gb2312:简体中文,一般用于包含中文和英文的页面 ISO-885901:纯英文,一般用于只包含英文的页面 big5:繁体中文,一般用户带有繁体字的页面 utf-8:国际通 ...
- Redis相关安装TCL
安装相关命令 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gzsudo tar -xzvf tcl8.6.1-src.tar. ...
- 原生JavaScript时间倒计时的方法
这个思路是来源用%的方法来做的: 以前用%做过转秒的 现在用来做倒计时方法: 需要用到的方法是getTime:获取距离1970年1月1日午夜00:00之间的毫秒差: var targetTime=ne ...
- Escape (BFS + 模拟)
Problem Description The students of the HEU are maneuvering for their military training. The red arm ...
- 【教程】Bluestacks0.7.9.860以上版3分钟教你摇一摇
Bluestacks 0.7.9.860 版或以上 , 打开文件夹Win 7 用户 : C:\ProgramData\Bluestacks\UserData\InputMapperWin XP 用户 ...
- Day 25 网络基础
1:网络的重要性: 所有的系统都有网络! 我们的生活已经离不开网络. 运维生涯50%的生产故障都是网络故障! 2:教室这么多的电脑如何上网的? 网卡(mac地址) 有线(双绞线传播电信号)双向,同时收 ...
- Tomcat 应用中并行流带来的类加载问题
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ作者:肖铭轩.王道环 随着 Java8 的不断流行, ...