湘潭网站制作建设,网站建设跟推广评价指标有什么关系,西安关键字优化哪家好,泰州seo网络公司前言 说到测试框架#xff0c;unittest是我最先接触的自动化测试框架之一了#xff0c; 而且也是用的时间最长的#xff0c; unittest框架有很多方法加载用例#xff0c;让我们针对不同的项目#xff0c;不同项目的大小及用例的多少自己选择加载方式。今天我们就简单的说说…前言 说到测试框架unittest是我最先接触的自动化测试框架之一了 而且也是用的时间最长的 unittest框架有很多方法加载用例让我们针对不同的项目不同项目的大小及用例的多少自己选择加载方式。今天我们就简单的说说几种加载方式。
方式1 简单的实例 1 import unittest2 3 4 class LoadTest(unittest.TestCase):5 6 def test_case_01(self):7 self.assertEqual(1, 1)8 9 def test_case_02(self):
10 self.assertEqual(2, 1)
11
12
13 if __name__ __main__:
14 suit unittest.TestSuite()
15 suit.addTest(LoadTest(test_case_01))
16 suit.addTest(LoadTest(test_case_02))
17
18 runner unittest.TextTestRunner()
19 runner.run(suit)
# 输出
..
----------------------------------------------------------------------
Ran 2 tests in 0.000sOKProcess finished with exit code 0
说明 首先我们需要创建一个测试套件suite其次通过addTest方法添加用例addTest的参数为单个用例 比如实例中记载的是LoadTest测试类中的test_case_01 和 02, 我们就按照上述方式传递参数。如果加载运行用例的代码在另一个文件中我们需要在此文件中导入测试类。
方式2 简单实例 1 import unittest2 3 4 class LoadTest(unittest.TestCase):5 6 def test_case_01(self):7 self.assertEqual(1, 1)8 9 def test_case_02(self):
10 self.assertEqual(2, 2)
11
12
13 if __name__ __main__:
14 suit unittest.TestSuite()
15 case_list [LoadTest(test_case_01), LoadTest(test_case_02)]
16 suit.addTests(case_list)
17 runner unittest.TextTestRunner()
18 runner.run(suit)
# 输出
..
----------------------------------------------------------------------
Ran 2 tests in 0.000sOKProcess finished with exit code 0
说明 方式2是通过同样的原理加载测试用例的只不过是一次性加载多个不需要多次调用addTest方法我们只需要调用一次addTests方法加载一个用例组成的序列相比较而言第二种比第一种稍微方便那么一点
方式3 简单实例 1 import unittest2 3 4 class LoadTest(unittest.TestCase):5 6 def test_case_01(self):7 self.assertEqual(1, 1)8 9 def test_case_02(self):
10 self.assertEqual(2, 2)
11
12
13 if __name__ __main__:
14 suit unittest.TestSuite() # 测试套件
15 loader unittest.TestLoader() # 用例加载器
16 test_class loader.loadTestsFromTestCase(LoadTest) # 加载测试类
17 suit.addTest(test_class) # 测试类添加到测试套件中
18 runner unittest.TextTestRunner() # 用例运行器
19 runner.run(suit) # 运行
# 输出
..
----------------------------------------------------------------------
Ran 2 tests in 0.000sOKProcess finished with exit code 0说明 实例是通过创建一个加载器来加载测试用例可以看到加载器需要加载一个测试类 不需要像前两个方式那样一个一个加载测试用例但是如果一个模块中有多个测试类的情况我们仍然需要编写多条加载代码 test_class loader.loadTestsFromTestCase(LoadTest) # 加载测试类
方式4 简单实例 1 import unittest2 3 4 class LoadTest(unittest.TestCase):5 6 def test_case_01(self):7 self.assertEqual(1, 1)8 9 def test_case_02(self):
10 self.assertEqual(2, 2)
11
12
13 if __name__ __main__:
14 pass 1 import unittest2 import sys3 sys.path.append(.)4 import unittest_tc_load5 6 if __name__ __main__:7 suit unittest.TestSuite() # 测试套件8 loader unittest.TestLoader() # 用例加载器9 test_module loader.loadTestsFromModule(unittest_tc_load) # 加载测试类
10 suit.addTest(test_module) # 测试类添加到测试套件中
11 runner unittest.TextTestRunner() # 用例运行器
12 runner.run(suit) # 运行
说明 这个方式其实是和方式3一样的原理 只不过这个方式是直接加载整个测试模块 如果测试模块中含有多个测试类都将被加载这样批量添加测试会很方便前提是我们需要导入我们测试模块
方式5 说明
方式5是直接通过在创建测试套件的时候直接把测试模块添加到测试套件中看下面的代码
1
2 loader unittest.TestLoader() # 用例加载器
3 test_modules (loader.loadTestsFromModule(unittest_tc_load1), loader.loadTestsFromModule(unittest_tc_load2)) # 加载测试类
4 suit unittest.TestSuite(teststest_modules) # 测试套件
5 runner unittest.TextTestRunner() # 用例运行器
6 runner.run(suit) # 运
unittest_tc_load1和unittest_tc_load2为两个测试模块我们使用这种方式的时候需要先导入这两个模块
方式6 简单实例 1 import unittest2 3 4 class LoadTest(unittest.TestCase):5 6 def test_case_01(self):7 self.assertEqual(1, 1)8 9 def test_case_02(self):
10 self.assertEqual(2, 2)
11
12
13 if __name__ __main__:
14 suite unittest.makeSuite(LoadTest)
15 runner unittest.TextTestRunner()
16 runner.run(suite)
# 输出
..
----------------------------------------------------------------------
Ran 2 tests in 0.000sOKProcess finished with exit code 0
说明 方式6的方法同样只能加载一个测试类但是相比前面几种方法代码少了很多同样如果运行多个测试类仍然需要创建多个suite
方式7 简单实例 1 import unittest2 3 4 class LoadTest(unittest.TestCase):5 6 def test_case_01(self):7 self.assertEqual(1, 1)8 9 def test_case_02(self):
10 self.assertEqual(2, 2)
11
12
13 if __name__ __main__:
14 discover unittest.defaultTestLoader.discover(start_dir., patternunittest*.py)
15 runner unittest.TextTestRunner()
16 runner.run(discover)
# 输出
..
----------------------------------------------------------------------
Ran 2 tests in 0.000sOKProcess finished with exit code 0
说明 方式7通过defaultTestLoader.discover()方法来发现用例我们可以看到第一个参数start_dir 表示用例的目录 pattern 表示匹配什么样的文件搜索测试用例比较上面几种方法个人认为这种方法是最灵活的我们可以通过规范测试模块文件的命名使用这种方式一次性加载所有的用例
总结 大概方法差不多就这些其实还有很多其他加载方法 比如通过TestLoader方法加载用例我们可以看到他其他加载用例的方法。 最后呢还是需要根据个人实际中的一个需求选择不同的方法 正确的方法往往会事半功倍。
感谢每一个认真阅读我文章的人
我个人整理了我这几年软件测试生涯整理的一些技术资料包含电子书简历模块各种工作模板面试宝典自学项目等。欢迎大家点击下方名片免费领取千万不要错过哦。