11测试代码

   1.编写函数和类时,还可以编写测试函数,通过测试可以确定代码面对各种输入都能正常工作。在程序中添加新代码时,也可以对其进行测试,确定他们不会破坏程序的既有程序。要经常测试模块。

  2.通过python的模块unittest中的工具来测试代码。将明白测试通过是怎么样的,未通过是什么样的,知道未通过测试怎么来改善代码,知道要为项目编写多少测试。知道怎么测试函数和类。

  3.在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。

11.1测试函数

11.1.1单元测试和测试用例

   Python中的unittest模块提供代码测试工具,单元测试用来核实函数某个方面没有问题。测试用例是一组单元测试,确保函数在各个方面都没有问题。

  全覆盖式测试用例包含一整套的测试用例,涵盖了各种可能的函数使用方式。

11.1.2可通过测试

  要为函数编写测试函数,先导入模块unittest和要测试的涵数,在创建一个继承unittest.TestCase的类,并编写一系列方法对函数行为的不同方面进行测试。命名最好带有test。

  name_function.py

 def get_formatted_name(first, last):
  """获得全名."""
  full_name = first + ' ' + last
  return full_name.title()

  names.py

 from name_function import get_formatted_name
print("Enter 'q' at any time to quit.")
while True:
first = input("\nPlease give me a first name: ")
if first == 'q':
break
last = input("Please give me a last name: ")
if last == 'q':
break
formatted_name = get_formatted_name(first, last)
  print("\tNeatly formatted name: " + formatted_name + '.')

  test_name_function.py

 import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
"""测试name_function.py"""
def test_first_last_name(self):
"""能够正确地处理像Janis Joplin这样的姓名吗?"""
formatted_name = get_formatted_name('janis', 'joplin')
self.assertEqual(formatted_name, 'Janis Joplin')
  unittest.main()

  unittest最有用的功能之一:一个断言方法,assertEqual断言方法用来核实得到的结果是否和期望的值一样。

11.1.3不能通过的测试

  测试没有通过,不要修改测试,而应修复导致测试不能通过的代码:检查刚对函数所做的修改,找出导致函数行为不符合预期的修改。

11.2.1模块中的各种断言方法

  6个常见断言

方法

用途

assertEqual(a, b)

核实a == b

assertNotEqual(a, b)

核实 a != b

assertTrue(x)

核实 x 为True

assertFalse(x)

核实 x 为False

assertIn(item, list)

核实 item在list中

assertNotIn(item, list)

核实 item不在list中

Python基础学习总结(九)的更多相关文章

  1. python基础学习(九)字典

    字典的定义 dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型(有点类似java中的Map) 字典同样可以用来 存储多个数据 通常用于存储 描述一个 物体 的相关信息 ...

  2. python基础学习(九)

    19.解包 # 解包 unpacking user1 = ["张三", 21, "1999.1.1"] # tuple 类型 user2 = ("李四 ...

  3. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  4. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  5. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  6. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  7. (一)python基础学习

    根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...

  8. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

  9. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

随机推荐

  1. Setup "EQGRP_Lost_in_Translation" Of NAS

    Setup "EQGRP_Lost_in_Translation" Of NAS 1.前言: 北京时间4月14号晚,TheShadowBrokers在steemit.com博客上放 ...

  2. css样式引入方式,及常用设置标签样式

    一. 三种样式引入方式   1. 内联式-直接写在div标签中,不推荐用 <div style="color:red;font-size:20px;font-family:'Micro ...

  3. SQLServer XML

    OPENXML 参见:OPENXML (SQL Server) | Microsoft Docs SQL For XML 参见:FOR XML (SQL Server) | Microsoft Doc ...

  4. python3入门之集合set

    之前介绍python的数据结构时,没有介绍set(集合)现在在这里稍微介绍下: set原理 Python 还 包 含 了 一 个 数 据 类 型-- set ( 集 合 ) . 集 合 是 一 个 无 ...

  5. 可持久化数据结构QwQ(持续更新中)

    可持久化留下的迹象 我们俯身欣赏 ——<膜你抄>By Menci&24OI Micardi最近在学可持久化的东西,可持久化线段树.可持久化并查集.可持久化01Trie......等 ...

  6. linux入门 配置网络

    我因为有自己的ssr,因此想让虚拟机共享我的ssr,并且不想搞的太麻烦,特此记录一下 1. 获取本机的ip 在命令行里输入ipconfig /all 获取本机IP,如下图所示,我本机ip为10.3.7 ...

  7. linux ssh 上传 文件

    在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件scp username@servername:/path/filename /var/www/local_dir(本地 ...

  8. 三种实现日志过滤器的方式 (过滤器 (Filter)、拦截器(Interceptors)和切面(Aspect))

    1.建立RequestWrapper类 import com.g2.order.server.utils.HttpHelper; import java.io.BufferedReader; impo ...

  9. windows平台下Android studio开发环境搭建教程

    最近,Google 已宣布,为了简化 Android 的开发力度,以重点建设 Android Studio 工具,到今年年底将停止支持Eclipse等其他集成开发环境 .而随着Android stud ...

  10. sql语句之group_concat函数

    MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...