一、测试函数(unittest)

1、源文件方法(name_function.py):

def get_formatted_name(first,last):
"""生成全名"""
full_name=f"{first} {last}"
return full_name.title()

2、通过unittest测试(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' ) if __name__ == '__main__':
unittest.main()

查看运行结果:

Ran 1 test in 0.003s

OK

二、测试类(unittest)

1、源文件类(survey.py)

class AnonymousSurvey:
"""收集匿名蒂阿查问卷的答案"""
def __init__(self,question):
"""存储一个问题,并为存储答案做准备"""
self.question=question
self.responses=[] def show_question(self):
"""显示调查问卷"""
print(self.question) def store_response(self,new_response):
"""存储单份调查问卷"""
self.responses.append(new_response) def show_results(self):
"""显示收集到的手机答案"""
print("Survey results")
for response in self.responses:
print(f" - {response}")

2、通过unittest测试(test)

import unittest
from survey import AnonymousSurvey class TestAnonymousSurvey( unittest.TestCase ):
"""针对AnonymousSurvey类的测试"""
def test_store_single_response(self):
question="What language did you first learn to speak?"
my_survey=AnonymousSurvey(question)
my_survey.store_response('English')
self.assertIn( 'English', my_survey.responses ) def test_store_three_response(self):
"""测试三个答案并存储正确"""
question="What language did you first learn to speak?"
my_survey=AnonymousSurvey(question)
responses=['English','Spanish','Chinese']
for response in responses:
my_survey.store_response(response)
for response in responses:
self.assertIn( response, my_survey.responses ) if __name__ == '__main__':
unittest.main()

查看结果:

Ran 2 tests in 0.002s

OK

三、setp()与tearDown()方法:初始化与清理程序

import unittest
from survey import AnonymousSurvey class TestAnonymousSurvey( unittest.TestCase ):
def setUp(self):
question = "What language did you first learn to speak?"
self.my_survey=AnonymousSurvey(question)
self.responses = ['English', 'Spanish', 'Chinese'] def tearDown(self):
self.responses.clear() def test_store_single_response(self):
"""针对AnonymousSurvey类的测试"""
self.my_survey.store_response( self.responses[0] )
self.assertIn( self.responses[0], self.my_survey.responses ) def test_store_three_response(self):
"""测试三个答案并存储正确"""
for response in self.responses:
self.my_survey.store_response( response )
for response in self.responses:
self.assertIn( response, self.my_survey.responses ) if __name__ == '__main__':
unittest.main()

查看运行结果:

Ran 2 tests in 0.001s

OK

python进阶(8)--测试函数与类的更多相关文章

  1. python进阶01 面向对象、类、实例、属性封装、实例方法

    python进阶01 面向对象.类.实例.属性封装.实例方法 一.面向对象 1.什么是对象 #一切皆对象,可以简单地将“对象”理解为“某个东西” #“对象”之所以称之为对象,是因为它具有属于它自己的“ ...

  2. Python进阶——详解元类,metaclass的原理和用法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题第18篇文章,我们来继续聊聊Python当中的元类. 在上上篇文章当中我们介绍了type元类的用法,在上一篇文章当中我 ...

  3. Python进阶(三)--global和类属性

    global关键字 一句话概括为:告诉python解释器,global声明的变量为全局作用域内定义的变量.解释器就会到全局作用域内寻找global定义的变量. python的类属性 类属性相当于其他O ...

  4. Python进阶开发之元类编程

    系列文章 √第一章 元类编程,已完成 ; 本文目录 类是如何产生的如何使用type创建类理解什么是元类使用元类的意义元类实战:ORM . 类是如何产生的 类是如何产生?这个问题肯定很傻.实则不然,很多 ...

  5. python进阶之函数和类内建魔法属性

    前言 关于对象的魔法方法我们已经讲得太多,但是对于类或函数内建的魔法属性和功能我们涉及较少,下面系统了解一下类和函数的内建属性. 查看内建属性 class Person(object): pass d ...

  6. 【python进阶】详解元类及其应用2

    前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...

  7. Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量

    Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程:    1.线程是一堆指令,是操作系统调度 ...

  8. Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type())

    Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type()) 一丶类的结构细分    ...

  9. Python进阶(十四)----空间角度研究类,类与类之间的关系

    Python进阶(十四)----空间角度研究类,类与类之间的关系 一丶从空间角度研究类 对象操作对象属性 class A(): address = '沙河' def __init__(self, na ...

  10. Python进阶-XVII 非python的接口类、多态、python自己的封装

    1.python模拟java中的接口类 python中是没有接口类的概念的,因为它支持多继承,但是java不能,所以就提出一个接口类的概念 java : 面向对象编程 设计模式 —— 接口 接口类 : ...

随机推荐

  1. [ABC237G] Range Sort Query

    Problem Statement Given is a permutation $P=(P_1,P_2,\ldots,P_N)$ of $1,2,\ldots,N$, and an integer ...

  2. 前端传递Base64字符串,后端转流存入OSS

    工具类 public static BufferedInputStream base64Convert(String base64) { // 解码 base64 = base64.split(&qu ...

  3. Spring源码学习之Web数据绑定器WebDataBinder

    WebDataBinder 1.描述 特殊的数据绑定器用于从web请求参数到JavaBean对象的数据绑定.专为web环境,但不依赖于Servlet API;作为更具体的DataBinder变体的基类 ...

  4. Python——第四章:闭包(Closure)、装饰器(Decorators)

    闭包: 本质, 内层函数对外层函数的局部变量的使用. 此时内层函数被称为闭包函数    1. 可以让一个变量常驻与内存,可随时被外层函数调用.    2. 可以避免全局变量被修改.被污染.更安全.(通 ...

  5. Windows系统修复(System Update Readiness Tool、SFC模式、DISM命令)可解决系统更新问题。

    安装System Update Readiness Tool 提供此更新是因为在 Windows servicing store 中发现了不一致,这可能会影响将来成功安装更新.service pack ...

  6. 4.elasticsearch中聚合查询

    elasticsearch聚合查询 什么是聚合,就是目的不是查询具体的文档,而是查询文档的相关性,此外还可以对聚合的文档在按照其他维度再聚合. 包含以下四种聚合 Bucket Aggregation ...

  7. Kernel Memory 中使用 PaddleSharp OCR

    Kernel Memory 中使用 PaddleSharp OCR Kernel Memory 中进行文档处理的时候可以上传图片作为文档,这时候就需要使用到 OCR 技术来识别图片中的文字. 官方默认 ...

  8. 2023-05-13:你现在手里有一份大小为 n x n 的 网格 grid, 上面的每个 单元格 都用 0 和 1 标记好了其中 0 代表海洋,1 代表陆地。 请你找出一个海洋单元格,这个海洋单元格

    2023-05-13:你现在手里有一份大小为 n x n 的 网格 grid, 上面的每个 单元格 都用 0 和 1 标记好了其中 0 代表海洋,1 代表陆地. 请你找出一个海洋单元格,这个海洋单元格 ...

  9. PB从入坑到放弃(七)PBer们的福音来了

    写在前面 也许现在的你需要用PB完成毕业设计.需要维护远古时代的代码,又或者是你呆的公司就是要求要用PB开发项目. 不管你是出于什么原因还在使用PB,不可否认PB在数据窗口非常优秀,熟练使用之后开发数 ...

  10. 详解ZooKeeper在微服务注册中心的应用

    本文分享自华为云社区<SpringCloud ZooKeeper 详解,以及与Go.Rust等非Java服务的集成>,作者: 张俭. ZooKeeper,是一个开源的分布式协调服务,不仅支 ...