Pytest运行及其控制台输出信息

Pytest是一个流行的Python测试框架,它可以轻松地编写简单和复杂的测试,提供了丰富的断言、插件机制以及丰富的控制台输出信息,可以有效地将测试结果以易懂的方式显示给用户。以下是Pytest运行及其控制台输出信息的完整攻略:

安装Pytest

要使用Pytest,需要先安装它。可以使用以下命令来安装:

pip install pytest

编写测试脚本

在写测试脚本之前,需要先安装被测代码所需的依赖项。假设需要测试的代码在一个名为“example”的文件夹中,可以使用以下命令来安装其依赖项:

pip install -r example/requirements.txt

然后,编写test_.py形式的测试脚本,其中表示任何名称。在测试脚本中,使用Pytest提供的模块级别的fixture和assert语句来编写测试用例。测试脚本中所有以test_开头的函数都会被Pytest识别为测试用例。

下面是一个测试样例test_sample.py:

def func(x):
    return x + 1

def test_answer():
    assert func(3) == 5

这个测试用例是错误的,所以在运行这个测试用例之前,需要解决错误。

运行测试脚本

使用以下命令运行测试脚本:

pytest

在测试脚本所在的目录中,执行此命令将自动发现和运行测试脚本。如果测试用例预期的结果与实际结果不同,则测试用例会失败。

控制台输出信息

Pytest提供了丰富的控制台输出信息,用于向用户显示测试结果的详细信息,帮助用户快速识别错误并调试问题。

以下是Pytest的一些控制台输出信息的解释:

  • 以“.”表示测试用例已成功地通过测试;
  • 以“F”表示测试用例已经失败;
  • 以“x”表示测试用例被框架忽略,通常是由于fixture未被正确处理或者没有传递测试参数;
  • 以“s”表示测试用例在执行时发生了异常;
  • 显示每个测试用例的名称以及关于该用例的详细信息和错误信息;

示例1

以下是test_sample.py测试脚本在控制台输出信息:

pytest test_sample.py 
====================================== test session starts =======================================
platform win32 -- Python 3.6.8, pytest-6.0.0, py-1.9.0, pluggy-0.13.1
rootdir: C:\Users\Administrator\PycharmProjects\pytest_test
collected 1 item                                                                                    

test_sample.py F                                                                                 [100%]

============================================ FAILURES ============================================
_________________________________________ test_answer _________________________________________

    def test_answer():
>       assert func(3) == 5
E       assert 4 == 5
E        +  where 4 = func(3)

test_sample.py:5: AssertionError
=================================== short test summary info ===================================
FAILED test_sample.py::test_answer - assert 4 == 5
===================================== 1 failed in 0.08s =====================================

可以看到,测试脚本test_sample.py包含了一个测试用例test_answer()。这个测试用例包含了一个断言,但是断言没有通过。在控制台输出信息中,以“F”表示该测试用例已经失败,并显示了详细的错误信息。在错误信息中,可以看到断言检查的返回值(4)和期望值(5)。

示例2

可以使用以下命令来获取更多Pytest控制台输出信息:

pytest -v

以下是test_sample.py测试脚本在控制台输出信息:

pytest -v test_sample.py
====================================== test session starts =======================================
platform win32 -- Python 3.6.8, pytest-6.0.0, py-1.9.0, pluggy-0.13.1 -- c:\python\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\Administrator\PycharmProjects\pytest_test
collected 1 item                                                                                    

test_sample.py::test_answer FAILED                                                            [100%]

============================================ FAILURES ============================================
_________________________________________ test_answer _________________________________________

    def test_answer():
>       assert func(3) == 5
E       assert 4 == 5
E        +  where 4 = func(3)

test_sample.py:5: AssertionError
------------------------------------- Captured stdout setup -------------------------------------
WARNING: ExampleFixture not found in the current path
Running a fixture
------------------------------------- Captured stdout call -------------------------------------
print some details
------------------------------------- Captured stdout teardown -------------------------------------
fixture has shut down

=================================== short test summary info ===================================
FAILED test_sample.py::test_answer - assert 4 == 5
===================================== 1 failed in 0.05s =====================================

可以看到,使用“-v”命令将显示更多的控制台输出信息。此时,可以看到整个测试生命周期中的详细信息,包括fixture的执行和测试用例的执行过程。在这里可以看到,有一个名为ExampleFixture的fixture未找到,并且testing_setup()函数的输出详细信息被捕获。这些信息有助于用户分析测试用例不通过的原因。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytest运行及其控制台输出信息 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • 基于PyQt5实现图转文功能(示例代码)

    我将为你讲解“基于PyQt5实现图转文功能(示例代码)”的完整攻略,包含两条示例说明。 前言 图转文是指将一张图片转换为文字格式,以便于存储、发送和编辑。本教程将介绍基于PyQt5实现图转文功能的过程,供读者参考。 环境 Python 3.6 PyQt5 Pillow 实现步骤 步骤一:导入库 在Python脚本中导入PyQt5和Pillow库: from …

    python 2023年6月13日
    00
  • Python Pygame实战之超级炸弹人游戏的实现

    下面是“Python Pygame实战之超级炸弹人游戏的实现”完整攻略: 1. 背景介绍 超级炸弹人游戏是一款经典的街机游戏,经常能在游戏厅里看到。本文将介绍如何使用Python Pygame模块来实现超级炸弹人游戏。 2. 环境准备 在开始之前,需要准备好Python和Pygame模块。可以通过以下步骤来安装Pygame模块: 安装Python:根据自己的…

    python 2023年6月3日
    00
  • python中的循环结构问题

    下面是Python中循环结构的完整攻略: 循环结构的概述 在Python中,有两种类型的循环结构:for循环和while循环。循环结构可以让我们重复执行一些代码,直到满足一定条件时停止。 for循环 for循环是一种基于序列进行的循环结构,可以遍历任何序列(比如字符串、列表、元组等),也可以遍历任何可迭代对象(比如字典的keys和values等)。for循环…

    python 2023年5月14日
    00
  • python格式化字符串的实战教程(使用占位符、format方法)

    下面我将详细讲解Python格式化字符串的实战教程,包括占位符和format方法2种方式: 1. 使用占位符 占位符是指字符串中以百分号(%)表示的一段字符,在Python中可以使用占位符来格式化输出字符串。以下是Python常用的占位符: 占位符 含义 %s 字符串 %d 十进制整数 %f 浮点数 %x 十六进制整数 1.1 字符串类型的占位符 使用占位符…

    python 2023年6月5日
    00
  • Python中对数组集进行按行打乱shuffle的方法

    在Python中,使用NumPy库可以进行数组的处理,包括数组集合的打乱(shuffle)操作。下面是针对数组集按行打乱操作的完整攻略。 安装NumPy库 在使用NumPy库之前,需要先进行安装。可以通过pip命令进行安装: pip install numpy 创建数组集 使用NumPy库自带的numpy.array函数来创建数组集。下面是创建一个大小为3x…

    python 2023年6月3日
    00
  • python报错 Error:Non-zero exit code的问题

    以下是关于 Python 报错 Error: Non-zero exit code 的问题的完整攻略: 问题描述 在 Python 中,有时候会遇到 Error: Non-zero exit code 的报错。本文将详细介绍这个问题的原因和解决方法。 解决方法 以下是解决 Python 报错 Error: Non-zero exit code 的步骤: 查看…

    python 2023年5月13日
    00
  • Python 修改CSV文件实例详解

    让我们详细讲解“Python 修改CSV文件实例详解”的完整攻略。 更新CSV文件基础知识 CSV文件是指逗号分隔值文件,通常用于在计算机之间交换表格数据。每行表示为一行,而每个字段之间用逗号分隔。在Python中,我们可以使用内置的csv模块来处理CSV文件。 在处理CSV文件时,我们通常会涉及到以下操作: 读取CSV文件并获取所有行和列。 修改CSV文件…

    python 2023年6月3日
    00
  • 基于python的MD5脚本开发思路

    下面我将详细讲解基于Python的MD5脚本开发思路的完整攻略。 首先,我们需要明确一下MD5是什么。MD5是一种常用的哈希函数,用于给任意长度的信息生成一个128位的哈希值(或称为摘要),通常用于验证数据的完整性和对称加密。 接下来,我们便可以开始编写基于Python的MD5脚本了。下面是具体的步骤: 1、引入Python的hashlib模块,用于实现哈希…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部