在上一篇教程中,我们对项目的结构设计进行了深入探讨。本篇将聚焦于项目的代码实现和测试,帮助你将设计转化为实际可运行的程序。我们将通过一个小示例来演示如何编写代码、组织模块并进行单元测试。
项目背景
假设我们正在开发一个简易的“待办事项”管理器,其核心功能包括添加待办事项、查看待办事项列表和标记待办事项为完成。我们讨论的重点将在于如何实现这些功能,保证代码可读性和可测试性。
1. 代码实现
1.1 项目结构
在上一篇中我们设计了如下的项目结构:
1 2 3 4 5
| todo_app/ │ ├── todo.py # 核心逻辑实现 ├── test_todo.py # 测试文件 └── README.md # 项目说明
|
1.2 todo.py
代码实现
我们将实现 add_task
、view_tasks
和 complete_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
|
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
| 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
模块进行测试。下篇教程中,我们将讨论如何优化和扩展这个项目,提升其功能和可维护性。希望大家能够通过实践不断提高自己的编程能力!