RobotFramework

RobotFramework

https://github.com/robotframework/robotframework

1. 简介

  • 数据驱动:excel、yaml里面
  • 关键字驱动:将项目中一些业务逻辑或基本的操作封装成一个一个的关键字,然后调用不同的关键字或关键字的组合实现不同的业务逻辑
    特点:
  1. 编写用例方便,可以以 robot,txt,csv,html 等格式
  2. 自动生成 html 格式的报告
  3. 自带很多类库,支持很多的扩展库
  4. 可以根据业务逻辑自定义关键字(登录、下订单、评论)
  5. 支持非 GUI 方式运行,还可以和我们的 jenkins 持续集成

2. 搭建 RF 环境

  1. 安装 RF框架
pip install robotframework==3.1
  1. 安装可视化工具Ride

3. RF类库和扩展库

  1. 标准库(D:\Python\Python36\Lib\site-packages\robot\libraries)
  • Bultin(测试库)
  • Collections(集合库)
  • DateTime(时间库)
  • Screenshot(截屏库)
  1. 扩展库(通过 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. 现在的线性脚本存在的问题

  1. 不易维护
  2. 没有分层封装的思想
  • 页面元素层【资源文件】
  • 业务逻辑层【资源文件】
  • 测试用例层【测试套件】(数据驱动)
  1. 数据是没有独立的

分层的目的:增加复用性,可维护性,便于管理


分为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【项目】应用)

  1. 新建 job
  2. 自定义工作空间:指定项目位置

  3. 构建选择执行 windows 批处理脚本

    运行工作目录下的文件:
  4. 执行系统的 Groovy 脚本(固定写法)
    因为在 Jenkins 中,html代码经常无法显示,会有样式丢失的情况
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","“)

集成 Allure 报告

  1. 安装 Allure 插件
  2. 在【全局工具配置】,配置 Allure
  3. 在 job 配置 Allure 报告

集成企业微信

  1. 创建企业微群管理机器人,获得 webhook
  2. 安装 Qy Wechat...

集成电子邮件通知

  1. 安装插件:Email
  2. 新建邮箱 163
  3. 设置打开 POP3(接收) 和 SMTP(发送)
  4. 进入 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

自动化测试过程中你遇到了哪些问题,是如何解决的?

自动化测试用的什么框架?

自动化哪三类等待?

  1. 线程等待: 建议少用
  • Thread.sleep()
  1. 隐式等待: 全局等待
  • 通过设置浏览器驱动的全局等待时间来实现的。当查找元素时,如果元素没有立即出现,驱动会等待指定的时间,然后再继续执行。
  • 这种方式会在查找元素时自动等待一段时间,如果元素在指定时间内出现了,就会立即执行后续操作。
  • 如果超过了指定时间,就会抛出找不到元素的异常。
  1. 显示等待: 一般会和一个匿名函数一起使用一般不结合定位元素的封装
  • 显式等待是通过在代码中设置等待条件来实现的。在使用显式等待时,可以指定等待的最长时间和轮询间隔,并设置等待的条件。
  • 驱动会在等待的过程中不断地检查条件是否满足,如果满足就会立即执行后续操作,如果超过了指定的最长时间仍然不满足条件,就会抛出超时异常。

脚本执行时候,如何实现当前元素高亮显示

定位元素:然后在 style中,加入 border:3px res solid 这个样式

在现有的基础上给你一个新的业务线如何左接口自动化?

  1. 熟悉业务
  2. 熟悉已经搭建好的自动化框架
  3. 加入符合自动化的测试用例即可
  4. 提出对框架的改进建议
posted @ 2024-02-08 00:20  爱新觉罗LQ  阅读(7)  评论(0编辑  收藏  举报