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

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

但是我最喜欢的是Python。

为什么?

为什么Python ?

Al Sweigart,《自动化那些无聊的东西》的作者,在我每周的TestGuild自动化播客的第54集里做了最好的解释。

Python一直是他的首选语言,因为:

它有一个温和的学习曲线。

它适用于Windows、Linux和MAC。

它仍然是专业开发人员使用的一种严肃的编程语言。

它在一行中说" Hello world ",不像Java,你只需要记住public, static, void, string, ban,方括号等等。

容易记住语法

它并不强迫您学习面向对象编程。

Python代码非常简洁。有点像Perl,但不像Perl是可读的。

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

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

但是首先,如果您正在寻找一种快速学习如何开始使用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的库中的一部分。

我错过了什么?

让我知道,我会把它/他们列入名单。