在实际工作中,我们利用单元测试框架就可以完全搞定接口测试。单元测试(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单元测试的知识可以阅读下面两篇文章:
原创不易,如果文章帮到了你,欢迎转发,让更多的朋友受益!
网友评论