上上佳食品 网站建设,游戏源码,高州网站建设,wordpress中文名注册1. Robot FrameWork介绍
1.1 介绍
Robot Framework是用于验收测试和回归测试的通用测试自动化框架。它使用易于理解的表格数据语法#xff0c;非常友好的实现了关键字驱动和数据驱动模式。它的测试功能可以通过使用Python或Java实现的测试库进行扩展#xff0c;用户可以使用…1. Robot FrameWork介绍
1.1 介绍
Robot Framework是用于验收测试和回归测试的通用测试自动化框架。它使用易于理解的表格数据语法非常友好的实现了关键字驱动和数据驱动模式。它的测试功能可以通过使用Python或Java实现的测试库进行扩展用户可以使用与创建测试用例相同的语法从现有的关键字创建新的更高级别的关键字。
1.2 安装
在python环境下安装robotframework非常的简单使用如下的命令即可 pip install robotframework 在python路径的Scripts文件夹下如C:\Python35\Scripts可以查看到如下三个程序这三个程序都是robotframework的执行程序同时也说明安装成功 image
1.3 优势
1. 与python语言可以很好的兼容降低框架设计和用例编写的难度。 2. 支持关键字驱动和数据驱动模式对两种设计模式体现的非常明显。 3. 内置库丰富提供很多控制和操作的方法。 4. 扩展库AppiumLibrary、HTTPlibrary (Requests)、Selenium2Library让robotframework可以在很多测试方法完成工作 5. 很多工具有rf插件提供API接口提供持续集成能力
1.4 运行测试和测试报告
1、写一个小的的demo来演示robotframework是如何工作的。robotframework编写的是.txt文件新建一个文件testsuite1.txt在文件中写入如下语句 image
2、打开cmd命令行在命令行中输入如下语句回车 image
3、输出3个结果文件 report.html 测试报告 log.html 日志文件 output.xml 详细的输出信息
2. Robot FrameWork基本语法
2.1. 文件结构
项目—套件—用例—关键字 内部基本模块 与配置相关
*** Settings *** 与配置相关
Documentation 测试的文档说明
Library 测试导入的库
Suite Setup 执行测试套件前的关键字
Suite Teardown 执行测试套件后的关键字
Test Setup 执行测试用例前的关键字
Test Teardown 执行测试用例后的关键字
Test Tmplate 测试模板--数据驱动模式
针对相同的工作流执行不同的输入数据
使用一个高级的用户关键字定义工作流然后使用不同的输入和输出数据
测试相同的场景每个测试中重复使用同一个关键字
Resourse 导入的外部资源文件---主要是关键字 测试套件中的公共变量
*** Variables ***
${变量名} 变量值 用例主体 *** Test Case ***用例名[Documentation][Tags]标签[Setup][Teardown]关键字 参数 2.2. 变量
参考文档https://blog.csdn.net/huapingqi/article/details/81140996
比起Python控制变量RF会很方便所以我们必须熟悉它使用它 如果对比Python来学的话会事半功倍 变量的种类 变量名包含变量种类标识符$, , , %大括号{,}和变量名。大括号是强制使用的。 Robot Framework 中的变量和关键字相似是大小写敏感但对空格和下划线是忽略的。
1. 标量Scalar 标量是指${},这个有点像shell中的变量引用
赋值${a} Set variable 5
引用就简单的${a}就可以引用
如Log ${a} DemoSuite.txt
*** Test Cases ***
case1[Documentation] 标量Scalar赋值和引用[Tags] Scalar#赋值${a} Set variable 5#引用log ${a}
case2[Documentation] 标量Scalar作为返回1个值[Tags] Scalar#赋值${a} Set variable HelloWorld${ret} Return One Value ${a}log ${ret}case3[Documentation] 标量Scalar作为返回多个值[Tags] Scalar${a} ${b} ${c} Return Three Values{list} Return Three Values${scalar} {rest} Return Three Valueslog many ${a} ${b} ${c}log many {list}log ${scalar}log many {rest}*** Keywords ***
Return One Value[Arguments] ${arg}${value} Set variable ${arg}${arg}[Return] ${value}Return Three Values[Return] foo bar zap 2. 列表List 用{}表示在python中列表赋值方式[a, b]
赋值
{List1} Create List user name password
{L2} 1 2 3 4
{L3} Set variable a b 取值及应用 TestSuite2.txt
*** Test Cases ***
case1[Documentation] 标量list赋值和引用[Tags] list#赋值{L1} Create List user name password{L2} Set variable a b c#单个元素的取用log {L1}[0]log {L1}[1]log {L1}[2]#在循环中使用:FOR ${x} IN {L2}\ log ${x} 3、字典Dict 和Python里的定义一致 keyvalue格式 TestSuite3.txt
*** Test Cases ***
case1[Documentation] 标量dict赋值和引用[Tags] list#赋值{D1} Create Dictionary studentTom age22#单个元素的取用log {D1}[student]log {D1}[age] 4. 创建变量表 Variables.txt文件
*** Variables ***
${a} hello world
{List1} one two three four
{D1} userusername passwordpassword 可以用
Resource ../../../../config_file/Data.txt 导入到工程中 5. 全局变量 DemoSuite4.txt
*** Test Cases ***
case1[Documentation] 设置全局变量[Tags] Set Suite Variable#赋值${code} Set variable 100Set Suite Variable ${code}
case2[Documentation] 使用全局变量[Tags] Set Suite Variable#赋值log ${code} 在case1中创建的变量在case2中使用
2.3. 基础语法
1. 流程控制语句
*** Test Cases ***
case1[Documentation] 流程控制语句[Tags]${smlie} Set variable 999run keyword if ${smlie} 999 log HelloWorld 2. 循环语句
*** Test Cases ***
case1[Documentation] 循环语句[Tags]:FOR ${index} IN RANGE 5\ log ${index} 2.4. 扩展库
Http Requests selenium2Library appium
2.5. 开发用户自定义关键字
利用Robot Framework编写测试用例往往需要开发自己的关键字有的关键字需要通过自己编写python代码来实现。这在rf中就需要自己定义python库。这个过程其实不复杂本文来介绍下。 1. 在python安装目录下的 Lib\site-packages 目录下 新建一个目录目录名就是库名如 NewLibrary 2. 在新建的NewLibrary目录下创建一个python文件任何合法的文件名即可扩展名为py。 如myclass.py其内容如下
class MyClass(object):def __init__(self):passdef printMsg(self,msg):print hello msg 上面代码定义了一个python类其中除构造方法 init 外还定义了一个printMsg方法该方法其实就是rf中的关键字可以直接在rf中使用。下面我们介绍。 3. 在新建的NewLibrary目录下创建 init.py 文件文件名必须固定这样。该文件的功能就是把关键字类暴露出来让rf能知道。init.py 其内容如下
from myclass import MyClass
class NewLibrary(MyClass):ROBOT_LIBRARY_SCOPE GLOBAL 4. 通过前面三个步骤一个最简单的自定义的NewLibrary库就创建好了在rf工具中就可以使用了 1先要导入 NewLibrary 库 2使用关键字printMsg。需要说明的是在rf中引用时既可以写成 printMsg也可写成 print msg。一般习惯用空格把单词分开。因为rf关键字不区分大小写。
*** Settings ***
Library NewLibrary
*** Test Cases ***
successsdprint msg godprintMsg ssprintmsg yy 5、增加新的关键字 增加新的关键字很简单只需在MyClass类中增加新的方法即可。如
class MyClass(object):def __init__(self):passdef printMsg(self,msg):print hello msgdef join_info(self,a,b):print ab 这里定义了 join_info方法。在rf中使用时可以写成 join info 用空格分开。
上面介绍了最简单的自定义模块虽然简单但实际可以满足大部分自己开发的需求了。
3. 接口测试和用例设计
参考资料https://blog.csdn.net/weixin_42273775/article/details/81868184 image
对于如何进行接口测试可以参考上面的资料本文的下面部分开始讨论如何使用robotframework来完成接口的功能测试也就是图中标红色的部分 某一个接口的用例编写如下 image
将用例分成3个等级Level1、Level2、Level3Level3优先级最高 Level1最能反应该接口功能的测试用例 Level2参数的正常校验和异常校验 Level3字段是否必传
4. Pycharm安装Robot FrameWork插件
我们已经知道编写roborframework脚本其实就是编写.txt文件那么有了功能强大的编辑器的辅助会让工作事半功倍下面讲述如何在Pycharm安装Robot FrameWork插件。 1. 下载IntelliBot 2. 打开PyCharm单击 左上角file→settings →Plugins → 【install plugin from dink】 image
3. 配置文件类型 点击File点击setting点击editor点击file types,点击右侧的号配置一下文件类型即可 image
4. 至此已经可以在pycharm中编辑脚本了但是还不能进行脚本的执行接下来配置如何执行测试用例 点击File点击setting点击Tools点击External tools配置执行测试套件可以执行一个测试套件内的所有case。
Robot Run TestSuite
-d ../../../../report $FileName$
$FileDir$ image
5. 添加执行单个用例的配置
Robot Run SingleTestCase
-d ../../../../report -t *$SelectedText$* ./ $FileName$
$FileDir$ image
6. 执行实例 image
5. rob框架介绍
下面开始介绍具体的功能 github 地址https://github.com/shengtangcike/robframe image
5.1. 辅助工具生成测试用例
在用例设计阶段建议在excel文件中设计测试用例尤其是复杂的情况。excel文档结构如下 image
使用bin目录下面generatecase.py文件中的Generatecase类将excel中设计的case生成到.txt 文件中。txt文件才是我们真正需要的文件生成的文件如下 image
5.2. 环境切换
目前编写的rob_frame框架需要兼容测试环境和自动化环境自动化环境的脚本执行每日定时构建而测试环境的脚本在代码构建完成之后执行达到一个冒烟测试的效果。 1. 使用config_file目录下的env.ini和Data.txt文件来控制环境切换 2. 在使用python rob.py –e test/auto XXXXX执行时会根据传入的test/auto值重置env.ini和Data.txt文件来达到控制环境切换的目的。
5.3. 用户关键字lib
将lib文件放到PYTHONPATH中目的是用户自定义关键字放在工程目录文件lib中同时要pybot.bat能够在任何位置找到这些.py文件也就是说把这些.py文件添加到python的默认路径下 方法在site-packages添加一个路径文件如mypkpath.pth必须以.pth为后缀写上你要加入的模块文件所在的目录名称就是了。 lib文件中包含了目前所有的关键字
5.4. 扩展断言
对于一些接口返回信息的检查比较复杂光靠是否有返回信息已经不足以判断例如交易流水需要检查倒叙排序还有是否为同一类型这种情况下可以通过编写python脚本实现断言控制。 ex.在HttpApiLib.py这个文件中编写关键字对self.r.text进行处理...待完善
5.5. 执行报错的脚本
随着不断的持续集成编写的测试用例不断的增加这种情况下执行一轮测试用例会需要大量的时间而后考虑到能否将报错的脚本单独执行呢 具体实现是将报告中的xml中的信息读取出来获取是那些txt文件报错然后可以按照下面的方法执行。。。下面会说到 在用例执行完成之后可以读取xml文件从中筛选出报错的txt文件然后按照图中的方法执行所有的报错的txt文件来做到将错误的txt文件重新执行一遍而不需要全部执行
下面的ex说明了方法的可行性 image
6. 配置Jenkins
6.1. linux下安装部署Jenkins
1、 安装JDK 2、 安装Tomcat 解压tar -zxvf apache-tomcat-8.0.53.tar.gz 放在usr/local/tomcat下所以要创建tomcat文件夹并将解压文件移动到tomcat下
mkdir /usr/local/tomcat
mv apache-tomcat-8.0.53 /usr/local/tomcat/进入tomcat安装bin目录并启动
cd /usr/local/tomcat/apache-tomcat-8.0.53/bin/启动 ./startup.sh 关闭 ./shutdown.sh 成功启动后浏览器输入http://192.168.1.31:8090/ 修改端口 查看tomcat是否启动
ps -ef |grep tomcat假设tomcat所在目录为/usr/local/apache-tomcat/ 1、打开tomcat配置文件 #vi /usr/local/apache-tomcat/conf/server.xml 2、打开Tomcat配置文件之后按 /8080 快速检索 3、修改端口按 i 进行将8080 修改为 80 4、按:wq 保存并退出 5、 重启tomcat 3、安装Jenkins 首次安装启动Jenkins jenkins初次登陆卡在SetupWizard界面 赋777权限给jenkins,并用谷歌浏览器打开本人亲测ok admin 123456
6.2. 安装Jenkins的robot framework插件
1、进入jenkins主页面系统管理-管理插件-可选插件在过滤栏输入“robot”,选择安装如下图的插件【Robot Framework plugin】 image
2、构建后的操作选择“Publish Robot Framework test results”
*Directory of Robot output 填一个本地路径要根据你的output文件放在哪里可以不填
*Thresholds for build result 测试用例执行成功率和通过率的设置如80%和100% image image
6.3. 执行构建
1、qtw_interfacetest_autoenv_NoSendEmail
1测试环境自动化环境 2执行全部用例Level1/Level2/Level3 3不发送邮件
python /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/bin/rob.py -e auto -p pybot -d /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/report -f /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/qutouwang/App 2、qtw_interfacetest_testenv_NoSendEmail 1测试环境qtw测试环境 2在去投网2.0测试//qtw_invest_api_test执行构建机构后进行该构建 3sleep 600s延时构建等待系统启动 4执行Level1/Level2/Level3全部用例 5不发送邮件
sleep 300python /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/bin/rob.py -e test -p pybot -d /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/report -f /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/qutouwang/App 3、qtw_interfacetest_autoenv_SendEmail 1测试环境自动化环境 2定时构建每日执行 3执行用例等级为Level1的用例
python /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/bin/rob.py -e auto -m YES -p pybot -d /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/report -f /root/dengshaoke/lineDownlineUP/hyxd/rob_frame/qutouwang/App 4、qtw_interfacetest_error_case
1执行上次构建报错的case
6.4. 即时构建
在构建完成【去投网2.0测试】下面的qtw-invest-api-test任务后会即时构建qtw_interfacetest_testenv_NoSendEmail达到冒烟测试的目的有问题及时反馈出来。
java -jar jenkins-cli.jar -s http://192.168.1.31:8090/jenkins/ build qtw_interfacetest_testenv_NoSendEmail --username admin --password 123456 参考资料https://www.cnblogs.com/honeybee/p/6525902.html
1、下载jenkins-cli
jenkins--系统管理--Jenkins CLI如下图 image
2、命令行执行
[http://192.168.1.31:8090/jenkins/](https://links.jianshu.com/go?tohttp%3A%2F%2F192.168.1.31%3A8090%2Fjenkins%2F)查看jenkins-cli的帮助
java -jar jenkins-cli.jar -s [http://192.168.1.31:8090/jenkins/](https://links.jianshu.com/go?tohttp%3A%2F%2F192.168.1.31%3A8090%2Fjenkins%2F) help查看job列表
java -jar jenkins-cli.jar -s [http://192.168.1.31:8090/jenkins/](https://links.jianshu.com/go?tohttp%3A%2F%2F192.168.1.31%3A8090%2Fjenkins%2F) list-jobs6.5. 其他遇到的问题
1、Jenkins打不开robotframework测试报告报Opening Robot Framework report failed错误
参考资料https://blog.csdn.net/huashao0602/article/details/53925492 image
2、Jenkins开放用户注册和匿名查看功能可以不登陆而查看登录Jenkins
https://blog.csdn.net/boonya/article/details/77362603
3、jenkins的工作目录
cd /root/.jenkinscd workspacecd job