执行方式一(执行所有的测试用例)
1.执行main()方法执行的特点:unittest.main()
注意:
1.是把所有的测试用例执行了一遍
2.执行测试用例的顺序控制不了,(按照测试用例名(方法名)的字母顺序执行的)
执行方式二(内部方法添加测试用例)(重点)
通过内部函数添加测试用例
步骤:
1.生成测试套件(也叫测试集合)
suitt = unittest.TestSuite()
2.把测试用例添加进测试集合,两种方式添加
1.suitt.addTest(类名("用例"))
2.suitt.addTests(map(类名,["用例1","用例2",...]))
3.生成测试结果对象,然后传递到run函数中
re = unittest.TestResult()
suitt.run(re)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#====#====#====#====
#Author:
#CreatDate:
#Version:
#====#====#====#====
import unittest
class Maker(unittest.TestCase):
def test_01(self):
print("test_01......")
def test_02(self):
print("test_02......")
def test_03(self):
print("test_03......")
def test_04(self):
print("test_04......")
def test_05(self):
print("test_05......")
if __name__=='__main__':
# 1.
# 生成测试套件(也叫测试集合)
suitt = unittest.TestSuite()
# 2.
# 把测试用例添加进测试集合, 两种方式添加
# 1.
# suitt.addTest(Maker("test_03"))
# 2.
suitt.addTests(map(Maker, ["test_01", "test_03","test_05"]))
# 3.
# 生成测试结果对象, 然后传递到run函数中
re = unittest.TestResult()
suitt.run(re)
#需要使用python中的IDLE执行,或直接终端执行这个文件
执行方式三(通过模块方法添加测试用例)(重点)
通过模块方法添加测试用例
1.如果测试用例的数量比较大,使用testsuite自带的方法加用例到集合,很麻烦
可以unittest中提供的testloader模块,提供了好多帮我们把测试用例加载到测试集合中的方法
2.步骤:
2.创建testloader的对象
3.使用testloader的对象中的loadTestsFromName函数添加测试用例,这个api,返回测试套件
1.可以添加整个模块的测试用例
2.也可以添加一个单元测试类中的所有测试用例(只能添加一个单元测试类)
3.也可以添加单元测试类中的某个测试用例(只能添加一个单元测试类中的一个测试用例)
4.生成测试结果对象,然后传递到run函数中
re = unittest.TestResult()
suitt.run(re)
模块代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#====#====#====#====
#Author:
#CreatDate:
#Version:
#====#====#====#====
import unittest
class Maker(unittest.TestCase):
def test_01(self):
print("test_01......")
def test_02(self):
print("test_02......")
def test_03(self):
print("test_03......")
def test_04(self):
print("test_04......")
def test_05(self):
print("test_05......")
class Maker2(unittest.TestCase):
def test_01(self):
print("test_01...Maker2...")
def test_02(self):
print("test_02....Maker2..")
def test_03(self):
print("test_03...Maker2...")
def test_04(self):
print("test_04...Maker2...")
def test_05(self):
print("test_05...Maker2...")
业务代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#====#====#====#====
#Author:
#CreatDate:
#Version:
#====#====#====#====
import unittest
if __name__=='__main__':
#创建loader对象
loader=unittest.TestLoader()
#参数为模块名,返回测试套件,执行一个模块中所有的用例
suit=loader.loadTestsFromName("Maker2Tests")
#执行一个模块中的某个单元测试类中的所有用例
# suit=loader.loadTestsFromName("Maker2Tests.Maker")
#执行一个模块中的某个单元测试类中的某个用例
suit=loader.loadTestsFromName("Maker2Tests.Maker.test_05")
# 生成测试结果对象, 然后传递到run函数中
re = unittest.TestResult()
suit.run(re)
执行方式四(通过路径方式添加测试用例)(重点)
使用unittest.defaultTestLoader对象的discover方法加载用例,可以将指定路径所有符合匹配规则(pattern)的文件中的单元测试用例一次性加载
第一个参数是一个目录,这个目录下可以有单元测试用例的文件(.py)
第二个参数是填文件名,可以通配
suitt = unittest.defaultTestLoader.discover(r"./Maker/", pattern="unit*.py")
说明:
1."unit*.py指的是以unit开头,以.py结尾的文件
2..py中的单元测试用例要使用unittest框架写的测试用例
3.注意模块名不要用中文命名
步骤:
1.生成测试套件(也叫测试集合)
2.使用discover方法批量添加
3.生成测试结果对象,然后传递到run函数中
re = unittest.TestResult()
suitt.run(re)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#====#====#====#====
#Author:
#CreatDate:
#Version:
#====#====#====#====
import unittest
if __name__=='__main__':
suit=unittest.defaultTestLoader.discover(r'./MyTestFile/',pattern="unit*.py")
print(suit.countTestCases())
# 生成测试结果对象, 然后传递到run函数中
re = unittest.TestResult()
suit.run(re)