使用pytest实现功能测试自动化。pytest自动化测试框架介绍
作者:互联网
当今的现代企业需要更快的软件功能发布,以生产高质量的产品,并在不牺牲软件质量的情况下快速进入市场。为了确保成功部署,加速发布新功能或修复现有功能中的错误需要严格的端到端软件测试。虽然手动测试可用于小型应用程序或软件,但大型和复杂的应用程序需要专用的资源和技术,如 python 测试框架、自动化测试工具等,以确保在更短的时间内实现最佳的测试覆盖率和更快的质量发布。PyTest是一个测试框架,允许个人用Python编写测试代码。它使您能够为数据库、API 和用户界面创建简单且可扩展的测试用例。PyTest 主要用于编写 API 测试。它有助于开发从简单的单元测试到复杂的功能测试的测试。根据Future Market Insights集团发布的报告,到2032年底,全球自动化测试市场预计将以14.3%的复合年增长率增长,市值将达到936亿美元。
为什么选择 Pytest?
选择正确的测试框架可能很困难,并且依赖于可行性、复杂性、可伸缩性和框架提供的功能等参数。 PyTest 是测试自动化工程师的首选测试框架,对 Python 基础知识有很好的了解。使用 PyTest 框架,您可以创建高覆盖率单元测试、复杂功能测试和验收测试。除了作为用于测试自动化的极其通用的框架之外,PyTest 还具有大量的测试执行功能,例如参数化、标记、标记、并行执行和依赖项。
- 使用 Pytest 作为测试框架时没有样板文件。
- Pytest 可以运行用 unittest、doctest 和 nose 编写的测试。
- Pytest 支持用于行为驱动测试的插件。
- 有 150 多个插件可用于支持不同类型的测试自动化。
下图显示了 Pytest 框架的典型结构。
Pytest 根框架。
如上所示,在结构中,框架核心组件的业务逻辑完全独立于 Pytest 组件。Pytest 利用核心框架,就像在测试脚本中实例化对象并调用它们的函数一样。测试脚本文件名应以“test_”开头或以“_test”结尾。测试函数名称也应采用相同的格式。Pytest 中的报告可以通过 Pytest-HTML 报告来处理。
重要的 pytest 功能
1. pytest 夹具
Pytest最突出的功能是Fixtures。顾名思义,夹具是 pytest 中使用的装饰器函数,用于生成需要安排的特定条件才能成功运行测试。条件可以是任何前提条件,例如创建所需类的对象,将应用程序置于特定状态,在单元测试的情况下启动模拟器,初始化依赖项等。夹具还负责拆除或还原测试执行完成后生成的条件。通常,夹具负责测试的设置和拆卸条件。
夹具范围
设置和拆卸不必仅用于测试功能。设置的范围可能因测试功能而异,也可能与整个测试会话一样大。这意味着每个定义的范围仅执行一次设置-拆卸。为了实现相同的目的,我们可以定义范围以及夹具装饰器,即会话、模块、类和函数。
夹具用途
Pytest 提供了隐式使用灯具或使用 autouse 参数显式调用灯具的灵活性。要默认调用夹具函数,需要将 autouse 参数值设置为 True,否则设置为 False。
2. Conftest.py
测试框架中使用的所有夹具通常都以 conftest.py 定义。它是任何 Pytest 执行的入口点。夹具不必是自动使用的=True。所有定义的夹具都可以由所有测试文件访问。conftest.py 需要放在 Pytest 框架的根目录中。
3. Pytest 钩子
Pytest 提供了许多钩子,这些钩子将被调用以执行特定的设置。钩子是刚好产生一次的生成器函数。用户还可以为 Pytest 钩子编写包装器。
4. 标记
Pytest 提供了标记,用于根据功能、范围、测试类别等对一组测试进行分组。可以根据标记自动筛选测试执行。即接受、回归套装、登录测试等。标记还充当参数化测试的推动因素。将对作为参数传递的所有参数执行测试。请注意,Pytest 将一个参数的测试视为完全独立的测试。许多事情都可以用标记来实现,比如标记要跳过的测试,在某些条件下跳过,取决于特定的测试等。
5. 断言
Pytest 不要求测试脚本具有其断言。它可以完美地与Python内置断言一起工作。
6.皮特测试.ini
所有默认配置数据都可以放在pytest.ini中,并且conftest可以读取相同的数据,而无需任何特定的实现。
PyTest 支持大量插件,通过这些插件,几乎任何级别的复杂系统都可以实现自动化。Pytest 的一个主要好处是,任何类型的结构实现都是使用原始 Python 代码完成的,没有任何样板代码。这意味着在 Pytest 中实现任何东西就像在 Python 中实现任何东西一样灵活和干净。
在更短的开发周期中,测试自动化提供了几个对生成高质量应用程序至关重要的好处。它减少了在手动测试方法中发生不可避免的人为错误的可能性。自动化测试可提高软件质量,并降低缺陷危及交付时间的可能性。