#1.城市和国家:编写一个函数,它接受两个形参:一个城市名和一个国家名。
#这个函数返回一个格式为City,Country的字符串,如Santiago,Chile。将这个函数
#存储在一个名为city_function.py的模块中
#创建一个名为test_cities.py的程序,对编写的函数进行测试
#编写一个名为test_city_country()的方法核实得到的字符串正确 #city_function.py def city_country(city,country):
#国家和城市
country_city = city + " " + country
return country_city.title() #test_cities.py
from city_function import city_country print("\nEnter q to quit.")
while True:
#输入城市和国家
city = input("\nEnter a city: ")
if city == 'q':
break
country = input("\nEnter country of the city: ")
if country == 'q':
break get_msg = city_country(city,country)
print("The city and country: " + get_msg.title()) #unittest_test_city.py
import unittest
from city_function import city_country class CityTestCase(unittest.TestCase):
def test_city_country(self):
get_city_country_name = city_country("beijing","china")
self.assertEqual(get_city_country_name,"Beijing China") unittest.main() #2.人口数量:修改1中的函数,使其包含必不可少的形参population
#并返回一个格式City,Country - population xxx 的字符串 def city_country(city,country,population=''):
#国家和城市
country_city = city + ", " + country + " -- Population " + population
return country_city.title() ##测试模块
import unittest
from city_function import city_country class CityTestCase(unittest.TestCase):
def test_city_country(self):
get_city_country_name = city_country("beijing","china","")
self.assertEqual(get_city_country_name,"Beijing, China -- Population 5000") unittest.main()
#3.雇员:编写一个名为Employee的类,其方法__init__()接受名、姓和年薪
#并将它们存储在属性中。编写一个名为give_raise()的方法,它默认将年薪增加5000
#但也能够接受其他的年薪增量。编写一个测试用例,其中包含两个测试方法:
#test_give_default_raise()和test_give_custom_raise()
#使用setUp方法,以免在每个测试方法中都创建新的雇员实例,运行这个测试用例
#确认两个测试都通过 #employee.py
class Employee(): def __init__(self,first_name,last_name,salary):
self.first_name = first_name
self.last_name = last_name
self.salary = salary
self.raising = 5000 def give_raise(self):
return self.raising #test_employee.py
import unittest
from employee import Employee class TestEmployee(unittest.TestCase):
#针对Employee类的测试 def setUp(self):
self.employee_test = Employee('Ma','Naoke',5000) def test_give_default_raise(self):
#测试默认的工资
raising = self.employee_test.give_raise()
self.assertEqual(raising,5000) def test_give_custom_raise(self):
#测试年薪增量
self.employee_test.raising = 6000
raising = self.employee_test.give_raise()
self.assertEqual(raising,6000) unittest.main()

Python:从入门到实践--第十一章--测试代码--练习的更多相关文章

  1. Python 从入门到实践 试一试 参考代码

    这两天学习Python 看了python从入门到实践的书籍,里面有课后题“试一试” 然后就跟着写了,代码在以下地址,如果需要自取 https://files.cnblogs.com/files/fud ...

  2. Python:从入门到实践--第四章--列表操作--练习

    #1.想出至少三种你喜欢的水果,将其名称存储在一个列表中,再使用for循环将每种水果的名称都打印出来. #要求:(1)修改这个for循环,使其打印包含名称的句子,而不是仅仅是水果的名称.对于每种水果, ...

  3. Python:从入门到实践--第三章--列表简介--练习

    #1.将一些朋友的姓名存储在一个列表中,并将其命名为friends.依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来. #2.继续使用1中的列表,为每人打印一条消息,每条消息包含相同的问候语 ...

  4. Python:从入门到实践--第六章--字典--练习

    #1.人:使用一个字典来存储一个熟人的信息;包括姓,名,年龄和居住的城市.将字典中的每项信息都打印出来 friend = { 'last_name':'马', 'first_name':'脑壳', ' ...

  5. python 从入门到实践 第三章

    在第3章,你将学习如何在被称为列表的变量中存储信息集,以及如何通过遍历列表来操作其中的信息 写注释 # 代码越长 标识好代码的重要性 越来越重要要求习惯:在代码中编写清晰,简洁的注释开始研究更复杂的主 ...

  6. Python:从入门到实践--第五章--if语句--练习

    #1.编写一系列条件测试:将每个测试以及结果打印出来 car = '宝马' if car == "宝马": print("预测正确") print(car) e ...

  7. Python:从入门到实践--第七章--用户输入和while循环-练习

    #1.编写一个程序,询问用户要租赁什么样的汽车,并打印. car = input("What's kind of cars dou you want to rent?,sir:") ...

  8. MyBatis从入门到精通:第一章测试代码

    package tk.mybatis.simple.mapper; import org.apache.ibatis.io.Resources; import org.apache.ibatis.se ...

  9. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

随机推荐

  1. k8s 部署rabbitmq单节点

    apiVersion: extensions/v1beta1 kind: Deployment metadata: annotations: fabric8.io/iconUrl: https://r ...

  2. JAVA实现简单的四则运算

    GitHub 项目地址 https://github.com/745421831/-/tree/master PSP PSP2.1 Personal Software Process Stages 预 ...

  3. web功能测试之表单、搜索测试

    初入职场接触功能测试老是碰到以下情况不知道怎么写测试用例: 一个界面很多搜索条件怎么写用例?下拉框测试如何考虑测试点?上传要考虑哪些验证点?...... 所以这篇主要是整理关于web测试之表单.搜索测 ...

  4. 修改AD中PCB各层的透明度

    1.采用的Altium designer 版本为AD16: 2.进入PCB编辑页面,快捷键Ctrl+D,进入视图配置: 3.选择“透明度”,设置选中的层.对象所需的透明度:(横向可以连续选择多个对象, ...

  5. EFCore Lazy Loading + Inheritance = 干净的数据表 (一) 【献给处女座的DB First程序猿】

    前言 α角 与 β角 关于α角 与 β角的介绍,请见上文 如何用EFCore Lazy Loading实现Entity Split. 本篇会继续有关于β角的彩蛋在等着大家去发掘./斜眼笑 其他 本篇的 ...

  6. canvas初体验

    利用画布,绘制随机大小,颜色,位置 方框<!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  7. Js函数基本介绍

    1. 函数的创建 在JavaScript里面创建函数的关键字为function 函数名:就是在我们调用函数的时候需要书写的标识符 形参:全称为形式参数,调用函数的时候,这个函数所需要的参数是什么 实参 ...

  8. 声明一个set集合,使用HashSet类,来保存十个字符串信息,然后通过这个集合,然后使用iterator()方法,得到一个迭代器,遍历所有的集合中所有的字符串;然后拿出所有的字符串拼接到一个StringBuffer对象中,然后输出它的长度和具体内容; 验证集合的remove()、size()、contains()、isEmpty()等

    package com.lanxi.demo1_3; import java.util.HashSet; import java.util.Iterator; import java.util.Set ...

  9. struts2自定义转换器

    Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用d ...

  10. 2018-2019-2 《网络对抗技术》Exp4 恶意代码分析 20165326

    恶意代码分析 实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systra ...