四.python 单元测试批量运行测试用例

在单元测试中批量运行测试用例的方法有两种。

第一种是通过手动添加,通过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(用例集对象名)

 

你可能感兴趣的:(python2,unittest单元测试,python,unittest,批量运行用例,discover())