1. 什么是接口测试
顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主要分为功能测试,性能测试,稳定性测试,安全性测试等。
在分层测试的“金字塔”模型中,接口测试属于第二层服务集成测试范畴。相比UI层(主要是WEB或APP)自动化测试而言,接口自动化测试收益更大,且容易实现,维护成本低,有着更高的投入产出比,是每个公司开展自动化测试的首选。
下面我们以一个HTTP接口为例,完整的介绍接口自动化测试流程:从需求分析到用例设计,从脚本编写、测试执行到结果分析,并提供完整的用例设计及测试脚本。
2. 基本流程
基本的接口功能自动化测试流程如下:
需求分析 -> 用例设计 -> 脚本开发 -> 测试执行 -> 结果分析
2.1 示例接口
聚合数据网:http://v.juhe.cn/xhzd/query
代码:
import unittest
import HTMLTestRunner
import requests
# http://v.juhe.cn/xhzd/query
# 协议 域名
class Testjuhe(unittest.TestCase):
def setUp(self):
self.url = "http://v.juhe.cn"
print("测试开始")
def tearDown(self):
print("测试结束")
def test_query(self): # 测试用例
url = self.url + "/xhzd/query"
data = {"key": "4268ec17fcf83a920e988a004b0eca1c", "word": "汉字"}
res = requests.get(url, data)
assert res.status_code == 200
def test_bushou(self):
url = self.url + "/xhzd/bushou"
data = {"key": "4268ec17fcf83a920e988a004b0eca1c"}
res = requests.post(url, data)
# 如果需要动态token的话 需要自定到json中取
assert res.status_code == 200
if __name__ == '__main__':
# 创建测试用例容器
testlist = unittest.TestSuite()
# 将用例添加到容器中
testlist.addTest(Testjuhe("test_query"))
# testlist.addTest(类名("函数名"))
testlist.addTest(Testjuhe("test_bushou"))
# 创建测试报告
# 创建文件目录
file = "e:/ceshi/baogao/zidian.html"
fle = open(file, "wb") # 生成测试报告的时候用的是二进制文件wb rb wb 以进制的方式进行读写文件
# 定义测试报告,stream定义报告所写入的内容,title为报告标题,description为报告的说明与描述
runner = HTMLTestRunner.HTMLTestRunner(
stream=fle,
title=u"接口测试报告",
description=u"用例执行情况"
)
# 将测试报告和用例容器关联在一起
runner.run(testlist)
执行结果: