五大自动化测验的Python结构

发表于:2019-04-22来历:51cto作者:Arnab Roy点击数: 标签:自动化测验python
开发与测验人员在为手头的项目挑选最佳测验结构时,需求考虑许多方面的要素,其间包含:结构的脚实质量,测验用例的简略性,以及运转模块或许存在的技能缺陷。为了防止呈现“

自2018年被评选为最佳编程言语以来,Python在各大排行榜上一向都是独占鳌头。现在,它在Tiobe指数(请详见https://www.tiobe.com/tiobe-index/)中排名第三个,仅次于Java和C。跟着该编程言语的广泛运用,依据Python的自动化测验结构也应运而生,且不断发展与丰厚。

因而,开发测验人员在为手头的项目挑选最佳测验结构时,需求考虑许多方面的要素,其间包含:结构的脚实质量,测验用例的简略性,以及运转模块或许存在的技能缺陷。为了防止呈现“挑选困难症”,我在此为咱们预备了五种Python类型的自动化测验结构,以供比较和评论。

1.Robot Framework

作为最重要的Python测验结构之一,Robot Framework首要被用在测验驱动(test-driven)类型的开发与检验中。尽管是由Python开发而来,可是它也可以在依据.Net的IronPython和依据Java的Jython上运转。一同,作为一个Python结构,Robot还可以兼容比如Windows、MacOS、以及Linux等渠道。

运用先决条件

在运用Robot Framework(RF)之前,您需求先装置Python 2.7.14及以上的版别。我引荐您运用Python 3.6.4,以保证恰当的注释可以被增加到代码段中,并可以盯梢程序的更改。一同,您还需求装置Python包办理器--pip。

当然,您也有必要下载相应的开发结构,例如:在开发者圈子里比较盛行的PyCharm社区版。别的,因为其代码段自身并不依赖于任何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.14、及以上的版别。当然,您也可以运用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测验结构,并顺利开展测验作业。


原文转自:developer.51cto.com/art/201904/595162.htm