unittest框架从编写测试脚本到生成测试报告

目录

1、什么是UnitTest框架

2、为什么使用UnitTest框架

3、UnitTest核心要素

4、UnitTest使用流程

5、unittest断言

6、TestCase测试用例

7、TestSuit测试套件

8、TestLoader测试加载

8.1、discover加载

8.2、defaultTestLoader通过类名、模块名加载

8.3、小结

9、Fixture测试夹具

10、参数化

10.1、环境准备

10 .2、通过元组列表实现参数化

10.3、使用json数据参数化

11、跳过

12、测试报告


1、什么是UnitTest框架

​ 概念:UnitTest是Python自带的一个单元测试框架,可以用它来做单元测试

2、为什么使用UnitTest框架

  • 能够组织多个用例去执行

  • 提供丰富的断言方法

  • 能够生成测试报告

3、UnitTest核心要素

  • TestCase(测试用例)

  • TestSuite(测试套件,把多个TestCase集成到一个测试TestSuite)

  • TextTestRunner(执行测试用例)

  • Fixture(测试夹具)

4、UnitTest使用流程

第一步:导入unittest模块

第二步:创建一个类,这个类必须继承自UnitTest.TestCase类

第三步:类中每个方法代表一个测试用例,方法名必须以test开头

第四步:将测试用例加入到TestSuite

第五步:使用TextTestRunner执行

5、unittest断言

    让程序代替人判断程序执行结果是否符合预期结果的过程,需要在测试用例中对测试结果进行断言。

assertEqual(a, b, msg=None)       # a == b    断言a和b是否相等,相等则测试用例通过
assertNotEqual(a, b,msg=None) # a != b 断言a和b是否相等,不相等则测试用例通过
assertTrue(x,msg=None) # x is True 断言x是否True,是True则测试用例通过  
assertFalse(x,msg=None)  # x is False 断言x是否False,是False则测试用例通过
assertIn(a, b,msg=None) # a in b 断言a是否在b中,在b中则测试用例通过  
assertNotIn(a, b,msg=None)    # a not in b 断言a是否在b中,不在b中则测试用例通过
  • assertEqual(参数1,参数2,msg=None)

    • 如果参数1和参数2相等,断言成功,否则断言失败

    • 参数1存放实际结果,参数2存放预期结果

    • msg默认信息为None,可以给msg指定信息,当断言失败时,会作为错误信息返回

6、TestCase测试用例

        在编写测试用例之前,我们需要创建一个存放测试用例的类,导入unittest,并且要继承unittest.TestCase类,该类中的方法必须要以test开头

        下面创建两个测试类,StringTest和NumberTest,分别写了两个测试方法

StringTest类

import unittest
class StringTest(unittest.TestCase):
    def test_Method1(self):
        self.assertIn("hello","hello world")
    def test_Method2(self):
        self.assertEqual("H","Happy")

NumberTest类

import unittest
class NumberTest(unittest.TestCase):
    def test_funa(self):
        self.assertEqual(1,2,"两个参数不相等")
    def test_funb(self):
        self.assertEqual(2,2)

        这两个类可以直接运行,直接在该类中,右键点击Run Unittests for 模块名.类名,就可以直接查看测试结果,或者也可以加入如下代码,直接调用unittest.main()来执行

if __name__ == "__main__":
    unittest.main()

       单独执行NumberTest类,一共两条测试用例,一条通过,一条不通过,并打印了错误信息

7、TestSuit测试套件

       上面介绍了如何执行单个测试类里面的测试用例,但是测试是不可能只写一个测试类,当需要执行多个测试类中的测试方法时,需要用到测试套件,把测试用例组装起来。

        1、实例化:suite = unittest.TestSuit() (suite:为TestSuit实例化的名称)

        2、添加单个用例:

suit.addTest(ClassName("MethodName")) (ClassName:为类名 MethodName:为方法名)

        3、添加多个测试用例,参数为列表suit.addTests([ClassName("MethodName1"),ClassName("MethodName2")]) 

​        4、TestSuit需要配合TextTestRunner才能被执行,

还以StringTest和NumberTest为例,介绍TestSuit的使用


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值