2021 年 8 大 Python 测试框架
我应该用哪种编程语言开始我的测试之旅?” – Python 就是你的答案。但它不仅适合初学者!在我最近在 LinkedIn 上所做的一项调查中,我们可以看到,即使在有经验的程序员中,也有近 35% 的人认为 Python 是他们最喜欢的编程语言(尽管与历史上最喜欢的 Java 相差不远,后者以 32 %)。
多年来,Python 确实在测试人员和开发人员中获得了动力,它是目前增长最快的编程语言(如下面的 Stack Overflow 趋势图表所示),我们都知道这意味着什么……流行度 =关联!
在本文结束时,我的目标是帮助您了解 Python 编程语言的强大功能,以及哪种 Python 测试框架最适合您的项目需求
1.Python 用于测试自动化有什么好处?
Python 是一种开源编程语言,于 1991 年首次发布,旨在提供一种直观、简单、人类可读、优雅且整洁的编程语言。在测试方面,这些品质是必须的,尤其是当我们团队中有手动测试人员(不一定具有编程技能)时,他们现在正在过渡到自动化并且可以享受 Python 的快速学习曲线来快速编写脚本。
Python 在测试自动化领域的受欢迎程度不断上升,以及为什么它被认为是测试自动化的最佳选择之一,原因有很多。在这些原因中,您会发现: Python 之禅(Python 设计哲学的 19 项指导原则),对初学者友好,但对专家来说也很强大,它既面向对象又具有功能性,它拥有丰富的测试包库,一个世界性的强大的社区,还有更多!我建议在很棒的 AutomationPanda 博客上阅读更多相关信息。
2.适合您的 Python 测试框架
随着 Python 的使用越来越多,基于 Python 的测试框架也越来越流行。起初,知道从所有丰富的工具中选择哪一个可能有点令人困惑,因为每个工具都有其优点和缺点。话虽如此,每个项目和组织都有不同的要求和限制,因此在选择最适合我们的工具时,我们需要将它们全部考虑在内。我建议阅读这些关于如何为您选择合适工具的精彩文章,让我们深入研究前 8 名 Python 测试框架,探索它们的优点和缺点,以便您更接近选择适合您需求的理想 Python 测试框架。
3.前 8 名 Python 测试框架的优缺点
2)Pytest
5)Nose2
6)Behave
7)Lettuce
8)Testify
3.1 Robot Framework (RF)
Robot Framework (RF) 是一个开源测试自动化框架,用于验收测试、验收测试驱动开发 (ATDD) 和机器人流程自动化 (RPA)。它的核心是用 Python 实现的,但也可以在 Jython(Python 的 Java 实现)和 IronPython(用于 .NET 框架的 Python)上运行。要运行它,您需要安装 Python 2.7.14 或更高版本。
优点
1)基于关键字驱动测试 (KDT) 方法,从而使我们能够使用人类可读的关键字轻松创建测试用例(无需编码经验)。
2)支持所有操作系统(Windows、Linux 或 MacOS)和所有应用程序(Web、移动和桌面应用程序)。
3)提供清晰且用户友好的 HTML 报告数据(包括屏幕截图)。
4)具有大量 API 的丰富生态系统使其成为高度可扩展的框架,并允许与任何其他 3rd 方工具集成。
5)支持从 RF v4.0 开始的 If/Else 语法
6)强大的社区支持和在线资源。
缺点
1)开箱即用不支持并行测试,但可以通过Selenium Grid或Pabot(RF的并行执行器)实现。
2)好坏,它会立即您按照预定义的方法工作,最终了解可能比大概的时间长一些
3)创建通用关键字需要比写编码测试的时间
4)自定义报告并不容易。
底线
如果您希望实现一种关键字驱动的框架方法,允许手动测试人员和业务分析师创建自动化测试,RF 是适合您的解决方案,它提供了各种扩展和库并且易于使用。但是,如果您正在寻找开发复杂场景,因为您将需要进行一些框架未内置的自定义。
3.2 Pytest
Pytest 是一个开源测试框架,可能是目前使用最广泛的 Python 测试框架之一。 Pytest 也支持单元测试、功能测试和 API 测试。要运行它,您需要 Python 3.5 或更高版本。
优点:
1)允许紧凑和简单的测试套件。
2)通过使用插件具有高度可扩展性,例如:pytest-randomly、pytest-cov、pytest-django、pytest-bdd。
3)您还可以将 pytest html 插件添加到您的项目中,以使用一个简单的命令行选项打印 HTML 报告。
4)可以使用 Pytest 插件 pytest-xdist 并行运行测试。您也可以在此处阅读更多相关信息。
5)有一个非常大的社区。
6)支持夹具帮助您覆盖所有参数组合而无需重写测试用例,并且是管理步骤之间上下文的好方法。
缺点
兼容性不是 Pytest 的关键,因为虽然您可以使用 Pytest 轻松编写测试用例,但由于使用了 Pytest 的独特例程,您将无法在任何其他测试框架中使用它们。
3.3 TestProject
TestProject is 100% FREE complete automation framework with both cloud and local HTML reports. Using TestProject, you can easily develop test automation for mobile, web or generic purposes with the Python open source SDK. It supports Python version 3.6 or higher, and supports both Pytest and Unittest frameworks (you can read more about it here). TestProject includes all the dependencies required as part of the single cross-platform agent executable (You can watch this webinar recording to get started).
优点:
1)单一代理可执行文件,包括执行和开发移动、Web 和通用测试的测试自动化所需的所有 3rd 方库。
2)HTML/PDF 格式的免费自动报告(包括屏幕截图)。
3)可通过 RESTful API 访问执行历史记录。
4)始终保持最新且稳定的 Selenium/Appium 驱动程序版本。
5)用于 Web、Android、iOS 和通用测试的单一 SDK。
6)内置测试运行器和报告功能。
7)跨平台支持 Mac、Windows、Linux 和 Docker。
8)大型社区和支持:论坛、博客和内置实时聊天
缺点:
代理可以一次运行一个测试,因此对于并行测试,您需要使用 Docker 代理。
在离线模式下工作时,作为混合云的一部分启用的团队协作功能会受到限制。因此,与混合云上的无缝协作相反,在使用本地“本地”选项时,您需要自己实施协作,将测试保存在共享网络驱动器/git 上。
3.4 PyUnit (Unittest)
pyUnit (Unittest) 是一个受 JUnit 启发的 Python 单元测试框架。它是 Python 包中自带的默认 Python 测试框架,因此也是大多数开发人员开始测试时使用的框架。
优点:
1)由于它是标准 Python 库的一部分,因此无需安装额外的模块——它随 Python 包开箱即用。
2)提供简单灵活的测试用例执行。
3)快速生成测试报告,包括 XML 报告和 unittest-sml-reporting。
缺点:
1)测试代码的意图有时变得不清楚,因为它支持抽象。
2)需要大量的样板代码。
3)由于基于 Junit,使用的是驼峰命名法,而不是 Python 的 snake_case 命名约定
3.5 Nose2
Nose2 是 Nose 的继承者,基本上是 PyUnit(Unittest),但带有插件。 Nose2 通过各种插件扩展了 PyUnit 的功能,这些插件增加了对测试执行、测试发现、装饰器、夹具、参数化等的支持。
优点
1)易于上手,因为它扩展了 Python 库开箱即用的 PyUnit(Unittest)框架。
2)包括大量内置插件,可以让您的测试更快更容易。
3)使用 mp 插件启用并行测试。
4)自动收集测试,只要您遵循一些简单的指南来组织您的库和测试代码。
缺点:
1)缺乏广泛的文档,如果您刚刚开始,这可能会阻碍您。
2)与其他框架相比,并不是那么积极维护。
3.6 Behave
Behave 是最流行的 Python BDD(行为驱动开发)测试框架之一。尽管它不是 Cucumber 项目的正式组成部分,但它的功能与 Cucumber 框架非常相似。
优点
1)允许以可读的语言编写测试用例,从而在具有相似功能的团队之间轻松协作。
2)大量文档和支持可帮助您入门。
3)完全支持 Gherkin 语言——因此创建特征文件不需要任何技术知识。
4) 具有 Django 和 Flask 集成。
缺点:
1)不支持并行执行。
2)仅用于黑盒测试。
3.7 Lettuce
Lettuce 是另一个 Python BDD 框架,它基于 Cucumber。需要 Python 2.7.14 或更高版本。
优点:
1)支持 Gherkin 语言,因此即使是非技术团队成员也可以使用自然语言轻松创建测试。
2)与 Behave 类似,它主要用于黑盒测试,但也可用于更多测试类型。例如,Lettuce 可以测试各种服务器和数据库行为和交互。
缺点:
1)缺乏其他框架的一些功能丰富性,因此更适合小型项目。
2)它的支持和文档似乎没有得到维护。
3)需要项目的所有利益相关者之间进行专门的沟通:开发人员、质量保证人员和经理,以确保实施成功。
3.8 Testify
Testify 旨在取代常见的 Unittest 和 Nose 框架,并具有标准 Unittest 的高级功能。
优点:
1)用于单元测试、集成测试和系统测试。
2)对于熟悉 Unittest 的人来说,Testify 非常容易上手。
3)有丰富的插件。
4)与 Nose2 类似,Testify 支持测试发现。
5)夹具方法的简单语法。
缺点:
1)缺乏广泛的文档,因此初学者可能需要投资寻找相关资源。
2)并行测试并不容易实现。
网友评论