五大自动化测试的Python框架

五大自动化测试的Python框架

自2018年被评选为编程语言以来,Python在各大排行榜上一直都是名列前茅。目前,它在Tiobe指数中排名第三个,仅次于Java和C。随着该编程语言的普遍使用,基于Python的自动化测试框架也应运而生,且不断发展与丰富。编程

所以,开发与测试人员在为手头的项目选择测试框架时,须要考虑许多方面的因素,其中包括:框架的脚本质量,测试用例的简单性,以及运行模块可能存在的技术弱点。为了不出现“选择困难症”,我在此为你们准备了五种Python类型的自动化测试框架,以供比较和讨论。框架

1.Robot Framework

做为最重要的Python测试框架之一,Robot Framework主要被用在测试驱动(test-driven)类型的开发与验收中。虽然是由Python开发而来,可是它也能够在基于.Net的IronPython和基于Java的Jython上运行。同时,做为一个Python框架,Robot还可以兼容诸如Windows、MacOS、以及Linux等平台。dom

使用先决条件

在使用Robot Framework(RF)以前,您须要先安装Python 2.7.14及以上的版本。我推荐您使用Python 3.6.4,以确保适当的注释可以被添加到代码段中,并可以跟踪程序的更改。同时,您还须要安装Python包管理器--pip。编程语言

固然,您也必须下载相应的开发框架,例如:在开发者圈子里比较流行的PyCharm社区版。另外,因为其代码段自己并不依赖于任何IDE,所以您彻底能够沿用手头既有的IDE工具。ide

优势

  • 经过使用关键字驱动测试(keyword-driven-test)的方法,它可以帮助测试人员轻松地建立具备可读性的测试用例,进而简化了整个自动化的过程。模块化

  • 用户可以轻松地测试数据中的语法。函数

  • 由于是由各类通用工具和测试库所组成,因此它不但拥有庞大的生态系统,并且能够在单独的项目中使用其各个元素。工具

  • 因为拥有许多类型的API,所以该框架具备高度的可扩展性。单元测试

  • 虽然并不是内置功能,可是Robot能够经过Selenium Grid(请参见https://www.lambdatest.com/blog/lambdatest-now-live-with-an-online-selenium-grid-for-automated-cross-browser-testing/),来帮助用户运行各类并行测试。

缺点

虽然有着上述各类便利,可是Robot Framework在建立自定义的HTML报告方面比较繁琐。您顶多能用它来生成xUnit格式的简短报告。测试

另外,Robot Framework在并行测试方面也并不见长。

Robot的特色与竞品比较

因为Robot具备丰富的内置库,并能使用更为简单的面向测试的DSL(Domain Specific Language),所以若是您是自动化测试领域的新手,而且缺少开发经验的话,那么将它做为Python测试框架要比下面将要提到的Pytest或Pyunit,更容易上手一些。固然,若是您须要开发复杂的自动化框架,那么还请使用Pytest、或其余类型的Python框架。

2.Pytest

适用于多种软件测试的Pytest,是另外一个Python类型的自动化测试框架。凭借着其开源和易学的特色,该工具常常被QA(质量分析)团队、开发团队、我的团队、以及各类开源项目所使用。鉴于Pytest具备“断言重写(assert rewriting)”之类的实用功能,许多大型互联网应用,如Dropbox和Mozilla,都已经从下面将要提到的unittest(Pyunit)切换到了Pytest之上。

使用先决条件

除了基本的Python知识,用户并不须要更多的技术储备。另外,用户只须要有一台带有命令行界面的测试设备,而且安装好了Python包管理器、以及可用于开发的IDE工具。

优势

  • 过去,开发人员必须将他们的测试包含在各类大型的类中。现在,Pytest可让用户写出更为紧凑的测试套件。

  • 其余的测试工具会要求开发或测试人员使用调试器,或以日志检查的方式检测某个特定值的来源。而用户在用Pytest来编写测试用例时,彻底能够将全部的值都存储在测试用例之中,直到再获悉有哪些值失败了、以及哪些值获得了断言。

  • 因为涉及到的样板代码(boilerplate code)并很少,所以用户可以容易地编写和理解各类测试。

  • 测试夹具(Fixture)函数常被用来向测试函数添加某个参数,并返回不一样的值。在Pytest中,您能够经过使用一个夹具来模块化另一个。同时,用户可使用多个夹具,在无需重写测试用例的状况下,将测试覆盖到全部参数的组合。

  • Pytest开发人员经过发布各类实用插件,来保持框架的可扩展性。例如:pytest-xdist能够在不使用其余测试器的状况下,被用于执行并行测试。同时,单元测试也能够在无需复制任何代码的状况下,实现参数化。

  • 经过为开发人员提供各类特殊的例程,它可以使得测试用例的编写更为简单、更不易出错,同时代码也会变得更短、更易被理解。

缺点

上述说起的特殊例程,也意味着用户必须放弃必定的兼容性。虽然方便了用户编写测试用例,可是这些用例却没法与任何其余的测试框架一块儿被使用。

Pytest的特色与竞品比较

就编写功能性测试用例和开发复杂的框架而言,Pytest赛过下面将要提到的UnitTest。不过,它和Robot Framework相似,仅适用于开发出简单的测试框架。

若是您正在考虑使用Pytest,请进一步参考《使用Pytest和Selenium WebDriver实现测试自动化》。

3.UnitTest/PyUnit

受到了JUnit启发的UnitTest/PyUnit,也是一种标准化的针对单元测试的Python类自动化测试框架。它的基类TestCase提供了各类断言方法、以及全部清理和设置的例程。所以,TestCase子类中的每一种方法都是以“test”做为名词前缀,以标识它们可以被做为测试用例所运行。用户可使用load方法和TestSuite类来分组、并加载各类测试。

固然,您也能够经过联合使用,来构建自定义的测试运行器。正如咱们使用Junit去测试Selenium那样,UnitTest也会用到UnitTest-sml-reporting、并能生成各类XML类型的报告。

使用先决条件

因为UnitTest默认使用了Python,所以咱们并不须要什么先决条件。除了须要具有Python框架的基本知识,您也能够额外地安装pip、以及用于开发的IDE工具。

优势

  • 开发人员并不须要安装任何其余的模块。

  • UnitTest是xUnit的衍生产品,其工做原理与其余xUnit框架十分相似。所以对于那些没有过硬Python背景的人来讲,也能很快地上手。

  • 用户可以以更为简单的方式运行单个测试用例。您只需在终端上预约好名称,该框架即可灵活地执行各类用例的测试,并产生精炼的输出。

  • 它可以在几毫秒内生成各类测试报告。

缺点

虽然该框架经常使用snake_case来命名各类Python代码,可是因为它源自Junit,所以仍保留了一些传统的camelCase命名方法。这每每会让人产生混淆。

因为它过多地支持了抽象方法,所以形成了测试代码的目的有时不够清晰。
须要大量的样板代码。

PyUnit的特色与竞品比较

和部分Python开发人员的观点类似,我认为:Pytest可以培养测试人员以很是紧凑的方式编写出更好的自动化代码,这一编程习惯。尽管UnitTest是Python默认的自动化测试框架,可是其工做原理、及命名规则仍与标准的Python代码略有不一样。同时,它也须要太多的样板代码。所以该框架并不太受欢迎。

4.Behave

咱们都知道:行为驱动开发(behavior-driven development,BDD),是一种基于敏捷软件开发的方法。它可以鼓励开发人员、业务参与者和QA人员,三者之间的协做。做为另外一种Python测试框架,Behave容许团队避开各类复杂的状况,去执行BDD测试。从本质上说,该框架与SpecFlow和Cucumber很是类似,常被用于执行自动化测试。用户能够经过简单易读的语言来编写测试用例,并可以在其执行期间粘贴到代码之中。并且,那些被设定的行为规范与步骤,也能够被重用到其余的测试方案中。

使用先决条件

任何具有Python基础知识的人均可以使用Behave。其余先决条件还包括:

您必须先安装Python 2.7.14及以上的版本。

须要经过Python包管理器或pip来与Behave协做。

大多数开发人员会选择Pycharm做为开发环境,固然您也能够选用其余的IDE工具。

优势

  • 因为系统行为使用了半正式(semi-formal)语言、以及域词汇表(domain vocabulary),所以Behave有助于在组织中保持一致性的行为。

  • 让那些工做在不一样模块上的开发团队,经过协调处理来具备相似的特征。

  • 其构建的各个功能块可以执行各类测试用例。

  • 因为具备更多值得用户推理和思考的细节,所以目标产品会具备更好的规范性。

  • 根据相似的规范格式,它可以让项目经理和利益相关者,对开发团队和QA团队的输出具备更清楚地了解。

缺点

只适用于黑盒测试。

Behave的特色与竞品比较

Behave最适合于诸如简单Web测试之类的黑盒测试。可是,对于那些具备复杂场景的集成测试与单元测试而言,Behave并非一个很好的选择。做为Behave的替代品,一些开发与测试人员会推荐使用pytest-bdd。该工具融合了Pytest的全部优势,并实现了各类行为驱动测试的场景。

若是您正在考虑使用Behave,那么您能够借用《Behave with Selenium》(请参见https://www.lambdatest.com/support/docs/display/TD/Behave+with+Selenium+-+Running+Behave+Automation+Scripts+on+LambdaTest+Selenium+Grid)中提到的自动化脚本。

5.Lettuce

Lettuce是另外一种基于Cucumber和Python的行为驱动类自动化工具。Lettuce主要专一于那些具备行为驱动开发特征的普通任务。它不但简单易用,并且可以使得整个测试过程更流畅、甚至更有趣。

使用先决条件

您须要安装带有IDE的Python 2.7.1四、及以上的版本。固然,您也可使用Pycharm或任何其余IDE工具。同时,您还须要安装Python包管理器。

优势

  • 和其余BDD测试框架相似,Lettuce可以让开发人员建立多个场景,并用简单的天然语言去描述不一样的功能。

  • 根据相似的规范格式,开发与QA团队可以协调共事。

  • 对于黑盒测试而言,Lettuce很是适合于那些行为驱动的测试用例。

缺点

为了成功地实现行为驱动测试,开发团队、QA人员以及利益相关者之间须要持续进行沟通。假若缺少此类沟通,则会产生流程模糊不清,并让团队遇到问题。
竞品比较

在普通开发人员和自动化测试人员看来,Cucumber在执行BDD测试方面更为实用。而在Python开发和QA人员看来,Pytest-bdd才是的。Pytest的强大之处在于:其框架实现了紧凑且易于理解的代码,并能紧密地结合到行为驱动的测试之中。

结语

综上所述,在上述五种自动化测试的Python框架中,Pytest、Robot Framework和UnitTest可主要用于功能与单元测试,而Lettuce和Behave仅适用于行为驱动测试。经过进一步比较,咱们认为:对于功能测试而言,Pytest是的。若是您是基于Python自动化测试的新手,那么Robot Framework是的入门工具。虽然其功能有所受限,可是它很是容易上手。对于基于Python的BDD测试而言,Lettuce和Behave一样优秀。不过,若是你已经有了必定的Pytest经验,那么请使用Pytest-bdd,但愿本文可以帮助您选出合适的Python测试框架,并顺利开展测试工做。

原文来自:http://suo.im/5TVq0X

相关文章
相关标签/搜索