Pytest 教程:入门介绍和环境搭建准备

2023-12-04

Pytest 介绍

Pytest 是一个流行的 Python 测试框架,用于编写、组织和运行各种类型的自动化测试。它提供了丰富的功能,使您能够轻松编写和管理测试用例,以及生成详细的测试报告。以下是 Pytest 的一些主要特点和优势:

  1. 简单和易用 :Pytest 的设计使得编写测试用例变得简单且易于理解。您可以使用 Python 的标准 assert 语句来编写测试断言,而不需要学习新的断言语法。

  2. 自动发现测试用例 :Pytest 可以自动发现和运行项目中的测试用例,而不需要显式配置测试套件。测试用例文件可以命名为 test_*.py *_test.py ,或使用特定的测试函数命名规范。

  3. 丰富的插件生态系统 :Pytest 可以通过插件扩展其功能。有许多第三方插件可用,以满足不同测试需求,如 Allure 报告、参数化、覆盖率分析等。

  4. 参数化测试 :Pytest 支持参数化测试,允许您运行相同的测试用例多次,但使用不同的参数。这可以减少代码重复,提高测试覆盖率。

  5. 异常和故障定位 :Pytest 提供详细的错误和异常信息,有助于您更容易地定位和解决问题。它还提供详细的回溯(traceback)信息。

  6. 并行测试执行 :Pytest 支持并行执行测试用例,提高了测试执行的速度,特别是在大型项目中。

  7. 多种报告格式 :Pytest 支持多种测试报告格式,包括终端输出、JUnit XML、HTML 报告和 Allure 报告等。这些报告可以帮助您可视化测试结果。

  8. 命令行选项 :Pytest 提供了丰富的命令行选项,以定制测试运行的行为,包括过滤、重试、覆盖率分析等。

  9. 集成性 :Pytest 可以与其他测试框架和工具(如 Selenium、Django、Flask 等)以及持续集成系统(如 Jenkins、Travis CI 等)轻松集成。

  10. 活跃的社区 :Pytest 拥有一个活跃的社区,有广泛的文档和教程可供学习和参考。您还可以在社区中获得支持和解决问题。

总之,Pytest 是一个强大且灵活的测试框架,适用于各种规模和类型的项目。它的易用性、自动化能力以及丰富的插件使它成为 Python 测试领域的首选工具之一。

官方网站:https://docs.pytest.org/en/latest/

python 虚拟环境介绍

Python 虚拟环境(Virtual Environment)是一种机制,用于在单个 Python 安装中创建和管理多个隔离的开发环境。虚拟环境有助于解决不同项目之间的依赖冲突问题,确保每个项目都能够使用其独立的 Python 包和库,而不会相互干扰。以下是如何创建和使用 Python 虚拟环境的步骤:

  1. 安装虚拟环境工具 : 在开始之前,确保您已安装 Python 的虚拟环境工具。在 Python 3.3 及更高版本中, venv 模块已经内置,可以使用它来创建虚拟环境。如果您使用较旧版本的 Python,您可以安装 virtualenv 工具。

    对于 Python 3.3+, venv 工具已内置,无需额外安装。

    对于 Python 2.x,可以使用以下命令安装 virtualenv 工具:

    pip install virtualenv
  2. 创建虚拟环境 : 打开终端,移动到您希望创建虚拟环境的目录,并运行以下命令以创建虚拟环境:

    使用 venv (适用于 Python 3.3+):

    python -m venv myenv

    使用 virtualenv (适用于 Python 2.x):

    virtualenv myenv

    在上述命令中, myenv 是虚拟环境的名称,您可以自定义名称。

  3. 激活虚拟环境 : 要开始使用虚拟环境,需要激活它。在不同的操作系统中,激活命令略有不同:

    一旦虚拟环境激活,您会在终端提示符前看到虚拟环境的名称,表示您已进入虚拟环境。

    • 在 macOS 和 Linux 上:

      source myenv/bin/activate
    • 在 Windows 上(使用 Command Prompt):

      myenv\Scripts\activate
    • 在 Windows 上(使用 PowerShell):

      .\myenv\Scripts\Activate.ps1
  4. 在虚拟环境中安装依赖 : 在虚拟环境中,您可以使用 pip 安装项目所需的任何 Python 包和库,这些依赖将与该虚拟环境关联。例如:

    pip install requests
  5. 使用虚拟环境 : 在虚拟环境中工作时,您可以运行 Python 脚本和使用安装在虚拟环境中的包。这确保了您的项目在独立的环境中运行,不会与全局 Python 安装产生冲突。

  6. 退出虚拟环境 : 要退出虚拟环境,只需在终端中运行以下命令:

    deactivate

    这将使您返回到全局 Python 环境。

通过使用虚拟环境,您可以在不同项目之间维护干净的依赖关系,并确保项目的稳定性和隔离性。这是 Python 开发中的一个良好实践。

项目依赖

需提前安装好以下环境

  • [x] python, demo 版本为 v3.11.6

大家安装 python3.x 以上的版本即可

项目目录结构

以下为一个 Pytest 接口自动化测试项目的目录结构示例:

后续 demo 项目会引入 allure 报告,所以会多出一个 allure-report 目录

Pytest-allure-demo/    ├── tests/                  # 存放测试用例文件    │   ├── test_login.py       # 示例测试用例文件    │   ├── test_order.py       # 示例测试用例文件    │   └── ...    ├── data/                   # 存放测试数据文件(如 JSON、CSV 等)    │   ├── dev_test_data.json      # 开发环境测试数据文件    │   ├── prod_test_data.json      # 生产环境测试数据文件    │   ├── ...    ├── config/    │   ├── dev_config.json  # 开发环境配置文件    │   ├── prod_config.json  # 生产环境配置文件    │   ├── ...    ├── conftest.py             # Pytest 的全局配置文件    ├── pytest.ini              # Pytest 配置文件    ├── requirements.txt        # 项目依赖项文件    └── allure-report/          # 存放 Allure 报告

参考

  • Pytest: https://docs.pytest.org/en/latest/

更多信息

  • 点击阅读原文获取更多信息

  • 访问我的个人博客:https://naodeng.tech/

  • 我的QA自动化快速启动项目页面:https://github.com/Automation-Test-Starter

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时, 请及时加入群: 786229024 ,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】 在这里插入图片描述
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。 在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pytest 教程:入门介绍和环境搭建准备 的相关文章

  • 如何使用 pytest-mock 或 magicmock 模拟导入的对象

    我正在尝试理解mock monkeypatch pytest mock能力 让我知道这是否可能 如果没有 请建议我如何测试此代码 我的代码结构 app init py some module1 init py some module2 in
  • 沙箱中的 Bazel 和 py_test - 有什么方法可以定义输出?

    我正在运行多个py test 项目数量的配置 由于它们数量众多 默认的沙箱机制似乎很方便 测试不会相互干扰 并且免费并行运行 不过 这是有代价的 据我了解 沙箱将导致 bazel 在临时目录中运行测试 结合py test规则未定义任何out
  • 如果定义了构造函数,pytest 跳过测试类

    我有以下通过 py test 运行的单元测试代码 构造函数的存在会使整个类在运行时跳过 py test v s 已收集 0 件 已跳过 1 件 谁能向我解释 py test 的这种行为吗 我有兴趣了解 py test 行为 我知道不需要构造
  • 在 pytest 测试中记录日志

    我想在测试函数中放置一些日志语句来检查一些状态变量 我有以下代码片段 import pytest os import logging logging basicConfig level logging DEBUG mylogger logg
  • 如何在 pytest 中仅运行未标记的测试

    我的 python 测试代码中有几个标记 pytest mark slowtest pytest mark webtest pytest mark stagingtest 我可以使用标记有选择地运行测试 例如pytest m slowtes
  • 在函数装饰器中使用 pytest 夹具

    我想为我的测试函数构建一个有多种用途的装饰器 其中之一是帮助将属性添加到生成的junitxml 我知道有一个fixture https docs pytest org en latest usage html record property
  • 如何使用 django-pytest 跟踪 Django 重定向?

    在设置一个档案索引视图 https docs djangoproject com en 2 0 ref class based views generic date based django views generic dates Arch
  • py.test 无法导入我的模块

    我正在努力正确导入 python 我想要实现的是拥有一个包含多个源文件的模块和一个包含单元测试的测试文件夹 无论我做什么 我都无法让 py test 3 执行我的测试 我的目录布局如下所示 module init py testclass
  • 在测试中检查 CLI 的退出代码

    我正在为命令行工具编写自动化测试 本质上 我想使用各种选项调用 CLI 并测试退出代码和 或输出 我的测试如下所示 from mymodule cli tool import main def test args capfd with py
  • 如何从视图中删除单元测试的“@oidc.login_required”?

    I use 烧瓶样机 questions tagged flask oidc用于用户登录和pytest questions tagged pytest供测试用 对于单元测试 我想 删除 oidc require login 我怎样才能做到这
  • 如何访问 pytest 夹具中的所有标记?

    我正在使用 pytest 我想用标记来标记我的测试 这些标记将指定固定装置要在驱动程序中加载哪个页面 这可以轻松地与行为上下文对象一起使用 但我找不到如何使用 pytest 来做到这一点 以这段代码为例 import pytest pyte
  • 当日志在不同进程中发出时,caplog 中的消息为空

    我正在使用 log cli true 运行测试 剧本 import logging import sys from multiprocessing import Process logging basicConfig stream sys
  • 将固定装置传递给 pytest 中的测试类

    考虑以下伪代码来演示我的问题 import pytest pytest fixture def param1 return smth yield wilma pytest fixture def param2 return smth yie
  • 如何将 pytest 装置与 django TestCase 一起使用

    我如何在TestCase方法 类似问题的几个答案似乎暗示我的例子应该有效 import pytest from django test import TestCase from myapp models import Category py
  • 使用 pytest 动态控制测试顺序

    我想使用逻辑来控制测试的顺序 该逻辑将在它们已经运行时动态地重新排序它们 我的用例是这样的 我使用 xdist 并行化我的测试 每个测试都使用来自公共且有限池的外部资源 某些测试比其他测试使用更多的资源 因此在任何给定时间 当只有一小部分资
  • Pytest报告摘要显示错误信息

    我对 pytest 挂钩和插件相对较新 我无法弄清楚如何让我的 pytest 代码为我提供测试执行摘要以及失败原因 考虑代码 class Foo def init self val self val val def test compare
  • GET 错误:ModuleNotFoundError:没有名为“api”的模块

    当我尝试运行 pytest 命令时出现错误 错误是当我在 docker 上运行应用程序时 当我在本地执行时 它可以工作 还有另一个好奇心 swagger 和 de requests 工作正常 只是测试文件不行 我已经尝试过 python m
  • pytest 报告太多断言失败

    有没有办法让 pytest 只输出单行断言错误 当您的模块带有断言时 就会出现此问题 如果这些断言失败 它将转储导致断言失败的整个函数 gt assert r status code 200 f idtest tools now wrong
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • 在 pytest 中,如何判断测试是否失败? (来自“请求”)

    我正在使用 Selenium 和 PYTEST 来测试网站 我想在测试失败时 并且仅在测试失败时 截取页面的屏幕截图 有什么办法可以做到这一点吗 当谈到这个时 文档很安静 或者我找不到它 我认为它会是这样的 request function

随机推荐