Pytest、Robot Framework和TestNG对比

2023-04-19 1,168 0

Pytest、Robot Framework和TestNG对比

Pytest
Robot Framework
TestNG
语言
Python
Python
Java
测试类型
单元和功能测试
端到端验收测试和验收测试驱动开发(ATDD)
单元和功能测试
跨平台
Windows/Linux/MacOS
Windows/Linux/MacOS
Windows/Linux/MacOS
Selenium
pytest-selenium
robotframework-selenium2library
支持
数据驱动
支持,使用内部的parametrize
支持,可以使用参数文件
支持,使用testng.xml或者@DataProvider提供比较复杂的参数
测试报告
Pytest-html或allure
allure-robotframework或者自定义HTML报告
TestNG自带的默认报告Use Default Reportters,ReportNG或者ZTestReport
插件
非常丰富
丰富
丰富
用例失败重试
支持
通过改写RobotFramework源代码增加–retry选项,实现test级别的失败用例自动再执行。
支持
用例跳过
支持
不支持
支持
用例分类执行
支持, 通过pytest.mark标记用例
支持,通过tag方式
支持,通过group分组方式
并发
pytest-xdist:分发到不用的cpu或机器上
命令行并发
通过启动测试的命令行参数-parallel
集成
支持
支持
支持
优点
  1. 具有很多第三方插件,并且可以自定义扩展。
  2. 容易上手,入门简单,文档丰富,文档中有很多实例可以参考。
  3. 可以很好的和 jenkins 集成
  4. 测试代码可读性强
  1. 可以使用RIDE进行用例编写,图形化界面操作,表格化用例,以统一的方式创建测试用例,降低编写接口和用例的难度
  2. 关键字驱动,重用性好,利用现有关键字组装新关键字,简化自动化测试过程
  3. 有高度可扩展性,由通用的测试库和工具组成,也可以自定义测试库。
  1. 简化代码编写,提高测试效率
  2. 配合Maven能够很方便管理依赖第三方插件
  3. 扩展性强
缺点
  1. 数据驱动模式比较死板。测试用例写在yaml文件中(一个yaml文件会有多条用例,且读取后的数据结构为list),测试用例需要动态加载其他变量,这个时候如果用pytest的数据驱动@pytest.mark.parametrize('test',[1,2,3]),parametrize会在一开始就加载了所有用例。如果用例B的body需要用例A的响应参数,这个时候就会加载为None,导致你的测试用例执行失败。
  1. 固定的表格编写形式,使很多简单的语法变得复杂化,而且不支持复杂语法,不够灵活,并且不利于提升测试人员的代码编写能力,而且容易编写疲劳。
  2. 测试数据和测试代码穿插写到同一文件、同一方法中,产生了紧耦合,会导致修改测试数据或测试代码时,可能会相互影响,不利于测试数据和测试脚本的维护。
  3. 界面反应速度慢,经常容易卡死
  4. 导入测试库有时有异常
  5. 问题调试困难
  6. 用例过多时维护困难
  1. 学习成本(需要配置java环境、熟悉框架)
总结
Pytest和TestNG分别为python和java系目前使用最多自动化测试框架,两者的优缺点大同小异,取决于我们使用java语言还是python语言。鉴于目前测试使用语言为java,如果选用selenium工具作为UI自动化工具,建议选择TestNG作为自动化测试框架进行集成。

Pytest

TestNG

Robot Framework

相关文章

集群压测体系搭建-实时监控平台(2)
密码保护:Metersphere使用实践,优缺点分析
密码保护:MS自动化测试框架调研
记一次Nginx代理Mysql服务的经历
Jenkins中自动化创建Jira任务
集群压测体系搭建-Jmeter集群(1)
Index