码农知识堂 - 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 小结

  • 相关阅读:
    图片懒加载
    NoSQL之 Redis配置与优化
    jsp健身房会员管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
    yolov7简化网络yaml配置文件
    python工程师-文件操作
    Transform 转换
    2024/2/29 备战蓝桥杯 6-1 二分
    用print学python-列表切片操作,元组定义,遍历
    微信小程序富文本解析器rich-text、web-view、wxParse、mp-html、towxml对比
    分布式搜索系统的设计
  • 原文地址:https://blog.csdn.net/Is_Superman/article/details/127948784
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号