【.com快译】自2018年被评选为最佳编程语言以来,Python一直位居各大排行榜榜首。目前在TiobeIndex中排名第三(详见https://www.tiobe.com/tiobe-index/),仅次于Java和C。随着这门编程语言的广泛使用,一个基于Python的自动化测试框架已经出现也应运而生,并不断发展和丰富。因此,开发人员和测试人员在为手头的项目选择最佳测试框架时需要考虑很多因素,包括:框架的脚本质量、测试用例的简单性以及运行模块可能存在的技术弱点。为了避免“选择困难症”,我准备了五种Python类的自动化测试框架来进行比较和讨论。1.RobotFramework作为最重要的Python测试框架之一,RobotFramework主要用于测试驱动类型的开发和验收。虽然是用Python开发的,但它也可以在基于.Net的IronPython和基于Java的Jython上运行。同时,作为Python框架,Robot还兼容Windows、MacOS、Linux等平台。先决条件在使用机器人框架(RF)之前,您需要安装Python2.7.14及以上版本。我建议您使用Python3.6.4以确保将适当的注释添加到代码段并跟踪程序更改。同时,你还需要安装Python包管理器——pip。当然你还必须下载相应的开发框架,比如:PyCharmCommunityEdition,这个在开发者圈比较流行。此外,由于代码片段本身不依赖于任何IDE,因此您可以完全使用手边现有的IDE工具。优点通过使用关键字驱动测试方法,可以帮助测试人员轻松创建可读性强的测试用例,从而简化整个自动化过程。用户可以轻松测试数据中的语法。因为它由各种常用工具和测试库组成,所以它不仅有一个庞大的生态系统,而且它的各个元素都可以在单独的项目中使用。由于具有多种类型的API,该框架具有高度可扩展性。虽然不是内置功能,但Robot可以使用online-selenium-grid-for-automated-cross-browser-testing/),以帮助用户运行各种并行测试。缺点尽管有上面提到的所有优点,RobotFramework在创建自定义HTML报告时还是很麻烦。您最多可以使用它生成xUnit格式的简短报告。另外,RobotFramework不擅长并行测试。Robot与竞品相比的特点由于Robot内置了丰富的库,可以使用更简单的面向测试的DSL(DomainSpecificLanguage),如果你是自动化测试领域的新手,缺乏开发经验,那么你将作为Python测试框架,比下面提到的Pytest或Pyunit更容易上手。当然,如果你需要开发复杂的自动化框架,请使用Pytest,或者其他类型的Python框架。2.PytestPytest,适用于多种软件测试,是另一个Python类的自动化测试框架。该工具具有开源和易学的特点,经常被QA(质量分析)团队、开发团队、个人团队和各种开源项目使用。鉴于Pytest具有“断言重写(assertrewriting)”等实用功能,许多大型互联网应用,如Dropbox、Mozilla等,都从下面提到的单元测试(Pyunit)转为Pytest。前提条件用户除了基本的Python知识外,不需要更多的技术储备。另外,用户只需要有一个带命令行界面的测试设备,安装好Python包管理器和IDE开发工具即可。优势过去,开发人员不得不将他们的测试包装在各种大类中。今天,Pytest允许用户编写更紧凑的测试套件。其他测试工具要求开发人员或测试人员使用调试器或日志检查来检测特定值的来源。用户在使用Pytest编写测试用例时,可以将测试用例中的所有值保存到最后一天,以了解哪些值失败了,哪些值被断言了。由于涉及的样板代码不多,用户可以轻松编写和理解各种测试。测试夹具(Fixture)函数经常被用来给测试函数添加一个参数,并返回一个不同的值。在pytest中,您可以通过使用另一个来模块化一个夹具。同时,用户可以使用多个fixture来覆盖所有的参数组合,而无需重新编写测试用例。pytest开发人员通过发布各种实用插件来保持框架的可扩展性。例如:pytest-xdist可用于在不使用其他测试器的情况下执行并行测试。同时,单元测试也可以在不重复任何代码的情况下进行参数化。通过为开发者提供各种特殊的例程,可以让测试用例的编写更简单、更不容易出错,代码也会变得更短、更容易理解。缺点上面提到的特殊例程也意味着用户必须放弃一定的兼容性。虽然用户编写测试用例很方便,但是这些用例不能与任何其他测试框架一起使用。Pytest与竞品相比的特点在编写功能测试用例和开发复杂框架方面,Pytest优于下面提到的UnitTest。但是它类似于RobotFramework,只适合开发简单的测试框架。如果你正在考虑使用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-drivendevelopment,BDD),是一种基于敏捷软件开发的优秀方法。它鼓励开发人员、业务参与者和QA人员之间的协作。Behave作为另一个Python测试框架,可以让团队避开各种复杂的情况进行BDD测试。本质上,该框架与SpecFlow和Cucumber非常相似,通常用于执行自动化测试。用户可以使用易于阅读的语言编写测试用例,并在代码执行期间将其粘贴到代码中。而且,那些设定的行为规范和步骤也可以在其他测试解决方案中重复使用。先决条件任何具有Python基础知识的人都可以使用Behave。其他先决条件包括:您必须安装Python2.7.14或更高版本。需要Python包管理器或pip才能使用Behave。大多数开发者会选择Pycharm作为开发环境,当然你也可以选择其他IDE工具。优点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+硒+网格)。5.LettuceLettuce是另一个基于Cucumber和Python的行为驱动的自动化工具。Lettuce主要关注那些具有行为驱动开发特征的平凡任务。它不仅易于使用,而且还使整个测试过程更加顺畅和有趣。先决条件您需要使用IDE安装Python2.7.14及以上版本。当然,您也可以使用Pycharm或任何其他IDE工具。同时,你还需要安装Python包管理器。优点与其他BDD测试框架类似,Lettuce使开发人员能够创建多个场景并使用简单的自然语言来描述不同的功能。基于相似的规范格式,开发和QA团队可以协调和协同工作。对于黑盒测试,Lettuce非常适合那些行为驱动的测试用例。缺点要成功实施行为驱动测试,开发团队、QA人员和利益相关者之间需要不断沟通。缺乏这种沟通会造成流程模糊,并导致团队出现问题。竞品对比从普通开发人员和自动化测试人员的角度来看,Cucumber在进行BDD测试时更实用。在Python开发人员和QA人员眼中,Pytest-bdd是最好的。pytest的强大之处在于:它的框架使代码紧凑且易于理解,并且可以紧密集成到行为驱动的测试中。结论综上所述,以上五种自动化测试Python框架中,Pytest、RobotFramework和UnitTest可以主要用于功能和单元测试,而Lettuce和Behave只适用于行为驱动测试。通过进一步比较,我们认为Pytest最适合做功能测试。如果您不熟悉基于Python的自动化测试,RobotFramework是入门的完美工具。虽然它的功能有限,但非常易于使用。对于基于Python的BDD测试,Lettuce和Behave同样出色。但是,如果您已经对pytest有了一些经验,那么***请使用pytest-bdd。***,希望本文能帮助大家选择合适的Python测试框架,顺利开展测试工作。原标题:2019年测试自动化的Top5Python框架,作者:ArnabRoy
