python从0快速上手(十)文件和异常处理2
Python学习:文件和异常处理2
在上一章中,我们探索了文件操作的奥秘和异常处理的艺术。现在,让我们继续我们的冒险,深入模块化编程的森林,然后勇敢地跳入代码测试的激流。
3. 模块化编程
模块化编程就像是乐高积木,它允许我们将复杂的程序分解成小块,每一块都是一个独立的模块。这些模块可以是函数、类或者整个文件,它们可以被重复使用和轻松地组合在一起。
导入模块:
在Python中,你可以使用import
语句来导入模块。
# 导入内置模块
import math
# 使用模块的函数
print(math.sqrt(16)) # 输出:4.0
导入特定的函数或类:
你可以从模块中导入特定的函数或类。
# 从模块中导入特定的函数
from math import sqrt
# 使用导入的函数
print(sqrt(16)) # 输出:4.0
创建自定义模块:
你可以创建自己的模块,只需将代码保存在.py
文件中即可。
# my_module.py
def greet(name):
print(f"Hello, {name}!")
# 使用自定义模块
import my_module
my_module.greet("Kimi")
包:
包是模块的集合,它们通常用于组织大型项目。
# my_package/
# my_package/__init__.py
# my_package/module1.py
# my_package/module2.py
# module1.py
def function1():
print("这是函数1")
# 使用包中的模块
from my_package import module1
module1.function1()
实例:创建一个Calculator
包
# calculator/
# calculator/__init__.py
# calculator/arithmetic.py
# arithmetic.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
# 使用包
from calculator import arithmetic
print(arithmetic.add(5, 3)) # 输出:8
print(arithmetic.subtract(5, 3)) # 输出:2
在这个例子中,我们创建了一个名为Calculator
的包,它包含了一个名为arithmetic
的模块。
4. 代码测试
代码测试就像是给代码做体检,它能帮助我们确保代码按照预期工作,并且在未来的修改中不会引入新的错误。
单元测试:
单元测试是针对程序中最小的可测试单元进行检查和验证的过程。
# test_math.py
import unittest
import math
class TestMathFunctions(unittest.TestCase):
def test_sqrt(self):
self.assertEqual(math.sqrt(16), 4)
self.assertNotEqual(math.sqrt(16), 5)
def test_pow(self):
self.assertEqual(math.pow(2, 3), 8)
self.assertNotEqual(math.pow(2, 3), 7)
if __name__ == '__main__':
unittest.main()
在这个例子中,我们使用了unittest
模块来测试math
模块中的sqrt
和pow
函数。
断言:
断言是单元测试中的一种声明,它验证代码是否按预期工作。
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
if __name__ == '__main__':
unittest.main()
测试驱动开发(TDD):
测试驱动开发是一种软件开发流程,它要求先编写单元测试,然后编写能够通过这些测试的代码。
# calculator.py
class Calculator:
def add(self, a, b):
return a + b
# test_calculator.py
import unittest
from calculator import Calculator
class TestCalculator(unittest.TestCase):
def setUp(self):
self.calc = Calculator()
def test_add(self):
self.assertEqual(self.calc.add(5, 3), 8)
if __name__ == '__main__':
unittest.main()
在这个例子中,我们首先编写了Calculator
类的单元测试,然后实现了Calculator
类。
实例:创建一个BlogPost
类并进行测试
# blog_post.py
class BlogPost:
def __init__(self, title, content):
self.title = title
self.content = content
def display(self):
print(f"Title: {self.title}")
print(self.content)
# test_blog_post.py
import unittest
from blog_post import BlogPost
class TestBlogPost(unittest.TestCase):
def test_display(self):
post = BlogPost("Hello World", "This is my first blog post.")
post.display()
self.assertEqual(post.title, "Hello World")
self.assertEqual(post.content, "This is my first blog post.")
if __name__ == '__main__':
unittest.main()
在这个例子中,我们创建了一个BlogPost
类,并编写了单元测试来验证它的display
方法。
代码覆盖率:
代码覆盖率是衡量测试覆盖代码程度的指标。
# 运行测试并生成覆盖率报告
coverage run -m unittest test_blog_post
coverage report
这将运行单元测试并生成一个覆盖率报告,显示测试覆盖了代码的百分比。
小结
模块化编程和代码测试是确保代码质量和可维护性的重要工具。模块化编程让我们的代码更加组织有序,而代码测试则确保我们的代码按预期工作。
现在,你已经掌握了Python中模块化编程和代码测试的基础。但是,这只是冰山一角。在编程的世界里,还有更多高级的概念等着你去探索。编程就像是一场冒险,而你已经迈出了第一步。祝你在编程的世界里旅途愉快!🐍💻