winform 开发用什么框架_为什么自动化测试框架中优先用 Pytest而不是 Robot Framework?...

2023-11-12

Python 自动化测试框架 的优缺点对比。

之前曾提问请教过 Pytest 和 Robot Framework 的优缺点对比,由于网上关于这方面的信息比较少,收到大家的反馈建议,十分感谢,现在是该总结一下了,欢迎大家一起交流探讨。

在对比框架优缺点之前,先清楚框架的意义是什么?什么是“好的测试框架”必备的特性?

什么是框架?

框架 ( Framework ) 是整个或部分系统的可重用设计,框架是用来解决代码的组织及运行控制问题的。

在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求,记录日志,连接并对比数据库数据。每个脚本里都重写一遍各种方法不仅工作量大而且易错。所以我们需要把公共的方法提取出来,封装成单独的模块,放到公用方法包里。另外配置文件,数据文件,日志等我们也需要分类存到不同的文件夹下。这种对公共方法的封装及对脚本及配置文件怎么组织的设计就叫做框架。

同时,一般框架除了完成对代码及配置文件的组织之外还要提供运行的控制功能。比如批量执行,分模块执行,生成报告,异常处理等等。

总结为以下 3 点:

  • 封装公共方法
  • 代码及配置文件的组织
  • 执行控制

什么是测试框架?

一个完整的测试脚本(用例)一般包含以下几个步骤:

  • 环境准备或检查
  • 执行业务操作
  • 断言结果
  • 清理环境

而测试框架一般还要完成用例加载,批量执行,异常控制,结果输出等功能。基础的测试框架一般只提供执行控制方面的功能。

测试框架应具有的特点

  • 易用性:编写用例,执行用例,生成报告及定位问题方便;
  • 健壮性:稳定,比如 timeout 机制等;
  • 扩展性:插件;
  • 灵活性:用例组织或执行的灵活性,Fixture 功能(不同范围的 setUp 和 tearDown)等;
  • 定制性:二次开发方便;

Pytest 与 Robot Framework 对比

Pytest 框架特性

Pytest 是一款强大的 Python 测试工具,它具有易于上手,功能强大,第三方插件丰富,效率高,可扩展性好,兼容性强等特点,实际上,越来越多的项目开始放弃 Unittest 和 Nose 以及 Robot Framework ,转而使用 Pytest,比如 Mozilla 和 Dropbox. 因为 Pytest 可以提供更丰富功能,包括 assert 重写,第三方插件,以及其他测试工具无法比拟的 fixture 模型。

Pytest 可以自动找到测试用例执行,并汇报测试结果。它有丰富的基础库,可以大幅度提高用户编写测试用例的效率。它具备非常强的可扩展性,用户可以自己编写插件,或者安装第三方插件。Pytest 可以很方便地与其他工具一起使用,比如持续集成、web 自动化测试等。

Pytest 也具有 Robot Framework 所闻名的验收测试能力。Pytest 最好的特性之一是,它提供了测试用例的详细失败信息,使开发者可以快速准确地改正问题。它兼容最新版本的 Python,还兼容 unittest、doctest 和 nose,开箱即用。Pytest 还有各种可用插件来给现有测试技术和测试用例增加更多功能和多样性。事实上,在其活跃社区中有 300 多个可用的插件。该平台设计用于编写更简单,错误率更小的代码。你可以将 Pytest 与诸如 Selenium 和 Splinter 之类的图形用户界面一起使用,来使测试工作更轻松

Pytest 优于其他测试框架的地方:

  • 简单测试可以很简单的编写
  • 复杂测试也可以很简单编写
  • 简单灵活,容易上手
  • 支持参数化
  • 能够支持简单的单元测试和复杂的功能测试,还可以用来做 selenium/appnium 等自动化测试、接口自动化测试(Pytest+requests)
  • Pytest 具有很多第三方插件,并且可以自定义扩展,比较好用的如 Pytest-selenium(集成 selenium)、Pytest-allure-adaptor(生成漂亮的 allure 报告)、Pytest-rerunfailures(失败 case 重复执行)、Pytest-xdist(多 CPU 分发分布式执行)等
  • 测试用例的 skip 和 xfail 处理
  • 可以很好的和 jenkins 集成
  • 测试代码可读性强
  • 易于上手
  • 断言失败仅使用原生关键字 assert,而不是 self.assertEqual(),或者 self.assertLessThan()
  • Pytest 可以运行 unittest 和 nose 编写的测试用例
  • 不依赖特定的 Python 版本,Python2 和 Python3 都可以使用最新版本
  • 正在快速壮大的社区开发和维护

Robot Framework 框架(简称 rf)

优点

  • 关键字驱动,自定义用户关键字。
  • 支持测试日志和报告生成。
  • 支持系统关键字开发,可扩展性好。
  • 支持数据库操作。

缺点

  • 测试用例写起来不简洁。
  • 需要掌握特定语法,学习成本高
  • 只支持 Python2,不支持 Python3,容易导致测试团队 Python 版本不统一
  • 界面反应速度慢,经常卡死
  • 导入测试库有时会异常
  • 对于测试团队限制过多,不利于结合具体业务定制功能
  • 问题调试困难
  • 输出的日志结构复杂,多为英文,不容易看懂
  • 维护困难,超过 2000 条用例就是噩梦
  • 接口测试,rf 一般是顺序执行的,但在接口测试中需要并发测试,这种测试需要加入写入的并发关键字
*** Settings ***Library    RequestsLibraryLibrary    Collections*** Test Cases ***test_get_event_list    # 查询发布会(GET 请求)    ${payload}=    Create Dictionary    eid=1    Create Session    event    http://127.0.0.1:8000/api    ${r}=    Get Request    event    /get_event_list/    params=${payload}    Should Be Equal As Strings    ${r.status_code}    200    log    ${r.json()}    ${dict}    Set variable    ${r.json()}    #断言结果    ${msg}    Get From Dictionary    ${dict}   message    Should Be Equal    ${msg}    success    ${sta}    Get From Dictionary    ${dict}    status    ${status}    Evaluate    int(200)    Should Be Equal    ${sta}    ${status}

评判结果:不考虑,没人愿意这么写接口用例。

(文章来源于霍格沃兹测试学院)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

winform 开发用什么框架_为什么自动化测试框架中优先用 Pytest而不是 Robot Framework?... 的相关文章

随机推荐

  • kafka的安装搭建

    Kafka就不介绍了 主要记录下安装的过程 1 安装kafka得先安装jdk 可以使用以下命令查看下是否有安装过jdk rpm qa grep jdk 没有则运行一下命令安装jdk yum install java 1 8 0 openjd
  • 树莓派4B安装Pytorch, torchvision(附已编译安装包)

    树莓派4B安装Pytorch torchvision Install Pytorch Raspberry Pi 4B Linux raspberrypi 4 19 75 v7l 1270 SMP Tue Sep 24 18 51 41 BS
  • springboot集成swagger3+swagger-bootstrap-ui及使用详解

    1 引入 maven 依赖
  • Gradle中如何修改Springboot引入的依赖版本

    扫描漏洞升级 不知道各位是否遇到过以下问题 当下层项目将spring引入的某个依赖版本升级之后 上层项目只要指定了Springboot版本 那么还是会将这个版本改回去 比如 现在有两个Springboot项目A B B项目会调用A项目中的某
  • 玩一玩微信公众号开发(二) 管理凭据和自定义菜单

    管理access token access token介绍 在前面我们成功的使用了Spring Boot Web程序和微信对接 但是这仅仅是一个开始 我们还需要获取access token 也就是凭据 才能进行之后的工作 微信开发文档有如下
  • 大数据时代——生活、工作与思维的重大变革

    最近读了维克托 迈尔 舍恩伯格的 大数据时代 觉得有不少收获 让我这个大数据的小白第一次理解了大数据 作者是大数据的元老级先驱 放一张帅照 膜拜下 不过这本书我本人不推荐从头读一遍 因为书中的核心理念并不是特别多 可以看看我这篇博客 1 海
  • idea中git的简单使用及git分支

    这篇文章简单介绍了git 着重介绍了分支概念和idea中git的简单使用 提问题 git是啥 git的分支概念 idea中git的使用 git仓库 git命令 git安装 参考文章 git是个啥 分布式版本管理工具 git的前生今世 git
  • Solidity:源文件结构

    Solidity 源文件结构 SPDX License Identifier 如果源代码可用 则可以更好地建立对智能合约的信任 由于提供源代码总是涉及版权方面的法律问题 Solidity编译器鼓励使用机器可读的SPDX License Id
  • Synchronized详解

    目录 一 如何解决线程并发安全问题 二 synchronized原理详解 1 加锁的方式 2 synchronized底层原理 3 Monitor监视器锁 MonitorEnter指令获取monitor所有权过程 MonitorExit指令
  • java.lang.StackOverflowError: null(栈内存溢出)递归导致

    通常是递归导致 或者死循环 在方法里调用了自己 导致无限调用 很快就会报错StackOverflowError 例如 有些初学者会犯如下错误 这是service类 public void saveEntity Emp emp this sa
  • vue拖拽

    1 定义拖拽指令 2 使用 3 效果 4 完整代码
  • Spring Boot入门编写简单java代码

    这里我简单编写一个Hello World的代码 文章目录 1 设置访问端口 2 编写项目代码 1 设置访问端口 在yml文件中编写端口为8080 我们启动项目是的路径就是localhost 8080 server port 8080 2 编
  • ‘UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte‘成功解决

    今天在用pandas进行读取时出现了bug 出现这种情况的原因是 文件的编码不是 UTF8 编码的 而pandas读取文件时固定采用 UTF8 解码 解决方法是改为对应的解码方式 解决的方式有两种 第一种 可以查看你对应文件的编码格式 使用
  • 生成对角矩阵 numpy.diag

    给定对角线上元素 我想生成对角矩阵 在网上搜了一下 竟然都是numpy diagonal 这个函数的作用是提取给定矩阵的对角元素 当然不是我想要的 后来发现numpy diag才是生成对角矩阵的函数 所以写此文章记录之 import num
  • 【运维&测试】如何写好测试用例

    一 常用术语 按软件测试手段 黑盒 灰盒 白盒 其中白盒测试是三个当中技术难度最高的 测试方向 功能 性能 安全 测试点划分 兼容性 易用性 UI元素 二 测试用例是什么 是测试工作的核心 是一组在测试时输入输出的标准 是软件需求的具体对照
  • 微服务 tars php,TARS-PHP

    TARS PHP是针对PHP使用tars二进制协议 以及Tars平台整体运维 RPC等一系列能力的解决方案 它主要由如下的几个部分组成 Tars是基于名字服务使用 Tars 协议的高性能 RPC 开发框架 同时配套一体化的服务治理平台 帮助
  • Python调用java代码-两种方法

    使用的模块jpype 一 直接使用java内置函数 from jpype import startJVM 开启java虚拟机 getDefaultJVMPath 自动获取虚拟机路径 startJVM getDefaultJVMPath ea
  • 第六大晶圆代工厂商2021净利润大增593.3%

    3月29日 华虹半导体发布2021全年业绩公告 销售收入创历史新高 达16 31亿美元 较上年度增长69 6 净利润为2 31亿美元 较2020年上升593 3 公告指出 华虹半导体销售收入增长因付运晶圆增加及平均销售价格上涨所致 在原材料
  • 使用Navicat+Premium模型设计表之间关系图(1:n;n:n)

    一 设计E R图之间关系 1 打开Navicat Premium软件 开始设计表 2 设计表之间的关系 操作步骤 选中关系图标 将某张表的一个字段拖动到另外一张表的字段 设计表之间的关系 4 导出成png 5 保存模型 使用Navicat逆
  • winform 开发用什么框架_为什么自动化测试框架中优先用 Pytest而不是 Robot Framework?...

    Python 自动化测试框架 的优缺点对比 之前曾提问请教过 Pytest 和 Robot Framework 的优缺点对比 由于网上关于这方面的信息比较少 收到大家的反馈建议 十分感谢 现在是该总结一下了 欢迎大家一起交流探讨 在对比框架