温岭市市住房和城乡建设规划局网站,山东济南网站建设优化,天津关键词排名推广,网络架构模拟设计简介 我们在写用例的时候#xff0c;单个脚本的用例好执行#xff0c;那么多个脚本的时候#xff0c;如何批量执行呢#xff1f;这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后#xff0c;用 unittest 里面的 TextTestRunner 这里类的 run 方…
简介 我们在写用例的时候单个脚本的用例好执行那么多个脚本的时候如何批量执行呢这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后用 unittest 里面的 TextTestRunner 这里类的 run 方法去一次执行多个脚
本的用例。那么前边介绍那么多都是半道开始半道出家这篇就带大家从头到尾一步一步给小伙伴们详细介绍一下。
新建测试项目
1、pycharm 左上角 FileNew ProjetcPure Python,在 location 位置命名一个测试工程的名称honggetest 2、然后点击“Create” 3、选中刚才新建的工程右键NewPython Package新建一个 case 文件夹 4、重复第 3 步的操作新建一个 case 的文件夹在里面添加一个 baidu 和一个 blog 的文件夹里面分别有两个用例的脚本如下图所示。test_01,test_02,test_03,test_04 是我们写用例的脚本 5、test_01创建完后打开脚本写入用例其他的可以复制即可 6、参考代码 1 # coding:utf-82 import unittest3 import time4 5 class Test(unittest.TestCase):6 def setUp(self):7 print (start!)8 def tearDown(self):9 time.sleep(1)
10 print (end!)
11 def test01(self):
12 print (执行测试用例 01)
13 def test02(self):
14 print (执行测试用例 02)
15 def test03(self):
16 print (执行测试用例 03)
17
18 if __name__ __main__:
19 unittest.main()
7、在 honggetest 这个项目下面创建一个脚本 run_all_case.py接下来用这个脚本去批量执行所有的用例。 discover 加载测试用例
1、discover 方法里面有三个参数 -case_dir:这个是待执行用例的目录。 -pattern这个是匹配脚本名称的规则test*.py 意思是匹配 test 开头的所有脚本。 -top_level_dir这个是顶层目录的名称一般默认等于 None 就行了。
2、discover 加载到的用例是一个 list 集合需要重新写入到一个 list 对象 testcase 里这样就可以用 unittest 里面的 TextTestRunner 这里类的 run 方法去执行。 3、运行后结果入下就是加载到的所有测试用例了 参考代码 1 # codingutf-82 #1.先设置编码utf-8可支持中英文如上一般放在第一行3 4 #2.注释包括记录创建时间创建人项目名称。5 6 Created on 20237 author: 8 Project:学习和使用discover批量执行测试用例9
10 #3.导入unittest模块
11 import unittest
12 #4.编写测试用例和断言
13 def all_case():
14 # 待执行用例的目录
15 case_dir C:\\Users\\DELL\\PycharmProjects\\honggetest\\case
16 testcase unittest.TestSuite()
17 discover unittest.defaultTestLoader.discover(case_dir,
18 patterntest*.py,
19 top_level_dirNone)
20 #discover方法筛选出用例循环添加到测试套件中
21 for test_suit in discover:
22 for test_case in test_suit:
23 #添加用力到testcase
24 testcase.addTests(test_case)
25 print(testcase)
26 return testcase
27 if __name__ __main__:
28 # 返回实例
29 runner unittest.TextTestRunner()
30 # run 所有用例
31 runner.run(all_case())
run 测试用例
1、为了更方便的理解可以把上面 discover 加载用例的方法封装下写成一个函数
2、先返回 TextTestRunner()类的实例
3、调用 run 方法去执行 all_case()这个函数 参考代码
# codingutf-8
#1.先设置编码utf-8可支持中英文如上一般放在第一行#2.注释包括记录创建时间创建人项目名称。Created on 2023
author:
Project:学习和使用discover批量执行测试用例#3.导入unittest模块
import unittest
#4.编写测试用例和断言
def all_case():# 待执行用例的目录case_dir C:\\Users\\DELL\\PycharmProjects\\honggetest\\casetestcase unittest.TestSuite()discover unittest.defaultTestLoader.discover(case_dir,patterntest*.py,top_level_dirNone)testcase.addTests(discover) # 直接加载 discover 可以兼容python2和3print(testcase)return testcase
if __name__ __main__:# 返回实例runner unittest.TextTestRunner()# run 所有用例runner.run(all_case())
小结
1、unittest模块中的TestLoader类有一个discover方法Python2.7之后discover(start_dir, patterntest*.py,top_level_dirNone)递归查找指定目录start_dir及其子目录下的全部测试模块将这些测试模块放入一个TestSuite 对象并返
回。只有匹配pattern的测试文件才会被加载到TestSuite中。如果一个测试文件的名称符合pattern将检查该文件是否包含 load_tests() 函数如果 load_tests() 函数存在则由该函数负责加载本文件中的测试用例。如果不存在就会执行
loadTestsFromModule()查找该文件中派生自TestCase 的类包含的 test 开头的方法。
2、用例路径另一种写法
1 case_dir os.path.join(os.getcwd(), case)
总结在测试行业摸爬滚打也有十几年了在学习的途中也是收藏了很多的学习资源下面是软件测试到测试开发全职业生涯全套学习资料
【需要的可以点击下方官方推广小卡片扫码备注000免费领取】