用于全栈自动化测试的最佳Python工具

在这里插入图片描述

我知道大多数测试人员会说Java是他们建立自动化测试的首选语言。java

可是我最喜欢的是Python。为何?为何是Python ?python

Al Sweigart,《自动化那些无聊的东西》的做者,Python一直是他的首选语言,由于:它有一个温和的学习曲线。它适用于Windows、Linux和MAC。它仍然是专业开发人员使用的一种严肃的编程语言。它在一行中说" Hello world ",不像Java,你只须要记住public, static, void, string, ban,方括号等等。web

容易记住语法,它并不强迫您学习面向对象编程。Python代码很是简洁。有点像Perl,但不像Perl是可读的。面试

那么,您可使用哪些最好的Python库来帮助您进行测试和自动化工做呢?编程

如下是我过去的受访者最喜欢的一些Python自动化库,以及一些我我的认为有用的库。api

可是首先,若是您正在寻找一种快速学习如何开始使用Python的方法,那么您应该查看Andrew Knight在自动化协会的会议,了解如何开始使用Python进行测试。在检查如下python测试库以前,这将是一个很好的开始。浏览器

  • 用于功能Python测试自动化 selenium网络

  • 固然,您有用于浏览器UI自动化的Selenium-Python绑定。数据结构

  • 这个Selenium包用于从Python自动化web浏览器交互。架构

  • Selenium是基于浏览器的自动化的行业标准。

若是您的团队主要由具备开发技能或SDET的测试工程师组成,这是一个完美的选择。

Splinter

Python中用于Selenium的一个很酷的包装器类型库是Splinter。

Splinter是一个使用Python测试web应用程序的开源工具。它容许您自动化浏览器操做,例如访问url并与它们的项进行交互。

它使得编写python Selenium测试更容易,由于它有一个高级API,可让您更容易地为浏览器应用程序开发自动化脚本。

Robot Framework

若是您想使用Python进行测试自动化,那么使用Robot框架是不会出错的。这个成熟的产品是为测试人员建立的,它使用关键字驱动的方法使测试具备可读性和易于建立。

它还包括一组测试库和其余工具。Robot框架是基于python的,可是您也可使用Jython (Java)或IronPython (. net)。

虽然Selenium WebDriver库多是最经常使用的外部测试库,但Robot Framework也能够测试其余东西,好比:

  • FTP
  • MongoDB
  • 安卓
  • Appium
  • api
  • 大型机

若是您的团队主要是由测试人员组成的,那么Robot框架是您的自动化框架的一个很好的选择。

behave

那么行为驱动的开发库呢?

Python有一堆相似BDD的框架可供选择。最受欢迎的多是行为。它和cucumber几乎如出一辙,但它是用Python作的。

requests

须要作REST API测试或任何类型的HTTP活动?

请求是一个Apache2受权的HTTP库,用Python编写。这个库是我认为下载次数最多的python库之一。这对您的自动化工做是必不可少的。

Tavern

说到测试Andrew Knight推荐给个人另外一个库的API,自动化熊猫是Tavern。它使您的REST API测试更具备声明性

Tavern将本身描述为一个命令行工具、Python库和Pytest插件,用于对RESTful api进行自动化测试,它具备简单、简洁和灵活的基于yaml的语法

Hypothesis

我常常听到的一个流行的测试主题是基于属性的测试。若是你一直想本身尝试一下,并且你对python很感兴趣,那就看看假设吧。

假设基于属性的测试你能够在必定的范围内测试整数假设咱们会自动为你处理各类变化。所以,它有助于在您的代码中找到您可能想不到要查找的边缘状况。

Pywinauto

对于非基于浏览器的功能自动化,请尝试使用pywinauto。

pywinauto是一组Python模块,能够用来自动化Microsoft窗口gui。

您可使用它来发送键盘和鼠标动做到Windows对话框和控件。它还支持更复杂的操做,好比获取文本数据。

Automagica

Automagica是一个基于Python语言的开源智能机器人过程自动化(SRPA)平台。Automagica的最酷之处在于,你能够快速自动化一系列不一样的跨平台流程,好比:

  • 浏览器自动化
  • PDF操纵
  • 文件和文件夹操做
  • 电子邮件业务
  • Word和Excel自动化

如何自动化与功能测试无关的其余活动?

当我说“自动化”时,我指的不只仅是功能测试自动化,而是任何可以帮助您加速软件开发过程的活动。

Beautiful Soup

我用来从HTML和XML文件中提取数据的Python库之一是Beautiful Soup。

虽然我使用的主要框架是基于java的,可是在个人框架中有一个目录,其中包含各类Python帮助器脚本—其中大多数都利用了Beautiful Soup。

例如,我有一些脚本能够帮助我快速解析Serenity自动化框架报告。

帮助我快速解析个人Serenity自动化框架报告。

这也是伟大的网络废弃。若是您有一个简单的静态页面,须要在其中查找隐藏在HTML中的一些信息,那么Beautiful Soup是您的首选库。

您可使用请求库来帮助下载网页自己,Beautiful Soup将帮助您解析它。

NumPy

在我采访Python播客Test & Code的主持人Brain Okken时,他将NumPy做为他在诸如电气工程测试等方面的Python库的选择。

NumPy是Python用于科学计算的基本包。

PyTest

Andrew Knight认为pytest是任何语言中最好的测试自动化框架之一。

缘由之一是,它很是简洁,而且专一于测试。在pytest测试中,编写测试函数—不是测试类—而是测试函数。若是你想作set和cleanup,你能够写一些其余的函数,它们被标记为fixture,你能够用依赖注入的方式来声明它们。

所以,fixture将根据它们的做用域自动调用,它们返回的内容将被注入到测试函数中。这使得设置和清理更加可伸缩,更加可重用。

Brian还提到,虽然您可能须要一段时间才能理解pytest fixture,可是这很是值得,由于它们很是强大。若是您是Python测试的新手,pytest是一个必须学习的库。

必定要看看Brian的书《Python测试与pytest:简单、快速、有效、可扩展》,以了解它的全部内容。

TensorFlow

若是你最近几年一直关注自动化领域的最新消息,你就会知道人工智能是一个多么热门的话题。

TensorFlow是一个由谷歌建立和发布的用于快速数值计算的Python库。它是一个基础库,能够用于直接建立深度学习模型,也能够经过使用包装器库简化构建在TensorFlow之上的过程。

TensorFlow其实是Tariq King用来建立Ultimate Software基于python的开源AI生成和探索性测试工具Agent和AgentX的库之一。

PDFMiner

有多少次您发现本身须要测试PDF的内容?

实际上,我惊讶地发现有多少Python模块用于与许多不一样的技术交互,好比Excel文件或解析PDF文件。

若是您须要测试或验证PDF文本内容,您可能会发现PDFMiner很是有用。这个库基本上是一个PDF文档的文本提取工具。

Pyjest

您据说过称为Jest的单元级自动测试框架吗?

它是由Facebook建立的,它的一些特性使测试驱动开发更容易执行;例如,它的交互式监视模式,您可使用它来改进工做流。

它还足够智能,能够知道运行哪些测试与上次提交代码存储库后更改的文件相关。

若是有数百个(甚至数千个)测试须要很长时间才能运行,那么这个特性很是有用,由于它只运行与您的更改相关的测试。

Kent C. Dodds向我介绍了一个基于python的Jest实现pyjest。尽管它仍处于试验阶段,但它拥有全部Kent喜欢的观看模式功能。

Locust

想要在Python脚本中添加一些性能测试吗?

  • Locust是一个简单易用的,基于python的负载测试工具。

  • Locust还能够帮助您肯定一个系统能够处理多少并发用户。

  • Locust的一些很酷的功能是:

  • 可以使用直接的Python建立测试场景

  • 快速扩展您须要模拟的用户数量的能力

  • 一个友好的、基于web的可扩展UI

  • 用于测试api

  • PyBuilder

  • PyBuilder是一个用Python编写的软件构建自动化工具,主要针对Python程序。

它的网站上说,它是基于基于依赖的编程的概念,但它也提供了一个强大的插件机制,容许构建生命周期,相似于Apache Maven之类的构建工具。

panda

panda是一个开源的、bsd许可的库,为Python编程语言提供高性能、易于使用的数据结构和数据分析工具。

Ravi Salunkhe是我在LinkedIn上的一位测试架构师,他极力推荐我使用它。

panda基于其网站上的信息解决的问题是“Python长期以来在数据转换和准备方面一直很出色,但在数据分析和建模方面就不那么出色了。panda有助于填补这一空白,使您可以在Python中执行整个数据分析工做流,而没必要切换到更特定于领域的语言,如r。”

Coverage.py

py是一个度量Python程序代码覆盖率的工具。

Kyle Tice在评论中推荐了这个库:“coverage .py是Python最流行的代码覆盖工具之一。它使用Python标准库中提供的代码分析工具和跟踪钩子来度量覆盖率。它运行在CPython、PyPy、Jython和IronPython的主要版本上。您能够将Coverage.py与单元测试和Pytest一块儿使用。

他们的网站提到,它会监控你的程序,注意代码的哪些部分已经执行,而后分析源代码,以识别可能已经执行但没有执行的代码。覆盖率度量是评估测试有效性的好方法。这个工具将显示您的代码的哪些部分被测试所执行,更重要的是,哪些部分没有被测试所执行。

PyUnit

Francesco Piscani在LinkedIn上提到,若是您来自Java世界而且习惯于使用camel大小写,那么您可能会发现UnitTest (PyUnit)是向Python生态系统的一个简单过渡。

PyUnit是用Python建立单元测试程序和单元测试的简单方法。

PyCharm

好吧,我也不知道为何我没有把我最喜欢的ide添加到这个列表中,可是Daryl Flowers在LinkedIn上提醒我添加它是很好的。

若是您习惯于使用Java进行自动化测试,那么您可能熟悉JetBrain的IntelliJ。对于Python,它们还为专业开发人员提供了一个很是棒的特定于Python的IDE,称为PyCharm。

我错过了什么Python自动化工具

这些只是我使用过或推荐给个人基于Python的库中的一部分。我错过了什么?让我知道,我会把它/他们列入名单。
在这里插入图片描述
上面是我收集的一些视频资源,在这个过程当中帮到了我不少。若是你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感觉的话,能够加入咱们扣扣群【313782132 】,里面有各类软件测试资源和技术讨论。

在这里插入图片描述
在这里插入图片描述
固然还有面试,面试通常分为技术面和hr面,形式的话不多有群面,少部分企业可能会有一个交叉面,不过总的来讲,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这我的的综合素质以及家庭状况符不符合公司要求,通常来说,技术的话只要经过了技术面hr面基本上是没有问题(也有少数企业hr面会刷不少人)
咱们主要来讲技术面,技术面的话主要是考察专业技术知识和水平,上面也是我整理好的精选面试题。

加油吧,测试人!若是你须要提高规划,那就行动吧,在路上总比在起点观望的要好。事必有法,而后有成。

资源不错就给个推荐吧~