unittest--运行不同文件下的测试
前戏
在前面我们都是在一个py文件里写测试用例,当然在实际项目中,肯定不会这么干,这样不是一个优秀的测试攻城狮,这时候我们就要查找不同目录下的测试来进行运行了
运行不同文件下的用例
先来看下文件结构

import unittest class Test_case01(unittest.TestCase): def test01(self): print('test01') def test02(self): print('test02') def test03(self): print('test03') def test04(self): print('test04') def test05(self): print('test05')

import unittest class Test_case02(unittest.TestCase): def test01(self): print('test01') def test02(self): print('test02') def test03(self): print('test03') def test04(self): print('test04') def test05(self): print('test05')

import unittest class Test_case03(unittest.TestCase): def test01(self): print('test01') def test02(self): print('test02') def test03(self): print('test03') def test04(self): print('test04') def test05(self): print('test05')
testrun.py
import unittest from Testmodule.test_01 import Test_case01 from Testmodule.test_02 import Test_case02 from Testmodule.test_03 import Test_case03 case_01 = unittest.TestLoader().loadTestsFromTestCase(Test_case01) case_02 = unittest.TestLoader().loadTestsFromTestCase(Test_case02) case_03 = unittest.TestLoader().loadTestsFromTestCase(Test_case03) suote = unittest.TestSuite([case_01, case_02, case_03]) # 添加到套件里面 unittest.TextTestRunner().run(suote) # 执行所有的
执行结果
...............
test01
test02
test03
test04
test05
test01
test02
test03
test04
test05
test01
test02
test03
test04
test05
使用discover执行所有用例
上面我们一个一个的添加了用例,如果有几十个py文件,难道要添加几十次吗?答案肯定不是的,我们可以使用discover来批量运行
discover里面有三个参数
- -case_dir:这个是待执行用例的目录
- -pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本
- -top_level_dir:这个是顶层目录的名称,一般默认等于None就行
我们还是以上面的三个py文件为例,这时候更改testrun.py
import unittest class Run_allCase(unittest.TestCase): def run_case(self): case_path = r'E:\django-project\NB_crm\Testmodule' # 第一个参数,文件路径,第二个参数,匹配规则,如果本来就是以test开头的,则可不传 suite = unittest.defaultTestLoader.discover(case_path, 'test*.py') unittest.TextTestRunner().run(suite) if __name__ == '__main__': r = Run_allCase() r.run_case()
结果还是和上面的运行结果一样,我们可以看出来,使用这种方法,很简单,以后直接加py文件就可以了,不需要再添加到里面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)