Python自动化测试框架选取

一、什么是框架(Framework)、测试框架

框架是整个或部分系统的可重用设计,用来解决代码的组织与运行控制的问题,具体包含以下三点:

  • 封装公共方法(把公共方法提取出来,封装为单独的模块,放到公用方法包里,以减少工作量及出错率。如:读取配置文件,读取数据文件,发送请求,记录日志,连接并对比数据库数据)
  • 代码及配置文件的组织(脚本文件、配置文件、数据文件、日志等我们也需要分类存到不同的文件夹下)
  • 执行控制(批量执行,分模块执行,生成报告,异常处理等等)

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

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

一个基础的测试框架 需要包含 完整的测试脚本(用例)的全部步骤,另外还要完成 用例加载、批量执行、异常控制、结果输出等功能。基础的测试框架一般只提供执行控制方面的功能,完整的测试框架需要包含框架的全部功能

测试框架应具有的特点

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

二、为什么用Python语言

  •  语言热门且相对易学
  • Python追求找到最佳的解决方案,而不是追求更多解决方案
  • 不需要考虑众多的底层细节
  • 拥有丰富的库,官方的、第三方的额,大大节省时间和精力
  • 对于测试来说,掌握Script的特性在脚本设计中会有更好的效果,而Python恰恰是目前比较流行的Script

三、Python测试框架的对比

https://python.libhunt.com/categories/294-testing-frameworks

上图得出,Robot Framework和pytest都是当前成熟度比较高、通用性的测试框架,相对来说 前者的受欢迎程度稍高,后者使用活跃度更高。

总结:

  • unittest比较基础,二次开发方便,适合高手使用
  • pytest/nose更加方便快捷,效率更高,适合小白及追求效率的公司,且pytest的信息更加详细——所以pytest入选了
  • robot framework由于有界面及美观的报告,易用性更好,灵活性及可定制性略差

参考pytest框架设计方案:

晶莹的营: pytest学习笔记(一)
晶莹的营: pytest学习笔记(二)
晶莹的营: pytest学习笔记(三)

参考robot framework框架设计方案:https://www.cnblogs.com/yufeihlf/p/5949984.html

四、另加一些选择pytest的理由

链接:https://docs.pytest.org/en/latest/

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

  • 简单灵活,容易上手
  • 支持参数化
  • 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
  • pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
  • 测试用例的skip和xfail处理
  • 可以很好的和jenkins集成 

来源:

简书_韩志超 https://www.jianshu.com/p/b87ec158aad8

原文地址:https://www.cnblogs.com/txbbkk/p/9716887.html