一、简要介绍
Robotframework:是一个基于Python语言开发的,可扩展的,是关键字驱动模式的自动化测试框架,Robotframework最新的版本是2019年7月份发布,7月份之前只支持python2.7,7月之后支持3.X的版本
首先简单说下【关键字驱动模式】和【数据驱动模式】的含义:
关键字驱动模式:就是将项目中的一些逻辑封装成关键字(一个函数名),然后我们可以调用不同的关键字组合实现不同的业务逻辑,从而驱动测试用例执行
例如:UI自动化中,我们每个用例步骤都可以写成一个方法,然后在robot中直接引用这个方法名即可
数据驱动模式:就是实现参数化数据
例如:在API自动化中,比如框架用的pytest/unittest,我们一般都会实现参数化,将你的参数统一写在外部文件(excel、yaml、txt、csv…)中,然后通过读取外部文件进行参数化请求,这样的话之后我们只需要维护更改你的外部文件即可,常用的包:@ddt
Robotframework特点:
1)编辑用例简单,可以以robot,txt,tsv或者html的格式编写用例
2)自动生成html格式的测试报告和日志(HtmlTestRunner.py,allure)
3)不仅拥有自带的类库:
Buitini(测试库)
Collections(集合库)
Date Time(时间库)
ScreenShot(截屏库)
也很多其他实用的类扩展库:
SeleniumLibrary(web自动化测试)
RequestsLibrary(接口自动化测试)
AppiumLibrary(APP自动化测试)
4)可以根据项目的需要自定义一些关键字
5)可以使用GUI的方式运行,可以和SVN或者GIT及Jenkins持续集成
二、RobotFramework下载
#robotframework
pip install robotframework==4.1.3
#ride,可以进行GUI操作
pip install robotframework-ride==2.0b1
# 所有的扩展库下载后会统一放在python\Lib\site-packages文件夹下
# web自动化第三方库,进行UI自动化操作时下载,
pip install robotframework-selenium2library==3.0.0
pip install robotframework-seleniumlibrary==4.3.0
# 接口自动化测试库
pip install robotframework-requests
# appui自动化第三方库
pip install robotframework-appiumlibrary
三、Ride基本使用
1、运行ride.py
2、常用快捷键
# 1、查询关键字
F5
# 2、关键字自动补全
ctrl+shift+空格
四、简单robot用例实战
1、创建项目(New Project)
File --> New Project,Type选择Directory,Format选择Robot
2、创建模块(New Directory)
鼠标右键点击项目 --> 选择New Directory
3、创建测试套件(New Suite)
鼠标右键点击模块 --> 选择New Suite
4、创建测试用例(New Test Case)
鼠标右键点击Suite --> 选择New Test Case
5、创建资源文件(New Resource)
资源文件是【自定义关键字】的载体
注意:只能在文件夹下面进行创建,并且是txt格式的
6、创建业务关键字(New User Keyword)
在资源文件下新建业务关键字
7、常用关键字用例编写
以下这些都是robot常用关键字,但其实我们自己的项目中进行UI/App自动化时,我们一般会使用自定义关键字
testcase003
Comment 1、打印
Log 你好
Comment 2、设置变量
${a} Set Variable 100
Log ${a}
Comment 3、获得系统时间
${time} Get Time
Comment 4、睡眠时间,强制等待
Comment sleep 3
Comment 5、字符串的拼接
${str} Catenate oracle mysql sqlserver
Log ${str}
Comment 6、创建列表
${list1} Create List 11 22 33
Log ${list1}
@{list2} Create List 44 55 66
LogMany @{list2}
Comment 7、创建字典
${dic} Create Dictionary name=mikasa age=17
Log ${dic}
${keys} Get Dictionary Keys ${dic}
Log ${keys}
${values} Get Dictionary Values ${dic}
Log ${values}
${key_value} Get From Dictionary ${dic} name
Log ${key_value}
Comment 8、执行python里面的方法
${random_num} Evaluate random.randint(1,101) modules=random
Log ${random_num}
${time} Evaluate time.time() modules=time
Log ${time}
Comment 9、用自定义的方法
Import Library D:/Users/**/PycharmProjects/PythonProject0329/base.py
${a} Set Variable mi
${b} Set Variable hongguang
${return_result} join_two_strings ${a} ${b}
Log ${return_result}
Comment 10、流程控制IF
${score} Set Variable 62
Run Keyword If ${score}<60 Log 不及格
... ELSE IF 60<=${score}<=80 Log 良好
... ELSE Log 优秀
Comment 11、流程控制For
FOR ${a} IN MYSQL ORACLE JAVA
Log ${a}
END
Comment 12、For遍历数组
@{list3} Create List MYSQL ORACLE JAVA
FOR ${a} IN @{list3}
Log ${a}
END
Comment 13、For遍历数字范围
FOR ${a} IN RANGE 1 10
Run Keyword If ${a}==5 Exit For Loop
Log ${a}
END
base.py
实现字符串拼接
def join_two_strings(arg1, arg2):
return arg1 + "-" + arg2