码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python编程从入门到实践 第十一章:测试代码 练习答案记录


    Python编程从入门到实践 第十一章:测试代码 练习答案记录

    练习题导航

    • Python编程从入门到实践 第十一章:测试代码 练习答案记录
    • 11.1 测试函数
      • 11.1.1 单元测试和测试用例
      • 11.1.2 可通过的测试
      • 11.1.3 未通过的测试
      • 11.1.4 测试未通过时怎么办
      • 11.1.5 添加新测试
        • 练习11-1 城市和国家:编写一个函数,它接受两个形参:一个城市名和一个国家名。这个函数返回一个格式为City, Country的字符串,如Santiago, Chile。将这个函数存储在一个名为city_functions.py的模块中。
        • 练习11-2 人口数量:修改前面的函数,使其包含第三个必不可少的形参population,并返回一个格式为City, Country - population xxx的字符串,如Santiago, Chile - population 5000000。运行test_cities.py,确认测试test_city_country()未通过。
    • 11.2 测试类
      • 11.2.1 各种断言方法
      • 11.2.2 一个要测试的类
      • 11.2.3 测试AnonymousSurvey类
      • 11.2.4 方法setUp()
        • 练习11-3 雇员:编写一个名为Employee的类,其方法__init__()接受名、姓和年薪,并将它们都存储在属性中。
    • 11.3 小结

    11.1 测试函数

    11.1.1 单元测试和测试用例

    11.1.2 可通过的测试

    11.1.3 未通过的测试

    11.1.4 测试未通过时怎么办

    11.1.5 添加新测试

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

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

    主程序

    import unittest
    from city_functions import city_functions
    
    class NamesTestCase(unittest.TestCase):
        """测试city_functions.py"""
    
        def test_first_last_name(self):
            formatted_name=city_functions('santiago','chile')
            self.assertEqual(formatted_name,'santiago,chile')
    
    if __name__ == '__main__':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    导入

    def city_functions(City, Country):
        return f"{City},{Country}"
    
    • 1
    • 2

    测试通过

    在这里插入图片描述

    练习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()通过了。

    修改后的函数

    def city_functions(City, Country,population=0):
        return f"{City},{Country}-population {population}"
    
    • 1
    • 2

    主函数不变,测试不通过

    import unittest
    from city_functions import city_functions
    
    class NamesTestCase(unittest.TestCase):
        """测试city_functions.py"""
    
        def test_first_last_name(self):
            formatted_name=city_functions('santiago','chile')
            self.assertEqual(formatted_name,'santiago,chile')
    
    if __name__ == '__main__':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    主函数修改后,测试通过

    import unittest
    from city_functions import city_functions
    
    class NamesTestCase(unittest.TestCase):
        """测试city_functions.py"""
    
        def test_first_last_name(self):
            formatted_name=city_functions('santiago','chile')
            self.assertEqual(formatted_name,'santiago,chile-population 0')
    
    if __name__ == '__main__':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    11.2 测试类

    11.2.1 各种断言方法

    11.2.2 一个要测试的类

    11.2.3 测试AnonymousSurvey类

    11.2.4 方法setUp()

    练习11-3 雇员:编写一个名为Employee的类,其方法__init__()接受名、姓和年薪,并将它们都存储在属性中。

    编写一个名为give_raise()的方法,它默认将年薪增加5000美元,但也能够接受其他的年薪增加量。
    为Employee编写一个测试用例,其中包含两个测试方法:
    test_give_default_raise()和test_give_custom_raise()。
    使用方法setUp(),以免在每个测试方法中都创建新的雇员实例。运行这个测试用例,确认两个测试都通过了。

    主程序

    import unittest
    from Employee import Employee
    
    class TestEmployee(unittest.TestCase):
    
        def setUp(self):
            self.employee=Employee('liu','yi zheng',100_000)
    
        def test_give_default_raise(self):
            self.assertIn('liu',self.employee.first_name)
    
        def test_give_custom_raise(self):
            self.assertIn(str(100_000),str(self.employee.years_money))
    
    if __name__ == '__main__':
        unittest.main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    函数

    class Employee:
    
        def __init__(self,first_name,last_name,years_money):
            self.first_name=first_name
            self.last_name=last_name
            self.years_money=years_money
    
        def give_raise(self,money_rise=5000):
            self.years_money += money_rise
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    测试结果

    在这里插入图片描述

    11.3 小结

  • 相关阅读:
    关于无感刷新Token,我是这样子做的
    Web自动化测试 Selenium 1/3
    他因“上帝粒子”获诺奖,却火速搬到乡下:它毁了我的生活
    小记java正则表达式中matcher.find() 和 matcher.matches() 的区别
    图片转excel软件有哪些?这些软件你值得拥有
    (Note)动态规划的基本步骤
    C# 如何读取dxf档案
    能让你效率翻倍的文字扫描识别软件有哪些?这几款就很不错
    2022中国电子展,国产超高清技术掀起新兴浪潮
    [Linux]关于在国产操作系统上安装Oracle数据库
  • 原文地址:https://blog.csdn.net/Is_Superman/article/details/127948784
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号