引言

我们在使用python做接口测试的时候,搭建的接口测试框架都是python的单元测试框架,而python的单元测试框架很多unittest、pytest、nose等

什么是单元测试

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

什么是框架

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

——百度百科

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

什么是自动化测试框架

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

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

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

 

Python三大主流框架

第一种:unittest

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

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

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

  1. 具体看例子:

  2. # -*- coding: utf-8 -*-

  3. '''

  4. @author: Leo

  5. @software: pycharm

  6. @file: test.py

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

  8. @Desc:

  9. '''

  10. __author__ = 'Leo'

  11. import unittest

  12. class Testunittest(unittest.TestCase):

  13. def test_001(self):

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

  15. if __name__ == '__main__':

  16. unittest.main()

运行结果:

第二种:nose

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

  1. >pip install nose

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

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

简单的例子:

  1. import nose

  2. def test_001():

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

  4. pass

  5. if __name__ == '__main__':

  6. nose.runmodule()

运行结果:

温馨提示:

nose已经进入维护模式,从github 上可以看到,nose最近的一次代码提交还是在2016年5月4日。继承nose的是nose2,但要注意的是,nose2并不支持nose的全部功能,

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

第三种:pytest

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

pytest的特性有:

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

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

3)兼容unittest和nose测试集

4)支持Python3和PyPy3

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

简单例子:

  1. import pytest

  2. def test_001():

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

  4. if __name__ == '__main__':

  5. pytest.main()

运行结果:

再看一个例子:

  1. import pytest

  2. def add_test(x):

  3. return x + 1

  4. def test_001():

  5. assert add_test(3) == 2

  6. if __name__ == '__main__':

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

运行结果:

备注:

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

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

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

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

如图:

 

 感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

更多推荐