Python----unittest discover()方法与执行顺序

一、Unittest discover()
可以根据不同的功能创建不同的测试文件,甚至是不同的测试目录,测试文件中还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,让整体结构更加清晰
一般是通过addTest()来添加、删除用例,不同文件不同目录,此时用addTest()就比较麻烦

TestLoader类中提供的discover()方法可以识别测试用例,找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名时才加载
discover(start_dir,pattern='test*.py',top_level_dir= None)
start_dir:要测试的模块名或测试用例目录
pattern='test*.py':表示用例文件名的匹配原则。此处匹配以“test”开头的.py 类型的文件,* 表示任意多个字符
top_level_dir= None 测试模块的顶层目录,如果没有顶层目录,默认为None

下面通过两个实例来说明:
实例1

import unittest
case_path = '****' #测试用例的目录 discover = unittest.defaultTestLoader.discover(case_path,pattern='test*.py') if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(discover)
#discover()方法会自动根据测试用例目录case_path 匹配查找测试用例文件,并将查找到的测试用例组装到测试套件中,因此,可以直接通过run()方法执行discover,大大简化了测试用例的查找与执行

实例2

def run_all_case():
suite = unittest.TestSuite()
all_py = unittest.defaultTestLoader.discover(setting.CASE_PATH,'*.py')
#discover()方法会自动根据测试目录匹配查找测试用例文件(*.py),并将查找到的测试用例组装到测试套件中
[ suite.addTests(py) for py in all_py]#列表生成式,添加文件里面的case到测试集合里面
run=bf(suite)
today = datetime.datetime.today().strftime('%Y-%m-%d %H-%M-%S')
title = '%s_接口测报告.html'%today
report_abs_path = os.path.join(setting.REPORT_PATH,title) #
run.report(title,filename=title,log_path=setting.REPORT_PATH)
上一篇:LeetCode算法题-Rotate String(Java实现)


下一篇:056_异常