# 学习目标
1.掌握TestCase的使用
2.掌握通过TextTestRunner执行TestCase中的测试用例
3.掌握使用TestLoader加载TestCase中的测试用例
4.掌握常用断言assertInh和assertEqual的使用语法
5.了解参数化技术
6.掌握生成HTML格式的测试报告
1.1Unittest介绍
(1).Unittest组成部分
Unittest是python的自动化测试框架,Unittest框架主要包括以下部分:
- TestCase(测试用例)
- TestSuite(测试套件,把多个TestCase集成一个测试TestSuite)
- TestRunner(执行测试用例)
- TestLoader(自动从代码中加载多个测试用例TestCase)
- Fixture(UnitTestTest特性)
(2).为什么使用Unittest框架
- 能够组织多个用例去执行
- 提供丰富的断言方法
- 能够生成测试报告(由于生成的测试报告简陋,我们选择其他插件实现)
1.2TestCase
测试用例类,我们做单元测试时编写的测试用例就是继承TestCase类来实现具体的测试用例
每一个继承TestCase类的子类里面实现的具体的方法(以test开头的方法)都是一条用例
import unittest
class UserCase(unittest.TestCase):
def testAddUser(self):
print("add a user")
def testDelUser(self):
print("delete a user")
if __name__ == '__main__':
unittest.main()
分析unittest之TestSuite类说明
import unittest
class UserCase(unittest.TestCase):
def testAddUser(self):
print("add a user")
def testDelUser(self):
print("delete a user")
if __name__ == '__main__':
result = unittest.TextTestResult(sys.stdout,'test result',1) #初始化TextTestResult类实例
testcase = UserCase('testAddUser') #初始化UserCase类实例
testcase(result) #跟testcase.run(result)的结果是一样的,我们只需要传入一个result对象即可
运行结果如下:
E:\PythonWorkSpace>python test.py
add a user
.
E:\PythonWorkSpace>
1.4makeSuite
上面的Suite。addTest()方法,一次只能加载一条测试用例,如果自定义的类中测试用例非常多,且要全部加载,此种方法会非常的麻烦,使用makemSuite方法可以一次性将一个类中的测试全部用例全部加载进来。
# makeSuite使用示例
import unittest
import demo1
# 实例化TestSuite对象
suite = unittest.TestSuite()
suite.addTest(uniteest.makeSuite(demo1.MYTest)) # 加载demo1中的所有用例
1.5 TestRunner
TsetRunner是用来执行suite对象中加载的测试用例的方法
# makeStuite使用示例
import Unittest
import demo1
# 实例化TextTestRunner对象
runner = unittes.TextTestRunner()
#执行suite对象中的用例
runner.run(suite)
1.6TestLoader
TsetLoader 可以更方便的加载用例,使用说明如下:
- TestLoader 需要先实例化一个对象,该对象返回用户一个suite
- TestLoader对象可调用discover方法加载指定文件中的所有用例
- discover方法传递两个参数,第一个参数为路径,第二个参数为路径下的文件名,文件名可以使用通配符,同时加载指定目录下的多个文件中的全部用例
import unittest
#实例化TestLoader对象,调用discover方法加载demo1.py中的全部用例
suite = unittest.TestLoader().discover('./','demo1.py')
#实例化TextTestRunner对象
runner = unitteat.TextTestRunner()
# TextTestRunner对象执行suite中所用例
runner.run(suite)
1.7 TestSuite 与TestLoader区别
TestSuite 需要手动添加测试用例(可以添加测试类,也可以添加测试类中某个测试方法)
TestLoader 搜索指定目录下指定开头.py文件,并添加测试类对的所有的测试方法,不能指定添加测试方法