39 项目实践之代码实现与测试

在上一篇教程中,我们对项目的结构设计进行了深入探讨。本篇将聚焦于项目的代码实现和测试,帮助你将设计转化为实际可运行的程序。我们将通过一个小示例来演示如何编写代码、组织模块并进行单元测试。

项目背景

假设我们正在开发一个简易的“待办事项”管理器,其核心功能包括添加待办事项、查看待办事项列表和标记待办事项为完成。我们讨论的重点将在于如何实现这些功能,保证代码可读性和可测试性。

1. 代码实现

1.1 项目结构

在上一篇中我们设计了如下的项目结构:

1
2
3
4
5
todo_app/

├── todo.py # 核心逻辑实现
├── test_todo.py # 测试文件
└── README.md # 项目说明

1.2 todo.py 代码实现

我们将实现 add_taskview_taskscomplete_task 这三个主要功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# todo.py

class Todo:
def __init__(self):
self.tasks = []

def add_task(self, task):
"""添加新的待办事项"""
if task:
self.tasks.append({"task": task, "completed": False})
print(f"任务'{task}'已添加!")
else:
print("任务内容不能为空!")

def view_tasks(self):
"""查看所有待办事项"""
if not self.tasks:
print("待办事项列表为空!")
else:
for index, task in enumerate(self.tasks):
status = "✓" if task["completed"] else "✗"
print(f"{index + 1}. [{status}] {task['task']}")

def complete_task(self, index):
"""标记待办事项为完成"""
if 0 <= index < len(self.tasks):
self.tasks[index]["completed"] = True
print(f"任务'{self.tasks[index]['task']}'已标记为完成!")
else:
print("无效的任务索引!")

在上面的代码中,我们创建了一个 Todo 类来包含所有待办事项的逻辑。它有一个列表 tasks 用来存储所有任务,每个任务都是一个字典,包含任务内容和完成状态。

1.3 主程序逻辑(可选)

为了测试我们的功能,可以在 todo.py 中添加以下代码:

1
2
3
4
5
6
7
if __name__ == "__main__":
todo_app = Todo()
todo_app.add_task("学习Python")
todo_app.add_task("完成作业")
todo_app.view_tasks()
todo_app.complete_task(0)
todo_app.view_tasks()

这个部分是可选的,它允许我们直接运行 todo.py 来测试功能。

2. 测试代码

在任何项目中,编写测试用例是确保代码质量的关键步骤。我们将使用 Python 的内置 unittest 模块来编写测试。

2.1 test_todo.py 测试实现

test_todo.py 文件中,我们将为 Todo 类编写一些单元测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# test_todo.py
import unittest
from todo import Todo

class TestTodo(unittest.TestCase):
def setUp(self):
"""在每个测试之前执行的代码"""
self.todo = Todo()

def test_add_task(self):
"""测试添加任务功能"""
self.todo.add_task("学习Python")
self.assertEqual(len(self.todo.tasks), 1)

def test_view_tasks_empty(self):
"""测试查看空任务列表"""
self.todo.view_tasks() # 测试时可以验证输出

def test_complete_task(self):
"""测试标记任务为完成"""
self.todo.add_task("完成作业")
self.todo.complete_task(0)
self.assertTrue(self.todo.tasks[0]["completed"])

if __name__ == "__main__":
unittest.main()

2.2 运行测试

要运行测试,我们可以在命令行中执行以下命令:

1
python -m unittest test_todo.py

这将会运行 test_todo.py 中定义的所有测试用例,并显示测试的结果。

结论

在本篇教程中,我们实现了一个简单的待办事项管理器,并为其编写了基本的单元测试。我们讨论了代码实现的结构、各个功能的实现以及如何使用 unittest 模块进行测试。下篇教程中,我们将讨论如何优化和扩展这个项目,提升其功能和可维护性。希望大家能够通过实践不断提高自己的编程能力!

39 项目实践之代码实现与测试

https://zglg.work/python-zero/39/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论