【robotframework】pycharm+robotframe(转)
【robotframework】pycharm+robotframe
一、环境搭建
二、框架介绍
1.settings
- 是这个测试套件的全局配置表
- 说明这个测试套件要使用的测试库、资源文件
- 测试套件的环境初始化(setup)和清除(teardown)
- 该套件内的标签等
2.Variables
定义本测试套件的全局变量
3.Keywords
定义本测试套件的关键字(支持返回值[Return])
4.Test Cases
定义本测试套件的测试用例

*** Settings ***
Library Selenium2Library
Resource xxxx
Suite Setup xxxxx
Suite Teardown
Test Setup
Test Teardown
Default Tags
Force Tags
Test Template
*** Variables ***
${v1} 1
@{list} 1,2,3 *** Keywords ***
Open page
open browser www.baidu.com *** Test Cases ***
case1
xxx
case2
xxx

测试用例表语法
- 测试用例表里面的每个用例大概可以分为:
- 配置部分
- 用例部分
- 用例配置部分
[Documentation]该用例的文字说明[Tags]该用例的标签[Setup],[Teardown]该用例的初始化和清除操作[Template]声明该用例是模板关键字驱动的,本用例只包含测试数据[Timeout]设置用例超时时间
三、关键字
1.log打印
log
log to console 打印到控制台
2.定义变量
1)${variable name} value (在***Variables***中定义)
${variable name} Set variable value (在***Test Cases***中定义)
2)定义列表
@{list name} value1 value2...... (在***Variables***中定义)
@{list name} Create List value1 value2...... (在***Test Cases***中定义)
3.获取时间
在 Robot Framework 中也提供操作时间的关键字。get time
*** Test Cases ***
case5
${t} get time
log ${t}
sleep 5 #设置休眠时间
4.if语句
通过“run keyword if”关键字可以编写 if 分支语句*** Test Cases ***case2
${a} Set variable 59
run keyword if ${a} > 80 log youxiu
... ELSE IF ${a} > 60 log bujige
... ELSE log bujige
注意:分支语句前加“...”
5.for循环
在 Robot Framework 中编写循环通过“:for”

*** Test Cases ***
case3
:FOR ${i} IN RANGE 0 10 2 #分别为起始值,结束之和步长,当起始值和结束之为空时,二者默认为0和1
\ log ${i}
\ log end
\ Exit For Loop if '${i}' == '4' #跳出循环
case4
@{list} Create List a b c
:FOR ${i} IN @{list}
\ log ${i}
\ log end

注意::FOR ,其中的:用于与一般关键字做区分,对于循环结构体内的每一行,使用 \ 作为改行的行首关键字
6.Evaluate
通过它可以使用 Python 语言中所提供的方法。
*** Test Cases ***
case6
${d} Evaluate random.randint(0,100) random #变量 关键字 调用python方法 方法所在库
log ${d} ${path}
7.catenate

8.collection库

*** Settings ***
Library Collections
*** Test Cases ***
case8
${dict} Create Dictionary a 1 b 2 c 3 #创建字典
${items} Get Dictionary Items ${dict} #获取字典中的key和value
log ${items}
${key} Get Dictionary Keys ${dict} #获取字典中的key
log ${key}
${value} Get Dictionary Values ${dict} #获取字典中的value
log ${value}
${v} Get From Dictionary ${dict} b #获取字典中key所对应的value
log ${v}

9、资源文件
- 在测试套件文件中定义关键字的问题
- 只能在本测试套件中有效,无法共享给其他测试套件使用
- 使用资源文件
- 资源文件其实就是RF层面的库文件
- 里面可以包含用来共享的变量和关键字
- 资源文件的格式基本也和测试套件文件格式类似(只是不含测试用例)
- 资源文件的引用
Resource
Resource 后可以跟绝对路径也可以用相对路径(相对于当前文件所在的目录),但文件名必须要带后缀。
如果同级目录下没有,就会去path路径下寻找。
*** Settings ***
Library SeleniumLibrary
Resource rc.robot
10.导入扩展库
1).导入python库-变量
- 将变量或关键字封装到python文件中
- RF***settings***中生命变量文件(以下例子,两文件在同一路径下)
python文件引用时可以使用绝对路径也可以使用相对路径,建议使用相对路径
使用相对路径的时候,RF搜索规则和资源文件搜索规则一样:先搜索当前目录下该python文件是否存在,没有的话则根据path路径查找


2).python模块作为测试库
- 将变量或关键字封装到python文件中(可封装成类或直接封装为方法)
- RF***settings***中生命变量文件(以下例子,两文件在同一路径下)


注意:当文件名和类名不一样时,如文件名为a,类名为b,方法为c(同一路径下)
***settings***
library a.b
***test case***
${a} a.b.c
11.注释
使用关键字comment或#
四、selenium2Library中的关键字

*** Test Cases ***
case9
Open Browser https://www.baidu.com/ Firefox #启动浏览器,浏览器为空时,默认启动firefox
# go to https://mail.qq.com/ #跳转到某个网页
# go back #返回
# Maximize Browser Window #窗口最大话
${width} ${height} Get Window size #获取窗口大小
log ${width} ${height}
${title} get title #获取窗口title信息
log ${title}
${attribute} get element attribute id=kw name #获取元素属性
log ${attribute} #添加cookie
add cookie mark dhs
${all_cookies} get cookies #获取所有cookies
log ${all_cookies}
${cookie} get cookie BAIDUID #根据key_name获取cookie值
log ${cookie}
${result} should contain ${title} 百度一下,你就知道 #验证是否包含
log ${result}
# delete cookie mark #根据key_name删除cookie值
# delete all cookies
# get text id= #获取元素文本信息
# input text id=kw robotframework #文本输入关键字 定位方式 输入的文本
# input text name=wd robotframework
# input text Xpath = //*[@id='kw'] robotframework
input text css = #kw robotframework
wait until page contains element css = #kw 5 can't find element #关键字 元素 等待时长 错误提示 类似于selenium中的显示等待
# click element id= #点击元素
click button id=su #点击按钮
# select from list by value #下拉框选择
# execute javascript js语句 #执行js语句
# Close Browser #关闭当前浏览器
# Close All Browser #关闭所有浏览器
case10
open browser https://mail.163.com/
sleep 2
select frame xpath= #进入表单
unselect frame #退出表单

- Should Be Equal
- Should Be ...
- Should Be True
- 字符串时 should be true'${str}'=='str'
- 数字 should be true ${value}==value
convert to interger 转换为整数
convert to Number 转换为浮点数
${33} 直接传数字
五、各个级别的set up
suite setup/teardown:在suit套件中只执行一次
test setup/teardown:每个case执行前都会执行一次
[setup/teardown]:属于case级别,每个case执行前都会执行一次,当同时存在test setup/teardown和[setup/teardown]时,执行[setup/teardown];

六、关键字驱动示例

*** Settings ***
Library Selenium2Library Test Setup open browser ${url}
Test Teardown close browser *** Variables ***
${url} http://xxxxx
${correct_acc} admin
${correct_pwd} admin *** Keywords ***
login_failed
[Arguments] ${account} ${password}
# open browser ${url}
input text id=id_username ${account}
input text id=id_password ${password}
click button id=login_submit
sleep 2
${result} get text xpath=.//*[@id='content']/div
should contain ${result} Invalid Username or Password, please try again.
*** Test Cases ***
#casename username pwd
case1:pwd_error
[Documentation] passworderror
login_failed ${correct_acc} 123
case2:acc_error
login_failed 123 ${correct_pwd}
case3:pwd_acc_error
login_failed 123 123
case4:pwd_emty
login_failed ${correct_acc} ${empty}
case5:acc_emty
login_failed ${empty} ${correct_pwd}
case6:acc__pwd_emty
login_failed ${empty} ${empty}

【robotframework】pycharm+robotframe(转)的更多相关文章
- 【robotframework】pycharm+robotframe
一.环境搭建 二.框架介绍 1.settings 是这个测试套件的全局配置表 说明这个测试套件要使用的测试库.资源文件 测试套件的环境初始化(setup)和清除(teardown) 该套件内的标签等 ...
- Python3+RobotFramework+pycharm环境搭建
我的环境为 python3.6.5+pycharm 2019.1.3+robotframework3.1.2 1.安装python3.x 略 之后在cmd下执行:pip install robot ...
- python之robotframework+pycharm测试框架
一.robotframework简介 Robot Framework是一款python编写的功能自动化测试框架.具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式 ...
- Robotframework(3):使用pycharm编写和运行RF脚本
转自:http://blog.csdn.net/ccggaag/article/details/77529724 我们在使用Robotframework时,经常编写脚本的人或许会不习惯,不过没关系!我 ...
- robotframework框架 - 在Pycharm当中编写RobotFramework测试用例
众所周知,pycharm是个写python极好用的编辑器.也可以装很多的插件来完成各种骚操作. 某一天,心血来潮在pycharm的插件库里,搜索了一下robot,恩,发现有支持robotframewo ...
- python3.6+pycharm+robotframework 环境搭建
参考文档:https://www.cnblogs.com/chenyuebai/p/8359577.html, https://www.cnblogs.com/jiyanjiao-702521/p/9 ...
- 第一天:学会如何在pycharm上编写第一条robotframework用例
---恢复内容开始--- 1.python环境的安装和依赖包的下载
- python3+Robot Framework+PyCharm环境部署及执行脚本
Robot Framework是一个非常优秀的开源关键字驱动自动化测试框架,目前已经支持python2和python3,但是GUI界面RIDE只支持python2,但是python的未来是python ...
- Allure对单测结果以及robotframework结果的处理
Allure对单测结果以及robotframework结果的处理 Allure只能针对pytest的单测结果生成相应的报告: 如果需要对unittest的测试框架结果进行展示,可以使用pytest执行 ...
随机推荐
- Pandas | 03 DataFrame 数据帧
数据帧(DataFrame)是二维数据结构,即数据以行和列的表格方式排列. 数据帧(DataFrame)的功能特点: 潜在的列是不同的类型 大小可变 标记轴(行和列) 可以对行和列执行算术运算 结构体 ...
- ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于GPRS模块(Air202,SIM800)AT指令TCP透传方式,MQTT通信控制升级
实现功能概要 这节和上一节的功能一样(只不过上节是利用Wi-Fi模块,这节是利用GPRS模块) 用户程序里面加入MQTT通信,执行用户程序的时候, 通过接收MQTT的升级命令实现升级. 凡是可以实现M ...
- postman使用--Monitor
前戏 现在我们已经能完成接口的批量执行,添加断言,数据驱动,设置变量等等方法.但是有一天,用户反应说我们的网站访问不了了.这时候,那帮程序猿查日志的查日志,看数据库的看数据库,找到原因在发布到线上已经 ...
- 对最长公共子序列(LCS)等一系列DP问题的研究
LIS问题: 设\(f[i]\)为以\(a[i]\)结尾的最长上升子序列长度,有: \[f[i]=f[j]+1(j<i&&a[j]<a[i])\] 可以用树状数组优化至\( ...
- haproxy 配置文件详解 之 综述
HAProxy 配置文件根据功能和用途,主要有5 个部分组成,但有些部分并不是必须的,可以根据需要选择相应的部分进行配置. 1.global 部分 用来设定全局配置参数,属于进程级的配置,通常和操作系 ...
- [原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案)
0x001 简介 当IPC或WMI无法访问域内机器时,可通过脚本上控. 我们可以在个人机的开机注销重启脚本里配置持久化. 域环境下同样也有开机脚本,但得在在域控机器配置 可以使用BAT\VBS等脚本, ...
- URL中出现了%E2%80%8E(Zero-Width Space)
下面两个url地址,看起来是一样的,但是粘贴到记事本里会发现一个多出了很长的空格 url: '/secure/Dishes/GetList', url: '/secure/Dishes/GetLis ...
- Effective.Java第12-22条
12. 始终重写toString()方法 如果不重写toString()方法,打印的时候是 类名+@+哈希码的无符号十六进制.我们查看 Object的toString()方法如下: public S ...
- Scala 数组操作之Array、ArrayBuffer以及遍历数组
ArrayBuffer 在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer. // 如果不想每次都使用全限定名,则可以预先导入Array ...
- Dart面向对象编程(一)
基本内容概述: 类与对象: 计算属性: void main(){ var rect = new Rectangle(); rect.width = 20; rect.height = 10; prin ...