使用 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
现在,您已经virtualenv通过 . 安装好了软件包pip。您需要在终端中创建一个名为 的文件夹tutorial,并创建一个名为 的虚拟环境:venv
mkdir tutorial
cd tutorial/
virtualenv venv
创建虚拟环境后,您需要通过在终端中输入以下 Linux 命令来启用新创建的虚拟环境:
source venv/bin/activate
安装 PyTest
现在让我们在终端中名为 `<folder_name>` 的文件夹中,将 PyTest测试框架安装到您的虚拟环境中:tutorial
pip install pytest
太好了,安装完 pytest 之后,你可以在终端中输入以下命令来测试 pytest 是否正常工作:
pytest
PyTest安装成功后,您应该会看到类似这样的内容。
恭喜你成功将其安装Pytest到项目中。放松一下,我们继续编写你的第一个测试用例。
编写你的第一个测试用例
好了,欢迎回来!首先,我将让你们在pytest中创建你们的第一个测试用例。
但首先,我们应该创建一个名为test_tutorial.py:的文件
touch test_tutorial.py
默认情况下,pytest 会识别以 . 开头的测试文件test_something.py。
现在我们将创建一个名为 `test` 的测试用例test_return_sum来测试该return_sum函数:
def test_return_sum():
c = return_sum(1, 4)
assert c == 5
现在让我们在终端中运行以下命令。
pytest
你会注意到输出结果旁边会有一个F。test_tutorial.py
这F意味着某个测试用例失败了,该测试用例被称为test_return_sum。
PyTest 的一个优点是,它可以提供关于如何重构代码的有用输出。
在这种情况下,错误在于仅仅定义了一个return_sum函数。让我们通过定义函数来解决这个问题return_sum:
def return_sum(a, b):
return a+b
现在pytest在终端中再次运行该命令,看看测试用例是否通过。
.你会注意到,在输出结果中,除了前面的符号之外,F还会显示一个符号test_tutorial.py。
这.意味着测试用例已通过,因为你已经满足了测试用例通过的要求。
恭喜你用pytest编写了你的第一个测试用例!
结论
希望这篇文章对你开始使用 Pytest 有所帮助。
Pytest 框架实际上非常庞大,我们仅仅触及了它的冰山一角。
在本系列文章的第 2 部分和第 3 部分中,我将深入探讨使用 pytest 的各种方法或技巧,以及如何将 TDD 融入其中。
如果你喜欢我的文章,请订阅Max Adventurer 的新闻简报,每周获取我在Python、创业和Web 开发领域发现的精彩内容。
您也可以关注我,获取我关于Dev 的文章的最新更新。
本文最初发布于 Max 的博客,标题为“使用 PyTest 进行测试驱动开发 - 第一部分”,图片来自 Unsplash,摄影师为 Hans-Peter Gauster。


