unittest自动化测试框架核心要素以及应用(图)

测试工具 创建于:2022-04-08
  
1. unittest核心要素   
·unittest介绍   
测试框架,不仅仅用于
单元测试   python自动的测试包   用法和django.test.TestCase类似   
1.1、unitest介绍和核心要素   
自动化测试最初接触的就是python中的unitest框架,因为它是python自带的一套测试框架,学习起来也相对较容易,下面是unitest框架的四个概念(较为一目了然):
  test case:就是我们的
测试用例,unittest中提供了一个基本类TestCase,可以用来创建新的测试用例,一个TestCase的实例就是一个测试用例;unittest中测试用例方法都是以test开头的,且执行顺序会按照方法名的ASCII值排序。   test fixure:测试夹具,用于测试用例环境的搭建和销毁。即用例测试前准备环境的搭建(SetUp前置条件),测试后环境的还原(TearDown后置条件),比如测试前需要登录获取token等就是测试用例需要的环境,运行完后执行下一个用例前需要还原环境,以免影响下一条用例的测试结果。   test suite:测试套件,用来把需要一起执行的测试用例集中放到一块执行,相当于一个篮子。我们可以使用TestLoader来加载测试用例到测试套件中。   test runner:用来执行测试用例的,并返回测试用例的执行结果。它还可以用图形或者文本接口,把返回的测试结果更形象的展现出来,如:HTMLTestRunner。  
 1.2、unittest核心要素的使用   # ---*--- encoding: utf-8 ---*---   '''   @Author  :   {gan sir}   @Time    :   2022/3/4 14:22   '''   import unittest   #测试类、继承于unittest.TestCase   class MyTest(unittest.TestCase):       def test_1(self):           print("test_1")     def test_1(self):           print("test_1")   if __name__ == '__main__':   #类的外面   #2、容器,容器添加测试用例       suit = unittest.BaseTestSuite()   #测试用例的执行顺序,按添加的顺序执行       suit.addTest(MyTest('test_1'))       suit.addTest(MyTest('test_1'))   #3、运行容器中的测试用例      runner = unittest.TextTestRunner()      runner.run(suit)

  
1.3、了解Fixture   测试类中:实现了前、后置方法,他就是一个fixture。

  
1.4、掌握defaultTestLoader   # ---*--- encoding: utf-8 ---*---   '''   @Author  :   {gan sir}   @Time    :   2022/3/4 14:22   '''   import unittest   # 测试类、继承于unittest.TestCase   class MyTest(unittest.TestCase):       def test_1(self):           print("test_11111111111111")           def test_1(self):               print("test_2222222222222")   if __name__ == '__main__':       #2.容器,容器添加测试用例       #默认找指定路径下,所有test开头文件       #参数1;路径,参数2:指定文件       suite = unittest.defaultTestLoader.discover('./','test_2_demo.py')       #3.运行容器中的测试用例       runner = unittest.TextTestRunner()       runner.run(suite)

  
2、掌握unitest基本使用   import unittest       # unittest的单元测试框架                        class TestConut(unittest.TestCase):  # TestConut指类的名字,继承了TestCase这个类,即拥有了该类的所有方法,首字母大写                    @classmethod                         def setUpClass(cls) -> None:                             print('setUpClass')        def setUp(self) -> None:  # 这里setup指执行测试用例之前的预操作,即每次执行一条测试用例的时候都会执行该操作                   print('test start')                def test_01(self):    # 此框架所定义的函数名执行测试用例的时候必须以test开头,且执行测试用例时会默认按照阿拉伯数字的顺序执行及1,2,3,4...                            print('执行test_01测试')                         def test_02(self):                           print('执行test_02测试')                         def test_03(self):                           print('执行test_03测试')      def test_s(self):        print('test_s')        a = 1 + 1        self.assertEqual(a,2,'结果不为2')       def test_f(self):        print('test_f')        a = 1 + 2        self.assertEqual(a,3,'结果不为3')       def tearDown(self):    # 这里和上面的setup相对应,即执行完每个测试用例之后的结束操作,如关闭浏览器                             print('test end')                        @classmethod                         def tearDownClass(cls):                              print('最后结束的!')                      if __name__ =='_main_':                          unittest.main()

  
3、断言   #  arg1和arg2相等,测试通过,标志为T。   #  arg1和arg2不相等,测试不通过,标志为F,抛出异常,显示msg的信息      unittest.assertEqual(arg1,arg2,msg=None)


  
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理

权威发布,测试选择不纠结!第15届软件测试行业报告,直击行业发展,把握未来方向!

原文地址:http://www.51testing.com/?action-viewnews-itemid-5099591

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

发表于:2022-4-08 10:00 作者:ganfd 来源:博客园