一、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)
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?