接口测试系列文章4——10分钟带你利用测试框架优化接口测试

在实际工作中,我们利用单元测试框架就可以完全搞定接口测试。单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证,这里的最小可测试单元通常是指函数或者类。单元测试是即所谓的白盒测试,一般由开发人员负责测试,因为开发人员知道被测试的软件如何完成功能和完成什么样的功能。在python中unittest、pytest模块就是单元测试的一种具体表现形式。

单元测试的范围

•      接口功能测试

•      边界条件测试

•      所有独立执行通路测试

•      各条错误处理通路测试

•      静态代码分析

其中,前两项接口功能测试和边界条件测试就是我们熟知的接口测试!而对于后三项通常都是开发人员通过工具辅助自测完成的,常用的工具括:Sonar、PMD、FindBugs、Checkstyle、Jacoco等等(好多工具都集成到IDE中,开发人员使用非常方便)。

单元测试引入的原因

单元测试提供快速反馈,把bug消灭在开发阶段,减少问题流到集成测试、验收测试和用户,降低了软件质量控制的成本。

不同的开发语言都有对应的单元测试框架

Java         Junit3\Junit4\Junit5\TestNG

Python        unittest\pytest

C++          CppUnit

.net          Nunit

JavaScript       Qunit

接口测试在单元测试中的应用

我们以unittest为例讲解,unittest是Python单元测试框架,类似于JUnit框架。基本用法如下:

1)import unittest

2)定义一个继承自unittest.TestCase的测试用例类

3)定义setUp和tearDown,在每个测试用例前后做一些辅助工作。

4)定义测试用例,名字以test开头

5)一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。

6)调用unittest.main()启动测试

下面举个实例,来看看unittest如何测试一个简单的函数

测一个简单的加法接口

def add(a, b):

       return a + b

import unittest

class TestAddFunc (unittest.TestCase):

       def test_add1(self):

              self.assertEqual (3, add (1, 2))

       def test_add2(self):

               self.assertEqual (4, add (1, 1))

if __name__ == '__main__':

    unittest.main ()

在pycharm中运行,结果如下:

把校验get请求的接口测试代码移植到unittest

源码:

import requests

import json

req="http://rap2api.taobao.org/app/mock/85630/getinfo"

response=requests.get(req)

print(response.text)

code=json.loads(response.text).get('code')

print(code)

if code <=10:

      print ("reponse ok")

else:

      print("reponse fail")

移植后的代码

import requests

import json

import unittest

class TestGetFunc (unittest.TestCase):

     def test_1(self):

        req ="http://rap2api.taobao.org/app/mock/85630/getinfo"

        response = requests.get(req)

         print(response.text)

        code = json.loads(response.text).get('code')

        self.assertLessEqual(code, 10)

if __name__ == '__main__':

    unittest.main()

通过代码实现接口测试非常的简单,他帮我们定义了用例的规则(test开头的方法就是测试用例),给我们提供了断言assertLessEqual(用来判断用例的通过与否),代码执行后提供了测试执行的结果!

断言

在测试框架中都是通过断言来判定用例通过与否的(比if...else..方便很多),unittest中提供很多方法进行断言相关操作,具体如下:

基础断言

exceptions, warnings, 日志信息断言

特殊断言

集合断言

当然这只是最简单的demo实例,目的是教大家入门!unittest中还有很多强大的功能来支持我们做单元测试工作,由于本文是针对小白,所以这里就不再详细介绍了!如果你想了解更多关于python单元测试的知识可以阅读下面两篇文章:

上手unittest读这篇文章就够了

从0到1上手Pytest

原创不易,如果文章帮到了你,欢迎转发,让更多的朋友受益!

你可能感兴趣的:(接口测试系列文章4——10分钟带你利用测试框架优化接口测试)