pptrf

易优 学习让我们快速成长
Robot
Framework
自动化测试易优 学习让我们快速成长
石峰
19年测试从业经验
迅雷网络测试架构师;
擅长自动化测试、性能测试、接口测试、测试框架设计开发
领取课件学习视频
QQ群: 671581582
职业技术咨询
QQ: 3610355156易优 学习让我们快速成长
简介 Robot Framework是一个通用的开源自动化框架,用于验
收测试,验收测试驱动开发(ATDD)和机器人过程自动化
(RPA)。
它的测试功能可以通过使用Python或Java实现的测试库进
行扩展,用户可以使用与创建测试用例相同的语法从现有的
关键字创建新的更高级别的关键字。易优 学习让我们快速成长
应用范围 单元测试 (robotframework)
接口测试 (robotframework-requests)
WEB自动化测试 (robotframework-seleniumlibrary)
App自动化测试 (robotframework-appiumlibrary)易优 学习让我们快速成长
环境安装 Python 3.7.3 安装
pip install -U robotframework
pip install -U robotframework-requests
pip install -U robotframework-seleniumlibrary
pip install -U robotframework-appiumlibrary
robotframework 3.1.2
robotframework-appiumlibrary 1.5.0.4
robotframework-requests 0.5.0
robotframework-seleniumlibrary 3.3.1易优 学习让我们快速成长
RF - 安装检查 robot --version
rebot --version
robot test.robot
rebot output.xml
python -m robot test.robot
Robot 执行测试脚本
Rebot 生成测试报告易优 学习让我们快速成长
编辑器Eclipse
https://www.eclipse.org/downloads/packages/
Eclipse 需要 Java 环境 ,需要提前安装JRE易优 学习让我们快速成长
Eclipse安装RED
Help -> Install New Software
在 Work With 输入安装地址
http://master.dl.sourceforge.net/project/red-robot
editor/repository
选中 Robot Framework IDE 安装易优 学习让我们快速成长
Eclipse安装RED易优 学习让我们快速成长
Eclipse配置 输入提示 Window -> Preference
RobotFramework ->Editor -> Content Assist -> Auto
activation triggers 输入
.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ
RSTUVWXYZ$@&*:易优 学习让我们快速成长
Eclipse配置 输入提示易优 学习让我们快速成长
HelloWorld *** Test Cases ***
case1
BuiltIn.Log To Console Hello World!
存为文件hello.robot
在CMD中运行 robot hello.robot易优 学习让我们快速成长
领取课件、学习视频
QQ群: 671581582
职业技术咨询
QQ: 3610355156易优 学习让我们快速成长
RF-语法规则 ASCII字符表中的字母,数字,符号
用两个空格分隔
用多个Tab分隔
# 注释易优 学习让我们快速成长
RF-变量 以$开头做为变量标识
${var}
在 *** Test Cases *** 部分
${var} BuiltIn.Convert To Integer 123
${var} BuiltIn.Convert To String 123
在*** Variables *** 部分
${var} 1234
${var} abcdefg易优 学习让我们快速成长
RF-数字变量 *** Variables ***
${var} ${123}
*** Test Cases ***
${var}= BuiltIn.Convert To Integer 123易优 学习让我们快速成长
RF-列表变量 以@开头做为列表标识
@{var}
在 *** Test Cases *** 部分
Create List
@{var} BuiltIn.Create List 1 2 3 4
使用关键字的返回值赋值
在*** Variables *** 部分
@{var} 1 2 3 4易优 学习让我们快速成长
RF-字典变量 以&开头做为字典标识
&{var}
在 *** Test Cases *** 部分
Create List
&{var}= BuiltIn.Create List 1 2 3 4
使用关键字赋值
在*** Variables *** 部分
&{var} 1 2 3 4易优 学习让我们快速成长
RF-嵌套变量 列表嵌套
@{var0} abc efg hij
@{var1} cc @{var0} ee Ff ${var0}
字典嵌套
&{MANY} first=1 second=@{var1}
&{EVEN MORE} data=&{MANY} third=abcde易优 学习让我们快速成长
RF-合并变量 @{var0} abc efg hij
@{var1} 1 bb cc @{var0} ee Ff
&{MANY} first=1 second=@{var1}
&{EVEN MORE} &{MANY} first=override 易优 学习让我们快速成长
RF-变量文件 *** Settings ***
Variables val.py
val.py
v1='abcd'
v2=123
v3=[1,2,3,4]
v4={'name':'tom','age':14}易优 学习让我们快速成长
RF-循环 IN RANGE FOR 变量 IN RANGE start数值 end数值 [step]数值
FOR 变量 IN RANGE start数值 end数值
FOR 变量 IN RANGE end数值易优 学习让我们快速成长
RF-循环 控制 @{ll} BuiltIn.Create List tom jerry ben
FOR ${a} IN @{ll}
BuiltIn.Continue For Loop
BuiltIn.Log To Console ${a}
END 易优 学习让我们快速成长
RF-循环 控制 @{ll} BuiltIn.Create List tom jerry ben
FOR ${a} IN @{ll}
BuiltIn.Continue For Loop If '${a}'=='jerry’
BuiltIn.Exit For Loop If '${a}'=='jerry'
BuiltIn.Log To Console ${a}
END 易优 学习让我们快速成长
RF-循环 IN @{ll} BuiltIn.Create List tom jerry ben
FOR ${a} IN @{ll}
BuiltIn.Log To Console ${a}
END 易优 学习让我们快速成长
RF-循环 IN ENUMERATE @{ll} BuiltIn.Create List a BuiltIn.Convert To Binary item
FOR ${a} ${b} IN ENUMERATE @{ll}
BuiltIn.Log To Console ${a}
BuiltIn.Log To Console ${b}
END易优 学习让我们快速成长
RF-循环 IN ZIP @{ll} BuiltIn.Create List a BuiltIn.Convert To Binary item
@{lm} BuiltIn.Create List abc bde efr
@{ln} BuiltIn.Create List 1234 3456 6789
FOR ${a} ${b} ${c} IN ZIP ${ll} ${lm} ${ln}
BuiltIn.Log To Console ++++++ ${a}
BuiltIn.Log To Console ----- ${b}
BuiltIn.Log To Console ///// ${c}
END易优 学习让我们快速成长
RF-条件 Run Keyword If
BuiltIn.Run Keyword If ${1}==${1} BuiltIn.Log To
Console abcdefdfd
条件满足,执行设定的关键字易优 学习让我们快速成长
RF-多重条件 BuiltIn.Run Keyword If 1==1 and 1==2 my run
... ELSE IF 1==1 or 1>2 BuiltIn.Log To Console or
... ELSE IF not 1>2 BuiltIn.Log To Console not
... ELSE BuiltIn.Log To Console else condition 易优 学习让我们快速成长
RF-条件 Pass Execution If
BuiltIn.Pass Execution If 'jerry'=='jerry' Wait
条件满足,则停止执行后续的代码块,状态设置为Pass,易优 学习让我们快速成长
RF-条件 Set Variable If
${res} BuiltIn.Set Variable If ${1}==${2} abc
BuiltIn.Log To Console ${res}
条件满足,则对变量赋值
${rc} BuiltIn.Set Variable ${20}
${res} BuiltIn.Set Variable If ${rc}>30 3
... ${rc}>20 4
... ${rc}>10 5易优 学习让我们快速成长
RF-关键字驱动Library
加载功能包
*** Settings ***
Library demo.py
*** Test Cases ***
case3
BuiltIn.Import Library demo.py 易优 学习让我们快速成长
关键字驱动 关键字表用于通过将现有关键字组合在一起来创建新的更高
级别关键字
*** Keywords ***
test case init
BuiltIn.Log To Console 测试用例初始化 ${PREV_TEST_NAME}
[Return] 1234易优 学习让我们快速成长
关键字驱动-参数 *** Keywords ***
my user add coin
[Arguments] ${userid}
# BuiltIn.Log To Console ${userid}
${t}= BuiltIn.Convert To Integer ${userid}
${res}= usermode.Usergetinfo ${t}
# BuiltIn.Log To Console ${userid}
BuiltIn.Should Be Equal As Integers ${res} ${t}
*** Test Cases ***
case3
my user add coin 1234易优 学习让我们快速成长
数据驱动 *** Test Cases ***
case4
[Template] my user add coin
123
234
334
421易优 学习让我们快速成长
RF-配置 Template
测试模板将关键字驱动的测试用例转换为数据驱动的测试。
*** Test Cases ***
[Template]
每个用例单独设置或取消设置
*** Settings ***
Test Template
测试套件设置每个用例的正常的易优 学习让我们快速成长
数据驱动-For循环 *** Test Cases ***
case4
[Template] my user add coin
FOR ${uid} IN RANGE 10
${uid}
END易优 学习让我们快速成长
行为驱动 将测试用例编写为非技术人员可以理解的格式。
Given/When/Then/And/But
Given new user
Then add coin
And set user score 易优 学习让我们快速成长
RF-配置 Resource *** Settings ***
Resource resou.resource
resou.resource
*** Settings ***
Documentation An example resource file
*** Variables ***
${username} tom
*** Keywords ***
player open page
[Documentation] Opens browser to login page
BuiltIn.No Operation易优 学习让我们快速成长
RF-配置 [Documentation]
为测试用例设置简单文档。
该文本显示在命令行输出中,以及生成的测试日志和测试报
告。易优 学习让我们快速成长
RF-配置[Setup] 每个用例执行前的初始化设置
*** Test Cases ***
[Setup]
每个用例单独设置或取消设置
*** Settings ***
Suite Setup
Test Setup
测试套件设置每个用例的初始化易优 学习让我们快速成长
RF-配置[Timeout]
用例执行超时时间设置
*** Test Cases ***
[Timeout]
每个用例单独设置或取消设置
*** Settings ***
Test Timeout
测试套件设置每个用例的初始化易优 学习让我们快速成长
RF-配置 [Teardown] 每个用例执行结束后的环境设置
*** Test Cases ***
[Teardown]
每个用例单独设置或取消设置
*** Settings ***
Suite Teardown
Test Teardown
测试套件设置每个用例的动作易优 学习让我们快速成长
RF-配置 [Tags] 每个用例的标签信息,指出用例所属模块
*** Test Cases ***
[Tags]
每个用例单独设置或取消设置
*** Settings ***
Force Tags
Default Tags
测试套件设置每个用例的标签
Set Tags
Remove Tags易优 学习让我们快速成长
RF-配置 Metadata 原数据
*** Settings ***
Metadata username tom
*** Test Cases ***
t1
BuiltIn.Log To Console &{SUITE_METADATA}[username]易优 学习让我们快速成长
RF-测试套件文件夹 文件夹内名称以点(.)或下划线(_)开头的文件和目录将
被忽略。
名称为CVS的目录将被忽略(区分大小写)。
仅处理支持格式的文件。易优 学习让我们快速成长
RF-测试套件文件夹 测试套件初始化文件。
__init__.robot
文件中可以使用的关键字
Documentation, Metadata, Suite Setup, Suite
Teardown
Force Tags
Task Setup, Task Teardown, Task Timeout
Test Setup, Test Teardown, Test Timeout易优 学习让我们快速成长
RF-实战 测试实战易优 学习让我们快速成长
接口测试
什么是接口?
客户端用约定的通讯协议、数据格式、请求地址,向服务端
发出请求。服务端根据业务规则,以约定的数据格式返回数
据。易优 学习让我们快速成长
接口测试-安装 pip install -U robotframework-requests
pip list易优 学习让我们快速成长
接口测试-GET *** Settings ***
Library RequestsLibrary
*** Test Cases ***
Case1
RequestsLibrary.Create Session demo http://192.168.0.106/psm
${resp} RequestsLibrary.Get Request demo getJSON.php易优 学习让我们快速成长
接口测试-返回结果 ${resp.text} 回应的正文
${resp.status_code} 回应的状态码
${resp.headers} 回应的头部信息
${resp.url} 请求的URL
${resp.encoding} 文本编码格式
${resp.request.headers} 请求时的头部信息易优 学习让我们快速成长
接口测试-POST-Content-Type
例如: Content-Type: text/html;
常见的媒体格式类型如下:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式易优 学习让我们快速成长
接口测试-POST-Content-Type 以application开头的媒体格式类型:
application/xhtml+xml :XHTML格式
application/xml : XML数据格式
application/atom+xml :Atom XML聚合格式
application/json : JSON数据格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded :原生form默认的提交方式,
最常见的POST提交数据方式。
multipart/form-data : 需要在表单中进行文件上传时使用该格式易优 学习让我们快速成长
接口测试-POST-Content-Type
工作中最常用的格式:
application/json : JSON数据格式
application/x-www-form-urlencoded :原生form默
认的提交方式,最常见的POST提交数据方式。
multipart/form-data : 需要在表单中进行文件上传时
使用该格式易优 学习让我们快速成长
接口测试-POST数据 &{pdata} BuiltIn.Create Dictionary username=tom password=123456
&{headers} BuiltIn.Create Dictionary content-type=application/x-www-form-urlencoded
RequestsLibrary.Create Session demo http://192.168.0.106/psm
${resp} RequestsLibrary.Post Request demo postFormHtml.php data=${pdata} headers=&{headers} 易优 学习让我们快速成长
接口测试-POST文件 ${pic} OperatingSystem.Get Binary File py.jpg
@{picdata} BuiltIn.Create List py.jpg ${pic} image/jpg
@{file1} BuiltIn.Create List file ${picdata}
@{pdata} BuiltIn.Create List ${file1}
RequestsLibrary.Create Session demo http://192.168.0.106/psm
${resp} RequestsLibrary.Post Request demo postPicHtml.php files=@{pdata} 易优 学习让我们快速成长
接口测试-Cookie ${c1} BuiltIn.Set Variable abc=adfa
&{headersdata} BuiltIn.Create Dictionary Cookie ${c1}
RequestsLibrary.Create Session demo http://192.168.0.106/psm
${resp} RequestsLibrary.Get Request demo getCookieJSON.php headers=&{headersdata} 易优 学习让我们快速成长
接口测试-HTTPS *** Settings ***
Library RequestsLibrary
Library urllib3
*** Test Cases ***
test
urllib3.Disable Warnings
RequestsLibrary.Create Session book https://www.vodtw.com/
${resp} RequestsLibrary.Get Request book book/45786/index.aspx易优 学习让我们快速成长
接口测试-HTTPS SSL
pip install certifi
import certifi
print(certifi.where())
输出
C:\Python37\lib\site-packages\certifi\cacert.pem、
拷贝证书文件cacert.pem到当前目录易优 学习让我们快速成长
接口测试-HTTPS *** Settings ***
Library RequestsLibrary
Library urllib3
*** Test Cases ***
test
RequestsLibrary.Create Session book https://www.vodtw.com/ verify=cacert.pem
${resp} RequestsLibrary.Get Request book book/45786/index.aspx易优 学习让我们快速成长
接口测试-项目实战 21点纸牌游戏易优 学习让我们快速成长
图形验证码
posted @ 2020-10-09 00:37  caowenyue1996  阅读(149)  评论(0)    收藏  举报