使用pytest单元测试框架执行单元测试

Pytest 是一个功能强大且灵活的 Python 单元测试框架,它使编写、组织和运行测试变得更加简单。以下是 Pytest 的一些主要特点和优点:

简单易用:Pytest 提供了简洁而直观的语法,使编写测试用例变得非常容易。它支持使用 assert 语句进行断言,并提供了丰富的断言方法来验证测试结果。

自动发现测试用例:Pytest 能够自动发现和执行目录中的测试文件和测试函数。只需将测试文件命名为以 test_ 开头的文件,Pytest 就能够识别并执行其中的测试用例。

丰富的插件生态系统:Pytest 拥有丰富的插件生态系统,可以通过插件扩展其功能。这些插件可以用于生成报告、测试覆盖率、参数化测试等方面。

参数化测试:Pytest 支持使用 @pytest.mark.parametrize 装饰器来实现参数化测试,使得可以在一个测试函数中运行多个测试案例。

支持夹具(fixtures):夹具是一种在测试之前或之后执行的代码片段,用于准备测试环境或清理测试后的状态。Pytest 提供了强大的夹具功能,可以通过函数级别或模块级别来使用。

丰富的报告输出:Pytest 生成详细的测试报告,包括测试用例的结果、失败原因、执行时间等信息。这些报告可以帮助开发人员更轻松地诊断和修复问题。

Pytest 是一个灵活、简单且功能丰富的单元测试框架,适用于各种规模的项目,并且具有广泛的社区支持和文档资源。

下午我们举5个简单的pytest框架进行测试的实际案例:

1.测试一个简单的函数

复制代码
# 文件名:test_example.py

def add(x, y):
    return x + y

def test_add():
    assert add(1, 2) == 3
    assert add(5, 5) == 10

2.测试一个类的方法

复制代码
# 文件名:test_calculation.py

class Calculator:
    def add(self, x, y):
        return x + y

def test_calculator_add():
    calc = Calculator()
    assert calc.add(2, 3) == 5
    assert calc.add(5, 5) == 10

3.测试一个模块的功能

复制代码
# 文件名:test_strings.py

def test_uppercase():
    assert 'hello'.upper() == 'HELLO'

def test_split():
    s = 'hello world'
    assert s.split() == ['hello', 'world']

4.测试异常情况

复制代码
# 文件名:test_exceptions.py

def divide(x, y):
    if y == 0:
        raise ValueError("Cannot divide by zero")
    return x / y

def test_divide():
    with pytest.raises(ValueError):
        divide(10, 0)

5.测试使用参数化

复制代码
# 文件名:test_parametrize.py
import pytest

def add(x, y):
    return x + y

@pytest.mark.parametrize("x, y, expected", [(1, 2, 3), (5, 5, 10), (10, -5, 5)])
def test_add(x, y, expected):
    assert add(x, y) == expected

把以上几个程序文件分别存到指定的目录下,cmd进入到此目录,然后执行pytest即可执行这5个测试文件。测试结果如下:

希望以上的实例可以让大家对pytest单元测试框架有个基本的理解。

相关推荐
胜天半月子8 小时前
Python自动化测试 | 快速认识并了解pytest的基本使用
服务器·python·pytest
慧都小项10 小时前
Parasoft C/C++test如何在ARM DS-5环境中进行测试(下)
单元测试·parasoft·arm ds-5
JosieBook12 小时前
【SpringBoot】30 核心功能 - 单元测试 - JUnit5 单元测试简介与常用注解实战详解
spring boot·后端·单元测试
l1t16 小时前
对luasql-duckdb PR的测试
c语言·数据库·单元测试·lua·duckdb
卓码软件测评1 天前
单元测试、集成测试和系统测试的联系和区别是什么?
功能测试·单元测试·测试用例·集成测试·可用性测试
安冬的码畜日常1 天前
【JUnit实战3_20】第十一章:用 Gradle 运行 JUnit 测试实战
测试工具·junit·单元测试·gradle·软件构建·groovy·junit5
安冬的码畜日常1 天前
【JUnit实战3_19】第十章:用 Maven 3 运行 JUnit 测试(下)
java·测试工具·junit·单元测试·maven·junit5
董广明1 天前
单元测试(JUnit、Mockito、PowerMock )
java·经验分享·junit·单元测试
aloha_7892 天前
软件测试工程师面试准备
单元测试·压力测试
安冬的码畜日常2 天前
【JUnit实战3_13】第八章:mock 对象模拟技术在细粒度测试中的应用(上)
测试工具·junit·单元测试·junit5·mock模拟·mock对象·mock objects