一、什么是unittest
TestCase:
测试环境的搭建(setup)
执行测试代码(run)
测试环境的还原(tearDown)
Test suite:多个测试结合在一起就是TestSuit,TestSuit可以嵌套TestSuit
Testrunner:用来执行测试用例
TestLoader:是用来加载TestCase到TestSuit中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,来创建他们的实例,然后add到TestSuit中,再放回一个TestSuit实例。
Test fixture:对一个测试用例环境的搭建和销毁,是一个fixture通过覆盖TestCase()和tearDown()方法来实现。
二、步骤
编写一个python类,继承unittest模块中的TesetCase类,这就是一个测试类
在上面编写的测试类中定义测试方法(这个就是指测试用例),每个方法的方法名都要求以test打头,没有额外的参数。在该测试方法中调用被测试代码,校验测试结果,TestCase类中提供了很多标准的检验方法,如常见的assertEqual。
执行unittest.main(),该函数会负责运行测试,它会实例化所有testCase的子类,并运行其中所有以test打头的方法。
三、简单用法
用import unittest导入unittest模块
定义一个继承自unittest.TestCase的测试用例,如class xxx(unittest.TestCae)
定义setUp和tearDown,这两个方法与junit相同,即如果定义了则会在每个测试case执行setUP方法,执行完毕后执行tearDown方法。
定义测试用例,名字以test开头,unittest会自动将test开头的方法放入测试用例集中。
一个测试用例应该只测试一个方面,测试目的和测试内容应很明确,主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符
调用unittest.main()启动测试
如果测试通过,则会显示e,并给出具体的错误,如果测试测试失败则显示为f,如果测试通过为.,如有多个testcase,则结果依次显示
四、unittest.main()常用方法
assertEqual(a,b)a==b
assertNotEqual(a,b)a!=b
assertTrue(x)bool(x)isTrue
assertFalse(x)bool(x)isFalse
assertIs(a,b)aisb
assertIsNot(a,b)aisnotb
asertIsNone(x) xisNone
assertIn(a,b) ainb
assertNotIn(a,b) anotinb
assertIsInstance(a,b)isinstance(a,b)
assertNotIsInstance(a,b)notisinstance(a,b)
主要用到的函数有:
failedinfo表示不成立打印信息failedinfo,为可选参数
self.fail([msg])会无条件的导致测试失败,不推荐使用。
self.assertEqual(value1, value2, failedinfo) # 断言value1 == value2
self.assertTrue(表达式, failedinfo) # 断言value为真
self.assertFalse(表达式, failedinfo) # 断言value为假
网友评论