单元测试框架:unittest 简介

一、单元测试框架简介

说明:简介部分参考了这篇博文

1、什么是单元测试?

单元测试就是对单个模块或者单个类或者单个函数进行测试,一般是研发做的,也就是常说的白盒测试;按照阶段来分,测试一般分为一般就是单元测试、集成测试、系统测试、验收测试。

2、为什么要做单元测试?

单元测试之后,是集成测试,只有单个功能模块测试通过之后,才能把单个功能模块集成起来做集成测试;从底层发现bug,可以减少合成后出现的很多问题;另外越早发现bug越好,因为如果到了后期才发现就要推倒重来,对于时间和成本来说,非常浪费。

3、单元测试对于测试人员来说需要做什么?

简单来说,就是为了执行测试用例-输入测试数据-输出测试结果,进而会用到python中的unittest模块

4、单元测试框架的作用?

  • 提供用例组织与执行:
    当测试用例只有几条时,可以不必考虑用例的组织,但是当测试用例达到成百上千条时,大量的测试用例堆砌在一起,就产生了扩展性与维护性等问题,需要考虑用例的规范与组织问题了。
  • 提供丰富的断言方法:
    不论是功能测试,还是单元测试,在用例执行完成之后都需要将实际结果与进行预期结果的进行比较(断言),从而断定用例是否执行通过。单元测试框架一般会提供丰富的断言方法。 例如判断相等/不等、包含/不包含、True/False 的断言方法等。
  • 提供丰富的日志:
    当测试用例执行失败时能抛出清晰的失败原因, 当所有用例执行完成后能提供丰富的执行结果。 例如总执行时间、失败用例数、成功用例数等。

所以从这些特性来看,单元测试框架可以 帮助我们更好的完成自动化测试。

5、单元测试框架有哪些

每个语言都有自己对应的单元测试框架
Java—Junit
c+±–gtest
Python—unittest

二、unittest的使用

1、使用规则

  • 定义一个类继承继承unittest.TestCase
  • 实现setUp /tearDown方法 或 setUpClass/tearDownClass方法
  • 定义测试方法,方法名以test开头,若要各个方法按特定顺序 执行可在test后加数字

2、断言

若断言失败,则断言后的代码不会执行

  • 常用的断言有:
    (1)self.assertEqual(预期结果,实际结果) 断言预期结果等于实际结果
    (2)self.assertNotEqual(预期结果,实际结果) 断言预期结果不等于实际结果
    (3)self.assertTrue(实际结果) 断言预期结果为真(True)
    (4)self.assertFalse(实际结果) 断言预期结果为假(False)
    (5)self.assertIsNone(实际结果) 断言预期结果为空(None)
    (6)self.assertIsNotNone(实际结果) 断言预期结果不为空(NotNone)

3、执行顺序

  • 若多个测试方法之间没有业务上的先后顺序,则用setUp/tearDown,每个测试方法前后都会执行一次setUp/ tearDown;多个测试方法顺序: 按方法名ascii码从小到大;

  • 若多个测试方法之间有业务上的先后顺序,则用setUpClass/tearDownClass;只执行一次setUpClass/tearDownClass;多个测试方法顺序: 按方法名ascii码从小到大;

# setUp/ tearDown使用举例
import unittest
from test1 import JSQ

class JSQTest(unittest.TestCase): # 定义一个 类 去继承 单元测试框架类   ,这个类不调用也会执行里边的类方法
    def setUp(self):  # 实现setUp方法 一般用于打开浏览器
        print("-----setUp---")
        self.jsq=JSQ()

    def test2Jia(self): # 测试方法以test开头,可在test后加数字规定测试方法测试的顺序
        print("-----testJia----")
        # jsq=JSQ()
        rr=self.jsq.jia(1,2)
        er=3
        self.assertEqual(er,rr)  # 断言相等
        # self.assertNotEqual(er,rr)
        # self.assertTrue(rr)
        # self.assertFalse(rr)
        # self.assertIsNone(rr)
        # self.assertIsNotNone(rr)
        print("aaaaaaaaaaaa")

    def test1Jian(self):
        print("-------testJian----")
        # jsq=JSQ()
        self.jsq.jian(1,2)

    def tearDown(self):
        print("-----tearDown---")

# setUpClass/tearDownClass 使用举例
import unittest
from test1 import JSQ

class TaobaoTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.jsq=JSQ()
        print("-----setUpClass----")

    def test1LoginSucce(self):
        print("----testLoginSucce----")

    def test2Buy(self):
        print("---testBuy-----")

    @classmethod
    def tearDownClass(self):
        print("-----tearDown---")
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值