滨海县建设局网站,公司建网站要多少钱,学做网站好就业吗,手机wap网站定位构建测试套件
在实际项目中#xff0c;随着项目进度的开展#xff0c;测试类会越来越多#xff0c;可是直到现在我 们还只会一个一个的单独运行测试类#xff0c;这在实际项目实践中肯定是不可行的#xff0c;在 unittest中可以通过测试套件来解决该问题。
测试套件随着项目进度的开展测试类会越来越多可是直到现在我 们还只会一个一个的单独运行测试类这在实际项目实践中肯定是不可行的在 unittest中可以通过测试套件来解决该问题。
测试套件Test Suite是由多个测试用例Test Case组成的当然也 可以由多个子测试套件组成
在unittest中把测试用例加载到测试套件的方式有如下方法推荐方式六
方式一、用unittest.TestSuite()实例化测试套件对象后内部的addTest()方法对测试类内部的测试案例进行逐一添加。
注使用addTest()方法不是以test开头的用例也可以执行
代码示例
# 1一条一条添加测试用例
import unittestclass Test_Case(unittest.TestCase):def setUp(self):print(我是setup方法进行测试前的初始化工作)def tearDown(self) - None: # 表示该方法没有返回值print(我是tearDown方法执行测试后的清除工作)print(------------执行结束----------------)def test_aaa(self):print(我是case:test_aaa)def test_bbb(self):print(我是case:test_bbb)def ccc(self):print(我是case:ccc)# 测试套件
# 一条一条用例通过addTest方法添加
# 方法一
# if __name__ __main__:
# suite unittest.TestSuite() # 创建测试套件对象
# suite.addTest(test_case(test_bbb)) # addTest(类名“方法名称”)
# suite.addTest(test_case(ccc)) # 不是以test开头的用例也可以执行
# unittest.main(defaultTestsuite)# 方法二
def suite():suite unittest.TestSuite()suite.addTest(Test_Case(test_bbb)) # addTest(类名“方法名称”)suite.addTest(Test_Case(ccc))return suite
if __name__ __main__:unittest.main(defaultTestsuite)
查看执行结果 方式二、用unittest.TestSuite()实例化测试套件对象后内部的makeSuite()方法对整个测试类进行添加。
注使用makeSuite()方法不是以test开头的方法不会被添加进测试套件中
代码示例
# 添加整个测试类
import unittestclass Test_Case(unittest.TestCase):def setUp(self):print(我是setup方法进行测试前的初始化工作)def tearDown(self) - None: # 表示该方法没有返回值print(我的tearDown方法执行测试后的清除工作)print(------------执行结束----------------)def test_aaa(self):print(我的case:test_aaa)def test_bbb(self):print(我的case:test_bbb)def ccc(self):print(我的case:ccc)# 能否添加整个测试类
if __name__ __main__:# 注意此时不是以test开头的方法不会被添加进测试套件中# 注意makeSuite 可能需要手动添加suite unittest.TestSuite(unittest.makeSuite(Test_Case)) # 里面是类名unittest.main(defaultTestsuite)
查看执行结果 方式三、使用TestLoader()方法添加整个测试类
注unittest.TestLoader().loadTestsFromTestCase() 不是以test开头的方法不会被执行
代码示例
# 3添加整个测试类
# unittest中提供一个TestLoader类用于自动创建一个测试类并且把单个测试自动放入测试集中
# TestLoader 类会自动运行以test开头的测试方法
import unittestclass Test_Case1(unittest.TestCase):def setUp(self):print(我是setup方法进行测试前的初始化工作)def tearDown(self) - None: # 表示该方法没有返回值print(我是tearDown方法执行测试后的清除工作)print(------------执行结束----------------)def test_aaa(self):print(我是case1:test_aaa)def test_bbb(self):print(我是case1:test_bbb)def ccc(self):print(我是case1:ccc)class Test_Case2(unittest.TestCase):def setUp(self):print(我是setup方法进行测试前的初始化工作)def tearDown(self) - None: # 表示该方法没有返回值print(我是tearDown方法执行测试后的清除工作)print(------------执行结束----------------)def test_aaa(self):print(我是case2:test_aaa)def test_bbb(self):print(我是case2:test_bbb)def test_ccc(self):print(我是case2:test_ccc)if __name__ __main__:suite unittest.TestLoader().loadTestsFromTestCase(Test_Case1) # 填 类名unittest.main(defaultTestsuite)
查看执行结果 方式四、添加整个模块下所有的测试类
注unittest.TestLoader().loadTestsFromName() 不是以test开头的方法不执行
代码示例
# 4,添加整个模块下所有的测试类
import unittestclass Test_Case1(unittest.TestCase):def setUp(self):print(我是setup方法进行测试前的初始化工作)def tearDown(self) - None: # 表示该方法没有返回值print(我的tearDown方法执行测试后的清除工作)print(------------执行结束----------------)def test_aaa(self):print(我是case1:test_aaa)def test_bbb(self):print(我是case1:test_bbb)def ccc(self):print(我是case1:test_ccc)class Test_Case2(unittest.TestCase):def setUp(self):print(我是setup方法进行测试前的初始化工作)def tearDown(self) - None: # 表示该方法没有返回值print(我的tearDown方法执行测试后的清除工作)print(------------执行结束----------------)def test_aaa(self):print(我是case2:test_aaa)def test_bbb(self):print(我是case2:test_bbb)def test_ccc(self):print(我是case2:test_ccc)if __name__ __main__:# 通过TestLoader中字符串的方法加载用例不以test开头的方法不执行# 1增加一个测试用例 模块名称.类名.方法名称# suite unittest.TestLoader().loadTestsFromName(demo11_测试套件4.test_case1.test_aaa)# 2,增加整个测试类# suite unittest.TestLoader().loadTestsFromName(demo11_测试套件4.test_case1)# 3增加整个.py模块下所有的测试类suite unittest.TestLoader().loadTestsFromName(demo11_测试套件4) # 填 py文件名unittest.main(defaultTestsuite)
查看执行结果 方式五、将多个子测试集进行整合到一个大的测试套件中
代码示例
# 将多个子测试集进行整合到一个大的测试套件中
import unittest
from unittest框架 import demo11_测试套件4 # 导入其他模块
from unittest框架 import demo08_测试套件1 # 导入其他模块# 依次创建多个套件
# 1单个用例套件
suite01 unittest.TestLoader().loadTestsFromName(demo08_测试套件1.Test_Case.test_aaa)
# 2,整个类
suite02 unittest.TestLoader().loadTestsFromName(demo08_测试套件1.Test_Case)
# 3,整个.py模块
suite03 unittest.TestLoader().loadTestsFromName(demo11_测试套件4)main_suite unittest.TestSuite() # 主套件
main_suite.addTest(suite01) # 添加子套件到主套件中
main_suite.addTest(suite02)
main_suite.addTest(suite03)unittest.main(defaultTestmain_suite)
查看执行结果 方式六、使用discover()来实现添加执行整个目录下所有的测试用例 推荐
当测试用例存放在多个不同子目录下我们用之前的把用例加载到测试集合中的方 式还是不太方便需要不断的去导入和添加测试用例模块此时可以通过discover()方法 来实现
方法如下 discover(start_dir,pattern test *.py, top_level_dir None)
start_dir要测试的模块名或测试用例目录
patterntest*.py表示用例文件名的匹配原则例子中匹配文件名为以test开头的.py文件星号*表示任意多个字符
top_level_dirNone测试模块的顶层目录如果没有顶层目录默认为None。
该方法通过从指定的开始目录递归到子目录中查找所有测试模块并返回包含它们的TestSuite对象只要与模式匹配测试文件和可导入的模块名称才会被加载。
如果一个测试文件的名称符合pattern会自动查找该文件中派生自TestCase 的类包含的 test 开头的方法作为测试方法
代码示例
# 使用discover()来实现添加执行整个目录下所有的测试用例
import os
import unittest
import HTMLTestRunner
import time# 获取当前路径
curren_path os.path.dirname(__file__)
# 获取测试用例目录的路径
case_path os.path.join(curren_path,all_case)# 从当前路径回到上一层路径
# case_path os.path.abspath(os.path.dirname(os.path.dirname(__file__)))# 匹配测试用例路径下的所有的测试方法
discover unittest.defaultTestLoader.discover(start_dircase_path, # 用例路径pattern*_case*.py,top_level_dirNone) # 文件类型
# 创建主套件
main_suite unittest.TestSuite()
# 把测试用例路径添加到主套件中
main_suite.addTest(discover)
# 执行主套件里的测试用例
unittest.main(defaultTestmain_suite)
查看执行结果 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你