美文网首页软件测试
单元测试框架之unittest简介

单元测试框架之unittest简介

作者: davieyang | 来源:发表于2018-12-31 16:26 被阅读0次

    一、单元测试的含义

    unittest单元测试框架的设计灵感来源于Junit(Java语言的单元测试框架),它与其他语言的单元测试框架风格相类似,支持自动化测试、为测试共享setUp和shutDown、它可以在将测试用例聚合到一起形成一个集合一起执行的同时在测试报告中展示独立的测试结果。

    为了达到此目的,unittest支持几个重要的面向对象式的概念:

    1、test fixture

      一个test fixture所做的事情是执行单个或多个测试用例时的准备工作和执行结束后的一些相关清理工作,这包括:创建临时或代理数据库、目录或开始服务器进程。。。

    2、test case

      一个test case 是一个独立的测试单元,针对于一组特定的输入得到的特殊相应的验证,通过继承unittest提供的基类TestCase, 然后可以创建新的测试用例

    3、test suite

      一个test suite 是一组测试用例的集合,也可以是一组test suite的集合,也可以两者混合的集合,test suite就是用来聚合你想要一起执行的测试用例的

    4、test runner

      一个test runner 是一个协调测试执行并向用户提供执行结果的组建,它可以使用图形界面、文本界面或返回一个特殊值标识测试执行的结果

    二、实例代码

    下面我们看Python官方给的一个简单的小例子,来测试三个字符串

    三、代码解析:

    在第三个用例里,定义了一个字符串,s='hello world', 然后进行了断言,断言的条件里调用了一个split()方法,实际上初学者看到这会比较懵,s.split()到底返回的是什么,它是否等于逗号后边['hello', 'world']?学这个东西就是要多试试,那么接下来我们进行一系列尝试来认识一下split()

    启动命令行CMD,进入python环境

    尝试1:定义一个字符串  s = 'hello world', 然后 print(s)回车,结果应该是  hello world

    尝试2:如果我们敲入print(s.split())然后回车呢呢,结果应该是['hello', 'world'], 到此我们就得到了答案,第三条用例里的断言self.assertEqual(s.split(), ['hello', 'world'])是成功

    尝试3:如果我们print(s.split(2)) 会是什么结果?  如果我们print(s.split('o'))又会是什么结果?

    在第三个用例里,我们也看到了两行代码,split()函数我们已经知道它能干什么了,那么with是什么?assertRaises在这又在干什么?

    with,我们总提python之美,那么这就是美丽之处,with语句提供一个有效的处理异常和完成清理工作的机制,它让代码更简练,有点懵没关系,换一个方式说,如果不用with,要达到同等效果的的话要用什么呢?try...except...finally,这是另一个课题了并不是此处的重点,读者朋友可以先忽略它不要打断学习unittest的思路

    assertRaises是什么呢?unittest模块提供了用于测试函数是否在给定无效输入时引发特定异常的方法,这个方法就是assertRaises,我们在回去看代码,s.split(2), 很明显我们前边已经尝试过执行参数为2的情况,报了异常,也就是2并不是split函数的合法参数,我们传给2这个参数,它理应报异常,那么好with self.assertRaises(TypeError): 在干什么,它想要的就是看看split()在得到了非法参数的时候是否报一个TypeError,此处读者可能要整理一下思路,仔细阅读此段内容

    最后的unittest.main(),有了它我们就有了一个简单的方式执行这个脚本,unittest.main()提供了命令行界面运行脚本的方式

    假设我们上边的脚本保存在文件testingunit.py里并将它保存在桌面,然后我们启动命令行,输入“python C:\Users\davieyang\Desktop\testingunit.py”  看看是个什么结果

    我们能看到4个....,它的意义我们共4个用例,点表示测试通过,那么如果点表示测试通过,什么表示测试失败呢? 是“F”,如果测试遇到异常呢? 是“E”, 如果我们执行“python C:\Users\davieyang\Desktop\testingunit.py -v”又是什么结果?

    相关文章

      网友评论

        本文标题:单元测试框架之unittest简介

        本文链接:https://www.haomeiwen.com/subject/ofcwlqtx.html