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

yizhihongxing

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日

相关文章

  • Python常用编码的区别介绍

    当我们写Python代码时,有多种编码方式可供选择,而不同的编码方式之间也存在一些区别。下面我会逐一讲解常用的三种编码方式,它们分别是ASCII、UTF-8和ISO-8859-1。 ASCII编码 ASCII编码是最早的一种字符编码方式,它使用7个比特位来表示一个字符,总共可以表示128种不同的字符,包括26个英文字母、数字、符号等。 ASCII编码逐渐被淘…

    python 2023年5月20日
    00
  • Python列表list的详细用法介绍

    Python列表list的详细用法介绍 在Python中,列表(list)是一种常用的数据类型,它可以存储多个元素,而且列表的长度是动态的,可以随添加删除元素。本文将详细绍Python列表的用法,包括列表的创建、添加、删除、修改、排序、遍历、切片等。 列表的创建 在Python中可以使用方括号[]或者list()函数来创建一个。例如: # 创建一个空列表 m…

    python 2023年5月13日
    00
  • 如何在Python中隐藏和加密密码示例详解

    【如何在Python中隐藏和加密密码示例详解】 1. 为何需要隐藏和加密密码 在开发应用程序时,我们往往需要用户提交用户名和密码等敏感信息。但是,如果这些信息直接以明文的形式保存在代码中或者存储在数据文件中,就会存在泄露的风险。因此,我们需要将密码隐藏或加密,以保证用户的隐私安全。 2. 如何隐藏密码 隐藏密码可以通过编写配置文件、环境变量或者存储在数据库等…

    python 2023年5月20日
    00
  • Django ORM 查询管理器源码解析

    Django ORM是Django框架中的一个重要组件,用于管理数据库。其中,查询管理器是ORM的一个重要部分,用于查询数据库中的数据。以下是Django ORM查询管理器源码解析: 查询管理器基本用法 查询管理器是Django ORM中的一个对象,用于查询数据库中的数据。以下是查询管理器的基本用法: from django.db import models…

    python 2023年5月14日
    00
  • 基于Python中request请求得到的response的属性问题

    以下是关于“基于Python中request请求得到的response的属性问题”的完整攻略: 基于Python中request请求得到的response的属性问题 在Python中,我们可以使用requests模块发送HTTP请求,并获取响应。响应是一个包含服务器返回的数据的对象,它有许多属性可以访问。以下是Python中request请求得到的respo…

    python 2023年5月15日
    00
  • 批量获取及验证HTTP代理的Python脚本

    在本攻略中,我们将介绍如何使用Python批量获取及验证HTTP代理。以下是一个完整攻略,包括两个示例。 步骤1:获取代理列表 首先,需要获取代理列表。我们可以使用requests库来获取代理列表,并使用正则表达式来提取代理IP和端口号。 以下是示例代码,演示如何使用Python获取代理列表: import re import requests # 获取代理…

    python 2023年5月15日
    00
  • 详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法

    关于 Python 中的切片操作,包括 [-1]、[:-1]、[::-1]、[n::-1],我为您提供以下详解。 切片操作简介 在 Python 中,可以对一个序列(比如列表、字符串、元组等)进行切片操作,以取出其中的一部分,切片的语法如下: sequence[start:end:step] 其中,sequence 表示要进行切片的序列,start 表示切片…

    python 2023年6月6日
    00
  • python字典多条件排序方法实例

    请允许我来进行详细讲解。首先,我们需要了解Python中字典的基本特点,即它是一个无序的键值对集合。因此,如果我们需要对字典进行多条件排序,首先要明确一下排序的规则是什么。假设我们有一个字典列表如下: my_dict = [ {‘name’: ‘Alice’, ‘age’: 20, ‘city’: ‘New York’}, {‘name’: ‘Bob’, ‘…

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