发布于 2026-01-06 1 阅读
0

Test-Driven Development with PyTest - Part 1 Introduction Change in Perception What is PyTest? Setup and Configuration Writing Your First Test Case Conclusion Reference DEV's Worldwide Show and Tell Challenge Presented by Mux: Pitch Your Projects!

使用 PyTest 进行测试驱动开发 - 第一部分

介绍

认知变化

什么是 PyTest?

设置和配置

编写你的第一个测试用例

结论

参考

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

介绍

这将是一个分为三部分的系列教程,适合任何想要快速掌握并使用 Pytest 集成 TDD 测试实践的人。

我第一次接触 TDD 是在大学里的一门软件工程课程上。

教授当时正在通过JUnit引入 TDD ,而我觉得 JUnit 的设置和配置非常麻烦。

而且我看不出它作为开发实践的价值。我只是把它当作一项不错的技能,但并不认为它在软件开发中会用到。

认知变化

每当代码中出现错误时,调试代码都会让我感到沮丧,这促使我采用测试驱动开发(TDD)。

我需要不断地了解代码中出了什么问题,这可能需要我花几个小时来查找程序中的错误。

然后手动测试,之后再提交到git以修复代码中的错误。

因此,我寻求一种更好的方法,通过引入 TDD 来简化我的调试过程。

我通过阅读《代码整洁之道》《Python 测试驱动开发》《Python 测试与 PyTest》等书籍,慢慢地开始学习 TDD

我的知识不断增长,并通过参加 JuniorDev SG 的开发者训练营,与其他开发者一起完成代码练习,得到了进一步的巩固。

什么是 PyTest?

Pytest是一个测试框架。

它减少了创建测试用例所需的样板代码量。

与 Python 自带的默认测试框架相比,它更容易学习。

它名为Unittest,是基于Java 中的JUnit测试框架设计的。

设置和配置

好的,在开始创建测试用例之前,我们需要设置虚拟环境并安装pytest才能开始。

设置虚拟环境

首先,我们需要安装名为virtualenv.

我假设你使用的是基于 Linux 的系统或者像REPL这样的网站上的在线云 IDE 。

如果您已经安装了该软件并在终端中virtualenv创建了一个名为“虚拟环境”的程序,则鼓励您继续操作:venv

pip install virtualenv
Enter fullscreen mode Exit fullscreen mode

现在,您已经virtualenv通过 . 安装好了软件包pip。您需要在终端中创建一个名为 的文件夹tutorial,并创建一个名为 的虚拟环境:venv

mkdir tutorial
cd tutorial/
virtualenv venv
Enter fullscreen mode Exit fullscreen mode

创建虚拟环境后,您需要通过在终端中输入以下 Linux 命令来启用新创建的虚拟环境:

source venv/bin/activate
Enter fullscreen mode Exit fullscreen mode

安装 PyTest

现在让我们在终端中名为 `<folder_name>` 的文件夹中,将 PyTest测试框架安装到您的虚拟环境中:tutorial

pip install pytest
Enter fullscreen mode Exit fullscreen mode

太好了,安装完 pytest 之后,你可以在终端中输入以下命令来测试 pytest 是否正常工作:

pytest
Enter fullscreen mode Exit fullscreen mode

PyTest安装成功后,您应该会看到类似这样的内容。

pytest 1

恭喜你成功将其安装Pytest到项目中。放松一下,我们继续编写你的第一个测试用例。

编写你的第一个测试用例

好了,欢迎回来!首先,我将让你们在pytest中创建你们的第一个测试用例。

但首先,我们应该创建一个名为test_tutorial.py:的文件

touch test_tutorial.py
Enter fullscreen mode Exit fullscreen mode

默认情况下,pytest 会识别以 . 开头的测试文件test_something.py

现在我们将创建一个名为 `test` 的测试用例test_return_sum来测试该return_sum函数:

def test_return_sum():
    c = return_sum(1, 4)

    assert c == 5

Enter fullscreen mode Exit fullscreen mode

现在让我们在终端中运行以下命令。

pytest
Enter fullscreen mode Exit fullscreen mode

你会注意到输出结果旁边会有一个F。test_tutorial.py

pytest 2

F意味着某个测试用例失败了,该测试用例被称为test_return_sum

PyTest 的一个优点是,它可以提供关于如何重构代码的有用输出。

在这种情况下,错误在于仅仅定义了一个return_sum函数。让我们通过定义函数来解决这个问题return_sum

def return_sum(a, b):
    return a+b

Enter fullscreen mode Exit fullscreen mode

现在pytest在终端中再次运行该命令,看看测试用例是否通过。

pytest 3

.你会注意到,在输出结果中,除了前面的符号之外,F还会显示一个符号test_tutorial.py

.意味着测试用例已通过,因为你已经满足了测试用例通过的要求。

恭喜你用pytest编写了你的​​第一个测试用例!

恭喜!

结论

希望这篇文章对你开始使用 Pytest 有所帮助。

Pytest 框架实际上非常庞大,我们仅仅触及了它的冰山一角。

在本系列文章的第 2 部分和第 3 部分中,我将深入探讨使用 pytest 的各种方法或技巧,以及如何将 TDD 融入其中。

如果你喜欢我的文章,请订阅Max Adventurer 的新闻简报,每周获取我在Python创业Web 开发领域发现的精彩内容。

您也可以关注我,获取我关于Dev 的文章的最新更新。

本文最初发布于 Max 的博客,标题为“使用 PyTest 进行测试驱动开发 - 第一部分”图片来自 Unsplash,摄影师为 Hans-Peter Gauster。

参考

文章来源:https://dev.to/steelwolf180/test-driven-development-with-pytest-part-1-4haj