unittest加载自动化测试用例的几种方式

文章目录


利用python进行测试时,测试用例的加载方式有2种:

一种是通过unittest.main()来启动所需测试的测试模块;
一种是添加到testsuite集合中再加载所有的被测试对象,而testsuit里存放的就是所需测试的用例,下面分别列出3种方法的具体使用方式:

1.通过unittest.main()来执行测试用例的方式:

import unittest 
class UCTestCase(unittest.TestCase):
    def setUp(self):
        #测试前需执行的操作
        .....      
    def tearDown(self):
        #测试用例执行完后所需执行的操作
        .....      
    # 测试用例1
    def testCreateFolder(self):
        #具体的测试脚本
        ......      
    # 测试用例2
    def testDeleteFolder(self):
        #具体的测试脚本
        ......       
if __name__ == "__main__":
    unittest.main()

2.通过testsuit来执行测试用例的方式:

import unittest 
# 执行测试的类
class UCTestCase(unittest.TestCase):
    def setUp(self):
        #测试前需执行的操作
        .....       
    def tearDown(self):
        #测试用例执行完后所需执行的操作
        .....
       
    # 测试用例1
    def testCreateFolder(self):
        #具体的测试脚本
        ......      
    # 测试用例2
    def testDeleteFolder(self):
        #具体的测试脚本
        ......       
if __name__ == "__main__":
    # 构造测试集
    suite = unittest.TestSuite()
    suite.addTest(UC7TestCase("testCreateFolder"))
    suite.addTest(UC7TestCase("testDeleteFolder")) 
    # 执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

3.通过testLoader方式:

import unittest 
class TestCase1(unittest.TestCase):
    #def setUp(self):
    #def tearDown(self):
    def testCase1(self):
        print 'aaa'      
    def testCase2(self):
        print 'bbb'
  
class TestCase2(unittest.TestCase):
    #def setUp(self):
    #def tearDown(self):
    def testCase1(self):
        print 'aaa1'  
    def testCase2(self):
        print 'bbb1'
        
if __name__ == "__main__":
    #此用法可以同时测试多个类
    suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1) 
    suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase2) 
    suite = unittest.TestSuite([suite1, suite2]) 
    unittest.TextTestRunner(verbosity=2).run(suite)

下面针对上述脚本中应用到的unittest模块下的几个成员进行简单的介绍,以便于理解上述代码:

TestCase:所有测试用例的基本类,给一个测试方法的名字,就会返回一个测试用例实例;

TestSuit:组织测试用例的实例,支持测试用例的添加和删除,最终将传递给 testRunner进行测试执行;

TextTestRunner:进行测试用例执行的实例,其中Text的意思是以文本形式显示测试结果。测试的结果会保存到TextTestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息;

TestLoader:用来加载TestCase到TestSuite中的,其中有几个 loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例

理解几者之间关系图可参考链接 unittest加载自动化测试用例的几种方式

简单项目目录如下:

runAllTest.py 如下:

# conding:utf-8
import unittest

test_dir = './test_case'  #用例目录
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py') #加载所有的测试类并返回测试套件discover

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(discover)  #运行测试套件discover

这样,只需运行runAllTest.py文件,即可自动执行所有的测试用例。

4.利用配置文件加载测试用例

首先新建文件输入测试用例的路径allTestCase.txt

C:/Users/admin/Desktop/Auto/AutoTest/cases/t.py

然后读取取文件利用testloader加载

def all_case():
    # discover = unittest.defaultTestLoader.discover(case_path, pattern="t.py", top_level_dir=None)
    # print("测试用例集合:"+str(discover))
    f2 = open(os.path.dirname(d) + "/AutoTest/conf/allTestCase.txt", "r")
    list=[]
    for line2 in f2:
        index = line2.rfind("/")
        indexPy = line2.rfind(".py")
        path = line2[0:index]
        name = line2[index + 1:indexPy + 3]
        print("文件列表" + path + ":" + name + ":" + str(index) + ":" + str(indexPy))
        suite1 = unittest.defaultTestLoader.discover(path, pattern=name, top_level_dir=None)
        list.append(suite1)
    suite = unittest.TestSuite(list)
    return suite

其他操作同三

上一篇:Request+Unittest接口测试框架基础搭建


下一篇:unittest自动化框架之yaml数据获取工具封装