2023Python单元测试框架介绍(超详细~)

1123 篇文章 44 订阅
830 篇文章 2 订阅

引言

  我们在使用python做接口测试的时候,搭建的接口测试框架都是python的单元测试框架,而python的单元测试框架很多unittest、pytest、nose等,其中unittest单元测试框架,这个我之前介绍了很多实战

什么是单元测试

  我们知道软件测试按开发阶段划分:单元测试,集成测试,系统测试,验收测试,用户测试等。这里说的单元测试,就是第一阶段,一般都是开发去做,在国内绝大部分公司都是开发去做单元测试。单元测试就是测试的对象是程序中的最小单元。程序的最小单元可以是一个函数,一个类,也可以是函数的组合,类的组合。

什么是框架

  框架——软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。

  ——百度百科

  简单来说,框架是提供一些基本的功能与约束条件,让你去实现业务功能。举个生活栗子,给你个厨房,你可以用来做饭,烧烤和用作杂物间等,但是你不可能放张床,用来睡觉(豪宅别墅除外)。厨房提供的是厨房的框架,你必须遵从框架内的约束,去做你想做的事。超过框架之外的功能是无法实现。

什么是自动化测试框架

  自动化测试框架,简单来说就是应用自动化测试的框架。这句话好像是废话。其实,就是为了解决某些特定问题和测试需求,而开发解决问题的组件。

  自动化测试框架的定义为:由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合————百度百科。

如果还不理解,再继续上面那个生活栗子,给你一个厨房,厨房是用来做饭的,这是框架的约束,但是一个空厨房没有东西,就是一个空架子,得买厨具、食物蔬菜大米等,才能做饭。这些硬性的东西就是需要开发的组件。解决的问题就是吃饭问题。大家请自行脑补。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

Python三大主流框架

  第一种:unittest

  unittest是Python标准库中自带的单元测试框架。unittest有时候也被称为PyUnit。就像JUnit是Java语言的标准单元测试框架一样,unittest(PyUnit)则是Python语言的标准单元测试框架。

  unittest支持自动化测试,测试用例的初始化和关闭,测试用例的聚合等功能。unittest有一个很重要的特性:它通过类(class)的方式,将测试用例组织在一起。

  unittest不需要单独去下载安装,python内置单元测试框架直接使用。

 具体看例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

# -*- coding: utf-8 -*-

'''

@author: Leo

@software: pycharm

@file:  test.py

@time: 2020/5/6 0006 23:25

@Desc:

'''

__author__ = 'Leo'

import unittest

class Testunittest(unittest.TestCase):

    def test_001(self):

        self.assertEqual('abc'.upper(),'ABC')

if __name__ == '__main__':

    unittest.main()

  运行结果:

第二种:nose

nose是Python的一个第三方单元测试框架。这意味着,如果要使用nose,需要先显式安装它:

1

2

3

>pip install nose

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple

Requirement already satisfied: nose in d:\python3\lib\site-packages (1.3.7)

简单的例子:

1

2

3

4

5

6

7

8

import  nose

def test_001():

    assert 'abc'.upper() == 'ABC'

    pass

if __name__ == '__main__':

    nose.runmodule()

  运行结果:

温馨提示:

nose已经进入维护模式,从github (https://github.com/nose-devs/

nose/commits/master)上可以看到,nose最近的一次代码提交还是在2016年5月4日。继承nose的是nose2,但要注意的是,nose2并不支持nose的全部功能,它们的区别可以参见:

https://nose2.readthedocs.io/en/latest/differences.html。

nose2的主要目的是扩展Python的标准单元测试库unittest,因此它的定位是“带插件的unittest”。nose2提供的插件,例如测试用例加载器,覆盖度报告生成器,并行测试等内置插件和第三方插件,让单元测试变得更加完善。
 

  第三种:pytest

pytest是Python另一个第三方单元测试库。它的目的是让单元测试变得更容易,并且也能扩展到支持应用层面复杂的功能测试。

pytest的特性有:

1)支持用简单的assert语句实现丰富的断言,无需复杂的self.assert*函数

2)自动识别测试模块和测试函数

3)兼容unittest和nose测试集

4)支持Python3和PyPy3

5)丰富的插件生态,已有300多个各式各样的插件,和活跃的社区

简单例子:

1

2

3

4

5

6

7

import pytest

def test_001():

    assert 'abc'.upper() == 'ABC'

if __name__ == '__main__':

    pytest.main()

运行结果:

再看一个例子:

1

2

3

4

5

6

7

8

9

10

import pytest

def add_test(x):

    return x + 1

def test_001():

    assert add_test(3) == 2

if __name__ == '__main__':

    pytest.main('-s','test.py')

运行结果:

备注:

1、如果是在命令行模式运行的话,-s会显示打印的内容,不加的话,就不会显示。

2、如果是使用pycharm运行的话,加不加-s都可以。

3、不需要main函数,pytest自动识别test_开头的测试方法(用例)。

4、pytest兼容unittest框架的代码,可以用来运行unittest测试用例。

如图:

总结

以上是python的单元测试框架,当然还有一个基于python的自动化测试框架RobotFramework,严格意义上来讲它是测试工具。后面我会持续分享,敬请期待!

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值