一、测试函数(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. [计蒜客20191103B] 饮料

    小 B 出门游玩,他现在走到了 \(n\) 家饮品店前,第 \(i\) 家买饮料的花费为$ cost_i$ ,他只能去花费不超过自己所带钱数额的店,但他现在不确定自己兜里有多少钱,所以现在给出 \(m ...

  2. 使用 Taro 开发鸿蒙原生应用 —— 当 Taro 遇到纯血鸿蒙

    纯血鸿蒙即将到来 在今年 8 月的「2023年华为开发者大会(HDC.Together)」上,华为正式官宣「鸿蒙Next」,这个更新的版本将移除所有的 AOSP 代码,彻底与 Android 切割,使 ...

  3. 本地部署modelscope-agent

    本地部署modelscope-agent 部署流程 在modelscope社区创建一个自己的空间(假设name是LocalAgent),clone空间到本地(或云服务器如魔搭Notebook) git ...

  4. springMvc报错

    这个报错困扰了我大概一天,主要是刚开始没抓到主要原因,是因为自己的项目结构出现了问题, 导致找不到应有的东西,另一方面就是maven的问题,将maven解决后这个就能用了. 具体解决在https:// ...

  5. MyBatisPlus配置类-配置分页插件,注册为bean对象

    import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.mybatis.spring.a ...

  6. Guava Cache 异步刷新技巧,你值得拥有!

    Guava Cache是一款非常优秀的本地缓存框架,提供简洁易用的 API 供开发者使用. 这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 . 1 基本用法 首先,在 J ...

  7. 如何在GitHub正确提PR(Pull Requests),给喜欢的开源项目贡献代码

    最好的中文TTS项目Bert-vits2更新了中文特化分支,但可能由于时间仓促,代码中存在不少的bug,作为普通用户,有的时候也想为自己喜欢的开源项目做一点点贡献,帮助作者修改一些简单的bug,那么该 ...

  8. nacos-config配置中心

    依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-clou ...

  9. BM25(Best Matching 25)算法基本思想

      BM25(Best Matching 25)是一种用于信息检索(Information Retrieval)和文本挖掘的算法,它被广泛应用于搜索引擎和相关领域.BM25 基于 TF-IDF(Ter ...

  10. ChatGPT 同类工具推荐

    原文: https://openaigptguide.com/chatgpt-similar%20software/ ChatGPT是一款由美国OpenAI公司开发的人工智能语言模型,类似的软件有: ...