【Python编程:从入门到实践】第十一章:测试代码

本文介绍了如何编写Python函数处理城市和国家数据,并通过单元测试确保函数正确性。同时,还展示了如何创建Employee类及其测试用例,实现员工薪资调整功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

11-1 城市和国家 :编写一个函数,它接受两个形参:一个城市名和一个国家名。这个函数返回一个格式为City, Country 的字符串,如Santiago, Chile 。将 这个函数存储在一个名为city_functions.py的模块中。

创建一个名为test_cities.py的程序,对刚编写的函数进行测试(别忘了,你需要导入模块unittest 以及要测试的函数)。编写一个名为test_city_country() 的 方法,核实使用类似于'santiago' 和'chile' 这样的值来调用前述函数时,得到的字符串是正确的。运行test_cities.py ,确认测 试test_city_country() 通过了。 

city_functions.py

def get_city_country(city,country):
    return city+' '+country
test_cities.py

import unittest
from city_functions import get_city_country
class CityCountryTestCase(unittest.TestCase):
    def test_city_country(self):
        city = 'santuago'
        country = 'chile'
        self.assertEqual(get_city_country(city,country),'santuago chile')
unittest.main()

结果:



11-2 人口数量 :修改前面的函数,使其包含第三个必不可少的形参population ,并返回一个格式为City, Country - population xxx 的字符串, 如Santiago, Chile - population 5000000 。运行test_cities.py,确认测试test_city_country() 未通过。 

修改上述函数,将形参population 设置为可选的。再次运行test_cities.py,确认测试test_city_country() 又通过了。 

再编写一个名为test_city_country_population() 的测试,核实可以使用类似于'santiago' 、'chile' 和'population=5000000' 这样的值来调用 这个函数。再次运行test_cities.py,确认测试test_city_country_population() 通过了。 

city_functions.py

def get_city_country(city,country,population):
    return city.title()+', '+country.title()+' - population '+ str(population)
test_cities.py

import unittest
from city_functions import get_city_country
class CityCountryTestCase(unittest.TestCase):
    def test_city_country(self):
        city = 'santiago'
        country = 'chile'
        population = 5000000
        self.assertEqual(get_city_country(city,country,population),'Santiago, Chile - population 5000000')
unittest.main()
结果:



11-3 雇员 :编写一个名为Employee 的类,其方法__init__() 接受名、姓和年薪,并将它们都存储在属性中。编写一个名为give_raise() 的方法,它默认将 年薪增加5000美元,但也能够接受其他的年薪增加量。 

为Employee 编写一个测试用例,其中包含两个测试方法:test_give_default_raise() 和test_give_custom_raise() 。使用方法setUp() ,以免在 每个测试方法中都创建新的雇员实例。运行这个测试用例,确认两个测试都通过了。

import  unittest
class Employee():
    def __init__(self,first_name,last_name,salary):
        self.first_name = first_name
        self.last_name = last_name
        self.salary  = salary
    def give_raise(self):
        self.salary = 5000
        return self.salary

class TestEmployee(unittest.TestCase):
    def setUp(self):
        self.Employee = Employee('Alice','Bob',200)
    def test_give_default_raise(self):
        self.assertEqual(self.Employee.salary,200)
    def test_give_custom_raise(self):
        self.assertEqual(self.Employee.give_raise(),5000)
unittest.main()
结果:



<think>嗯,用户想了解《Python编程:从入门实践》这本书的文档情况。首先,我需要确定这本书的具体内容和结构。这本书应该分为两个部分,第一部分是基础知识,第二部分是实践项目。用户可能想知道这本书是否适合初学者,以及里面的项目是否实用。 接下来,我需要回忆这本书的目录或者主要内容。比如,第一部分可能包括变量、列表、条件语句、函数、类等基础内容。第二部分可能有游戏开发、数据可视化和Web应用这些项目。要确认这些信息是否准确,可能需要参考该书的官方介绍或者可靠的资源。 用户提到“文档”,可能是指书中的代码示例、练习题或者在线资源。需要说明每个章节是否有练习题,是否有配套的代码下载,以及是否有额外的在线资源支持。比如,作者Eric Matthes通常会提供源代码和习题答案吗? 另外,用户可能关心这本书的适用对象。是否是针对完全没有编程经验的人?还是适合有一定基础的人?需要明确说明这本书的定位,比如适合零基础入门,通过项目巩固知识。 还要考虑用户可能的深层需求。他们可能正在寻找一本既能学基础又能做实际项目的书,或者需要一本结构清晰、适合自学的教材。这时候需要强调该书的结构如何帮助读者循序渐进,以及项目的实用性和趣味性。 最后,要确保回答结构清晰,分点说明,比如书籍简介、内容结构、项目案例、资源支持等,让用户一目了然。同时,注意使用中文,避免专业术语过于晦涩,保持口语化但准确。</think>《Python编程:从入门实践》是一本广受好评的Python入门书籍,适合零基础或初学者的系统性学习。以下是其核心内容和文档特点的逐步解析: --- ### **1. 书籍简介** - **作者**:Eric Matthes - **定位**:以实践驱动学习,强调“学完基础知识后立即动手做项目” - **语言风格**:通俗易懂,案例生动,避免纯理论堆砌 --- ### **2. 内容结构** #### **第一部分:基础知识(1-11章)** 1. **起步**:安装Python和环境配置(推荐使用VS Code或PyCharm) 2. **基础语法**: - 变量与简单数据类型(字符串、数字、列表) - 条件语句(`if-elif-else`) - 循环(`for`、`while`) - 函数与模块化编程 - 类与面向对象(OOP) 3. **文件与异常处理**: - 读写文件(`with`语句) - `try-except`错误捕获机制 #### **第二部分:项目实践(12-20章)** 1. **游戏开发**: - 使用Pygame库实现《外星人入侵》射击游戏 - 包含碰撞检测、动画效果和得分系统 2. **数据可视化**: - 使用Matplotlib绘制折线图、散点图 - 使用Plotly生成交互式图表 3. **Web应用**: - Django框架入门(搭建学习笔记应用) - 部署到Heroku云平台 --- ### **3. 文档特色** - **代码逐行解析**:每个案例均提供完整代码和逐行注释,例如: ```python def greet_user(username): """显示简单的问候语""" # 文档字符串 print(f"Hello, {username.title()}!") ``` - **动手试一试**:每章结尾附练习题(如编写一个“餐厅点餐类”),巩固知识点 - **资源支持**: - 官方提供完整源代码下载 - 在线社区答疑(如GitHub Issues) - 针对Python 3.x版本更新 --- ### **4. 适合人群** - **零基础新手**:无需编程经验,从安装环境开始引导 - **转行开发者**:通过项目快速积累实战经验 - **教育工作者**:提供结构化教学大纲参考 --- ### **5. 延伸学习建议** - **扩展库**:学完后可探索NumPy(科学计算)、Requests(网络请求)等库 - **配套资源**:结合《Python Crash Course》官网的免费附录(如API开发指南) --- 该书通过“学-练-用”闭环设计,能帮助读者在3-6个月内建立Python编程思维并完成可展示的作品。若需电子版资源或代码仓库链接,可进一步说明!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值