RobotFramework
RobotFramework
https://github.com/robotframework/robotframework
1. 简介
- 数据驱动:excel、yaml里面
- 关键字驱动:将项目中一些业务逻辑或基本的操作封装成一个一个的关键字,然后调用不同的关键字或关键字的组合实现不同的业务逻辑
特点:
- 编写用例方便,可以以 robot,txt,csv,html 等格式
- 自动生成 html 格式的报告
- 自带很多类库,支持很多的扩展库
- 可以根据业务逻辑自定义关键字(登录、下订单、评论)
- 支持非 GUI 方式运行,还可以和我们的 jenkins 持续集成
2. 搭建 RF 环境
- 安装 RF框架
pip install robotframework==3.1
- 安装可视化工具Ride
3. RF类库和扩展库
- 标准库(D:\Python\Python36\Lib\site-packages\robot\libraries)
- Bultin(测试库)
- Collections(集合库)
- DateTime(时间库)
- Screenshot(截屏库)
- 扩展库(通过 pip 命令额外安装的库存)
web自动化测试:selenium
python3 -m pip install robotframework-seleniumlibrary
接口自动化测试:requests
python3 -m pip install robotframework-requests
app自动化测试:appium
python3 -m pip install robotframework-appiumlibrary
4. RF基本使用
按下F5:查询相应的关键字
在测试套中导入 libaray,实现得到字典中所有的 key
截图
查看报告
5. 使用关键字
常规关键字
复杂关键字
截图:
6.Web自动化测试
python3 -m pip install robotframework-seleniumlibrary==4.0.0a1
在 RF 中引入
浏览器相关操作
元素定位
8种元素定位方式:
- id
- name
- link_text
- partial_link_text
- xpath
- css
- class_name
- tag_name
鼠标和键盘关键字
断言的关键字【判断结果是否执行成功】
元素等待关键字
框架 iframe 处理
下拉框
获得一组元素
切换窗口
7. 现在的线性脚本存在的问题
- 不易维护
- 没有分层封装的思想
- 页面元素层【资源文件】
- 业务逻辑层【资源文件】
- 测试用例层【测试套件】(数据驱动)
- 数据是没有独立的
分层的目的:增加复用性,可维护性,便于管理
分为3层
新建用户自定义关键字
每一个关键字相当于一个元素
导入上面的资源文件
看到导入成功
参数 argument
=============================================
在测试套件中进行使用
开始测试
方式1
方式2【使用模板】
新增公共变量
8. Jenkings 以及持续集成简介【Java项目】管理员 ACLQ
jenkins 是一个可以扩展的持续集成和持续部署的平台 ===> 它也只是一个平台,主要的主要都是插件
腾讯课堂:平台
码尚教育:运行插件
持续集成:把整个软件生命周期中的所有工作都实现自动化,以流水线的方式去完成软件的研发
- 开发:编写代码并且进行代码管理,编译打包提供给测试人员测试
- 测试:部署测试环境,进行测试,持续集成自动化测试
- 运维:部署线上环境
安装
JDK 17 安装
https://www.jianshu.com/p/01c57102ae03
修改 Jenkings的 Home directory
修改安装目录下的 jenkins.xml 文件
默认为:
<env name="JENKINS_HOME" value="%ProgramData%\Jenkins\.jenkins"/>
插件下载
Jenkins Location(localhost无效,改为:127.0.0.1)
Jenkins(创建与使用job【项目】应用)
- 新建 job
- 自定义工作空间:指定项目位置
- 构建选择执行 windows 批处理脚本
运行工作目录下的文件:
- 执行系统的 Groovy 脚本(固定写法)
因为在 Jenkins 中,html代码经常无法显示,会有样式丢失的情况
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","“)
集成 Allure 报告
- 安装 Allure 插件
- 在【全局工具配置】,配置 Allure
- 在 job 配置 Allure 报告
集成企业微信
- 创建企业微群管理机器人,获得 webhook
- 安装 Qy Wechat...
集成电子邮件通知
- 安装插件:Email
- 新建邮箱 163
- 设置打开 POP3(接收) 和 SMTP(发送)
- 进入 job,添加构建后操作,配置邮件通知
9. 面试题
接口自动化的 Case?覆盖率?执行时间?
接口自动化测试怎么做?web自动化测试怎么做?
什么是 POM 模式?为什么使用它?
数据驱动和关键字驱动
Web自动化测试用例如何设计
自动化测试碰到的异常?用到了哪些 Python 库?
异常:
Python库:
- webdriver
- webdriverWait
- os
- xird
- xlwt
- time
- unitest
- logging
- htmltestrunner
- json
- CSV
- jsonpath
- yaml
- request
- pytest
- allure
- pymysql
- re
自动化测试过程中你遇到了哪些问题,是如何解决的?
自动化测试用的什么框架?
自动化哪三类等待?
- 线程等待: 建议少用
- Thread.sleep()
- 隐式等待: 全局等待
- 通过设置浏览器驱动的全局等待时间来实现的。当查找元素时,如果元素没有立即出现,驱动会等待指定的时间,然后再继续执行。
- 这种方式会在查找元素时自动等待一段时间,如果元素在指定时间内出现了,就会立即执行后续操作。
- 如果超过了指定时间,就会抛出找不到元素的异常。
- 显示等待: 一般会和一个匿名函数一起使用一般不结合定位元素的封装
- 显式等待是通过在代码中设置等待条件来实现的。在使用显式等待时,可以指定等待的最长时间和轮询间隔,并设置等待的条件。
- 驱动会在等待的过程中不断地检查条件是否满足,如果满足就会立即执行后续操作,如果超过了指定的最长时间仍然不满足条件,就会抛出超时异常。
脚本执行时候,如何实现当前元素高亮显示
定位元素:然后在 style中,加入 border:3px res solid 这个样式
在现有的基础上给你一个新的业务线如何左接口自动化?
- 熟悉业务
- 熟悉已经搭建好的自动化框架
- 加入符合自动化的测试用例即可
- 提出对框架的改进建议