python单元测试基础举例

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

快速排序(Quicksort)是对冒泡排序的一种改进。

快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

(以上概念摘抄自百度百科)

现在sort.py文件,有一个排序类Sort,包含两个方法bubble_sort和quick_sort,代码如下:

class Sort():

    @staticmethod
    def bubble_sort(arr):
        arr=list(arr)
        if len(arr)<=1:
            return arr
        for i in range(1,len(arr)):
            for j in range(len(arr)-i):
                if arr[j] > arr[j+1]:
                    arr[j],arr[j+1]=arr[j+1],arr[j]
        return arr
        
    @staticmethod
    def quick_sort(arr):
        if len(arr)<=1:
            return arr
        arr_l = []
        arr_r = []
        arr_m = []
        key = arr[0]
        for i in arr:
            if i<key:
                arr_l.append(i)
            elif i>key:
                arr_r.append(i)
            else:
                arr_m.append(i)
        arr_l = Sort.quick_sort(arr_l)
        arr_r = Sort.quick_sort(arr_r)
        return arr_l + arr_m + arr_r

对sort.py进行单元测试,test_sort.py文件代码如下:

import unittest
from sort import Sort

class TestSort(unittest.TestCase):

    def test_bubble_sort_1(self):
        arr=[]
        self.assertEquals([],Sort.bubble_sort(arr))
        
    def test_bubble_sort_2(self):
        arr=[7]
        self.assertEquals([7],Sort.bubble_sort(arr))
        
    def test_bubble_sort_3(self):
        arr=[15,12,36,22,1,7,18]
        self.assertEquals(sorted(arr),Sort.bubble_sort(arr))
        
    def test_bubble_sort_4(self):
        arr=(15,12,36,22,1,7,18)
        self.assertEquals(sorted(arr),Sort.bubble_sort(arr))
        
    def test_quick_sort_1(self):
        arr=[]
        self.assertEquals([],Sort.quick_sort(arr))
        
    def test_quick_sort_2(self):
        arr=[7]
        self.assertEquals([7],Sort.quick_sort(arr))
        
    def test_quick_sort_3(self):
        arr=[15,12,36,22,1,7,18]
        self.assertEquals(sorted(arr),Sort.quick_sort(arr))
        
    def test_quick_sort_4(self):
        arr=(15,12,36,22,1,7,18)
        self.assertEquals(sorted(arr),Sort.quick_sort(arr))

选择你喜欢的编译器,如:pycharm,直接右键选中相应case即可运行,也可以在空白处右键,即运行全部case。

如果想要自定义跑哪些case或者同时执行多个文件中的case,可以再写一个run.py文件,将所要执行的测试类引入,可引入多个,代码如下:

import unittest
from test_sort import TestSort
if __name__==‘__main__‘:
    suite=unittest.TestSuite()
    #suite.addTest(TestSort(‘test_quick_sort_1‘)) #此时只运行est_quick_sort_1这条case
    #suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestSort)) #这句等价于下面那句
    suite.addTest(unittest.makeSuite(TestSort)) #执行TestSort类中的所有case
    runner=unittest.TextTestRunner(verbosity=2) #等于2打印详细的执行信息
    runner.run(suite)
时间: 2024-08-10 16:53:32

python单元测试基础举例的相关文章

python/HTML基础

---恢复内容开始--- python/HTML基础 HTML: 超文本标记(标签)语言 (以<>扩起来的都是标签语言,放入标签里的不仅仅是文本)一套语言规则 浏览器的渲染顺序是从上到下,从左到右 不同的浏览器,对同一标签可能会有不完全相同的解释(兼容性)至今已经解决的差不多了 .html或htm   静态网页文件扩展名后缀 标签可以进行嵌套,但是不能进行交叉嵌套 HTML 不是一种编程语言,而是一种标记语言,HTML使用标记标签来描述网页 HTML结构: <html></h

Python入门基础学习 三

Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形,true就相当于1,false相当于0,可以用来计算 类型转换 转换:整数:int();字符串:str();浮点数:float() 转换例子:(图9) 如果用内置函数当变量名,比如str=123,一旦被赋值,再使用这个函数会被报错. type()函数可以明确告诉我们变量类型. isinstance

从能做什么到如何去做,一文带你快速掌握Python编程基础与实战

摘要:Python语言的教程虽然随处可见,但是忙于日常业务/学习的你或许:一直想要"找个时间学一点",但是又不知道该从何下手?本文将从Python能做什么,如何学习Python以及Python的基础知识为你的Python之路点上一盏明灯. 本文内容根据演讲视频以及PPT整理而成. 本文的分享主要围绕以下几个方面: Python能做什么?(常见应用场景介绍) 如何学习Python? Python语法基础实战 Python面向对象编程实战 练熟基础:2048小游戏项目的实现与实战 福利:小

Python 单元测试 & 文档测试

1.1   单元测试 1.1.1   单元测试编写 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 编写一个Dict类,这个类的行为和dict一致,但是通过属性来访问. >>> d = Dict(a=1, b=2) >>> d['a'] 1 >>> d.a 1 class dict编写如下: [[email protected] python]# cat mydict.py #!/usr/bin/python # -*- co

问道python之基础篇【二】python入门

问道python之基础篇[二] Python入门 1.python的工作过程 python解释器把源代码转换为字节码的中间形式,然后再把它翻译成机器使用的机器语言并运行. 2.pyc文件 2.1.什么是pyc文件 执行python代码时,如果导入了其他的.py文件,那么在执行过程中会自动生成一个与其同名的.pyc文件,该文件就是python解释器编译之后产生的字节码. ps:代码经过编译可以产生字节码:字节码通过反编译也可以得到代码. Pyc文件一般由3个部分组成: 最开始4个字节是一个Maig

[python] python单元测试经验总结

python写单元大多数都会用到unittest和mock,测试代码覆盖率都会用到coverage,最后再用nose把所有的东西都串起来,这样每次出版本,都能把整个项目的单元测试都运行一遍. Unittest unittest就不详细介绍了,注意几点: 测试类继承unittest.TestCase 测试类.测试方法名字最好以test开头,很多工具能根据名字来自动运行,很方便 测试类里面的setUp/tearDown会在每个case执行之前/之后执行,setUpClass/tearDownClas

老少皆宜的密大Python零基础入门

Who are we? MTech是一个由密歇根大学 工程院中 (AE/ME)的中国学生组成的的一个专注于专业知识和技能的分享和交流的俱乐部.我们创建这个俱乐部旨在促进工程专业中国学生之间技术层面的交流,搭建桥梁促进知识的分享和传播.请关注我们的微信公众号("密大MTech")和我们的网站(mtechmae.webstarts.com)了解关于我们的更多信息. What is Python? Python是一种面向对象.直译式的编程语言.它的语法简单,并包含了功能完备的库,适合解决很多

Python单元测试PyUnit框架轻度整改

原理 参考:单元测试原理 背景 年后有段时间没写代码了,所以趁着周末找了个python单元测试玩下,测试自己的Android应用.发现PyUnit虽然在单个脚本文件中添加多个测试用例,比如官网提供的方法:官网地址 import unittest class WidgetTestCase(unittest.TestCase): def setUp(self): self.widget = Widget("The widget") def tearDown(self): self.widg

Python服务器开发二:Python网络基础

Python服务器开发二:Python网络基础 网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. HTTP是高层协议,而TCP/IP是个协议集,包过许多的子协议.包括:传输层的 FTP,UDP,TCP协议等,网络层的ip协议等,高层协议如HTTP,telnet协议等,HTTP是TCP/IP的一个子协议. socket是对TCP/IP协议的封装和应用(程序员层面上).也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如