工业自动化要学python_翻译:对测试自动化来说,为什么说Python是非常好的(选择)WHY PYTHON IS GREAT FOR TEST AUTOMATION...

发布时间:2022-09-17 04:30

Python是一种不可思议的编程语言。正如丹•卡拉汉在PyCon2018的主旨演讲中所说,“对于任何事物来说,Python是第二好的语言,这是令人惊叹的愿景”。然而,对测试自动化来说,我相信它是最好的选择之一。这里给出十个理由:

1、Python之禅

Python之禅,如PEP20中所写,也是自动化测试的一个理想指导方针。测试代码应该是普通语言描述的测试步骤与程序化自动化测试执行之间的天然桥梁。由于它们描述被测试的特性,测试用例应该具有高可读性,强描述力。简明的测试步骤要好于复杂的步骤。测试代码应该为执行的测试加上最小限度的额外说明。Python,以其简洁的优雅性,是测试用例和测试代码之间强有力的纽带。

2,Pytest

不仅仅在python中是最好的测试框架,pytest更是现今所有语言中最好的测试框架。它能处理任何函数式的测试:如单元测试、集成测试以及端到端的测试。测试例可以写得像函数那么简单(意思是当不使用全局变量是,不会有副作用产生)并接受输入参数。基本的“assert”语句具有自动的内省功能,使得其能打印有意义的错误信息。测试执行中可以自动执行相应的过滤。通过插件,pytest可以用来做测试覆盖、并行执行测试、使用Gherkin场景并且与其他诸如Django和Flask的框架结合在一起。其他python测试框架也是不错的,但是pytest是目前为止最棒的(在Python的世界中,他在Pythonic方面也是佼佼者)。

3,包

在Pypi丰富的库中,也包含有丰富的测试相关的可用包和库:pytest,unittest,doctext,tox,logging,paramiko, requests, Selenium WebDriver, Splinter, Hypothesis, 以及其他现成的可用于自动化的组件。仅仅只需要pip install它们。在python的世界里,不需要重复发明轮子。

4,多范式

Python既是面向对象的又是面向过程的。它使得程序员能依据具体情况而决定使用函数,或者是使用类。这点十分利于自动化测试的编程工作,因为无状态的函数避免了副作用,并且简明的语法使得函数更可读。不像Junit非得用类实现测试用例,pytest用函数就能很好的完成任务。

5,按需选择类型

Python开箱即用的动态类型十分适用于自动化测试,因为大多数的功能测试(单元测试之上的测试类型)不需要强类型。并且,当需要静态类型时,mypy,Pyre以及MonkeyType能满足这个要求。Python实际上即支持强类型,也支持无类型。

6,丰富的IDE

好的IDE对于一个语言及其框架的易用性有很大的帮助。对于Python测试来说,JetBrains PyCharm支持使用pytest,unittest以及doctest执行可视化的测试,并且其专业版本包含对BDD框架(如pytest-bdd,behave以及lettuce)以及web开发的支持。作为一种轻量级的IDE,微软的VS Code正迅速得到整个世界的亲睐。VS Code的Python扩展支持所有优秀特性:snippets, linting, environments, debugging, testing 以及窗口式的命令行终端。 Atom,Sublime,PyDev以及Notepad++也能完成这些任务。

7,命令行工作量

Python和命令行的关系就像花生酱和果冻的关系一样,天作之合。整个自动化测试流程可以从命令行驱动。Pipenv能管理包和环境。每一个测试框架都有一个控制台执行器,用于发现和启动测试。因为Python是解释型语言,所以不需要事先编译测试代码,这大大简化了测试执行。丰富的命令行支持,加上各种工具,或者作为脚本和持续集成管道的一部分,使得的测试的手动管理变得很容易。

作为奖励,自动化模块能从Python REPL解释器来调用。更好的选择是,从Jupeter notebook来调用。这意味着什么呢?自动化辅助的探索性测试!想象使用Python去自动操作一个Web应用直到需要人工介入的节点。Python调用可以在运行时交换,重新执行,跳过或者更改。是Python使这一切变得可能。

8,容易上手

感谢Python之禅、Python一直对初学者是友好的,不管这些初学者是一个编程菜鸟或者是一个专家级的工程师。这使得选择Python作为自动化语言获得巨大的优势,因为测试需要既要易于完成,又要迅速完成。当功能就绪需要验证时,没有人想要浪费时间(等待测试的就绪)。再加上现在开始从事自动化工作(自主选择或者被迫)的很多手工软件测试员(通常没有编程经验)已经从Python平缓的学习曲线中获益。

9,可扩展性的力量

即使Python适于初学者,但是并不意味着它是一个玩具语言。Python的设计总是倾向于使用唯一正确的方式去完成一项工作,这使得它拥有工业级的能力。受益于意义明确的语法、良好的结构,模块化以及丰富的工具和包生态,开发可以进行扩展。多功能的命令行使得它能适配任何工具和业务流程。Python可能比其他语言慢的事实并不是一个问题,因为对于功能测试来说系统本身的延时(例如网页的响应时间以及Rest接口调用的返回时间)要比语言本身的时延要慢一个数量级。

10,高普及度

Python是当今世界最流行的语言之一。它持续在ITOBE,Stack Overflow以及GitHub(以及Git Hut)上名列前茅。它是Web开发者的心爱之物,同样也受到数据科学家、基础设施工程师以及测试自动化工程师的亲睐。Python社区也为其继续向前注入活力。Python将不那么容易过时。

其他语言?

这篇文章的目的是列举出使得Python适于自动化测试的亮点。虽然我非常相信Python是最好的自动化语言之一,其他语言诸如Java,C#以及Ruby也有其可取之处。您可以阅读我的文章“The Best Programming Language for Test Automation”, 来查看相关方面的比较。

----------------------

注:

1,原文链接:https://automationpanda.com/2018/07/26/why-python-is-great-for-test-automation/

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号