在单元测试中批量运行测试用例的方法有两种。
第一种是通过手动添加,通过unittest.Testsuite来管理用例集,通过addTest添加用例方法,再通过实例化TextTestrunner运行测试。
第二种是通过自动识别用例的目录对所有的用例进行运行。使用到discover()函数。
首先来演示第一种手动添加写法:创建一个test_air.py
其中导入的baidu_search是之前写的一个py文件。
#coding:utf-8
import unittest
from baidu_search import Baidu_search
class Xseq(unittest.TestCase):
@classmethod
def setUpClass(cls):
print "前置测试条件"
@classmethod
def tearDownClass(cls):
print "结束测试条件"
def testadd(self):
print '1+1=',1+1
def testsub2(self):
print '3-2=',3-2
def testsub1(self):
print '3-3=',3-3
if __name__=="__main__":
suite = unittest.TestSuite() #实例化用例集
suite.addTest(Xseq("testsub1")) #把testsub1测试用例添加到用例集
suite.addTest(Xseq("testsub2"))
#suite.addTest(Baidu_search("test_search2"))
runner = unittest.TextTestRunner() #实例化运行类
runner.run(suite) #运行用例集,会根据添加的用例顺序进行用例的执行
# unittest.main()#运行所有函数
总结:
实例化用例集: 用例集对象名 = unittest.TestSuite()
添加用例到用力集写法: 用例集对象名.addTest(类名(“函数名”))
实例化运行类: 运行对象名 = unittest.TextTestRunner()
运行用例集: 运行对象名.run(用例集对象名)
在有很多用例需要运行的时候,不可能一个个用例手动过去添加。
或是用例函数方法名改变之后,也不可能每一个添加用例的地方都要去修改,这里就需要用到第二个方法,通过路径去识别用例,从而去实现执行用例的方法。
第二种自动识别路径去运行的方法演示:
#coding:utf-8
import unittest
import os
from baidu_search import Baidu_search
class Xseq(unittest.TestCase):
@classmethod
def setUpClass(cls):
print "前置测试条件"
@classmethod
def tearDownClass(cls):
print "结束测试条件"
def testadd(self):
print '1+1=',1+1
def testsub2(self):
print '3-2=',3-2
def testsub1(self):
print '3-3=',3-3
if __name__=="__main__":
test_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)))#获取当前工作目录
#用discover的方法去覆盖所有的测试用例
# test_dir 要执行的测试用例目录
# test*表示匹配以test开头的所有.py文件
# top_level_dir=None 测试模块的顶级目录,没有的话就写None
discover = unittest.defaultTestLoader.discover(test_dir,pattern="test*.py",top_level_dir=None)
runner = unittest.TextTestRunner() #实例化runner类
runner.run(discover) #执行路径中匹配的所有test*.py用例
总结:
在获取系统目录时需要加入os模块,os模块是对系统操作时必须存在的。当前目录使用过的os方法请前往python os模块
导入os模块: import os
获取当前工作目录: 目录对象名 = os.path.join(os.path.dirname(os.path.realpath(__file__)))
用discover()函数覆盖测试用例方法:
用例集对象名 = unittest.defaultTestLoader.discover(目录对象名,pattern="test*.py",top_level_dir=None)
实例化运行类 : 运行对象名 = unittest.TextTestRunner()
执行所有匹配的测试用例: 运行对象名.run(用例集对象名)
本文介绍了在Python单元测试中批量运行测试用例的两种方法。第一种是手动添加测试用例到TestSuite,通过TextTestRunner运行。第二种是利用unittest的discover()函数自动识别并运行指定目录下的所有test开头的Python文件。当需要运行大量测试用例或避免因用例名称改变而频繁修改代码时,第二种方法更为实用。

4104

被折叠的 条评论
为什么被折叠?



