文章目录
前言
使用python搭建一个接口自动化的框架,主要实现的功能如下:
- 在Excel中编写接口测试用例,代码读取去执行
- 执行接口测试用例后, 自动生成测试报告
- 生成测试报告后, 自动发送邮件到邮箱
下面案例可供参考
一、前期准备
- python3安装
- Excel中编写接口测试用例
二、搭建环境
1. 创建项目目录
demoauto
2. 创建一个cases目录,管理所有的case
这个目录可以存放所有的测试脚本(针对测试用例的断言)
3. 找一个测试接口,编写测试脚本
例子:
https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=XXXXXX
这是一个公共接口,可以随便使用
- 在cases文件目录下,创建一个py文件,以test开头
- 编写测试脚本
import unittest
import requests
class TestMobileTelSegment(unittest.TestCase):
def sendRequests(self):
self.url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm"
self.method = "get"
self.params = "tel=157XXXXXXX87"
res = requests.request(self.method,self.url,params =self.params)
print(res.text)
return res.text
def test01case(self):
res = self.sendRequests()
expect_result = '''__GetZoneResult_ = {
mts:'15XXXXX',
province:'云南',
catName:'中国移动',
telString:'15XXXXX987',
areaVid:'3XX5',
ispVid:'3XXX39',
carrier:'云南移动'
}'''
self.assertTrue(res.replace("\n",""), expect_result.replace("\n",""))
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestMobileTelSegment("test01case"))
runner = unittest.TextTestRunner(verbosity=3)
runner.run(suite)
小结:
1、Unittest是python自带的模块,拥有断言的功能。使用Unittest作为测试断言,必须引入unittest模块,并让测试类继承Unittest.Testcase
2、执行测试用例可以把所有测试用例添加到一个suite里,然后去执行
如果在这个类中再编写一个test02case,则只需再runner前一行,再添加一句:suite.addTest(TestMobileTelSegment(“test02case”))
4. 抽离公共方法 - 发送请求
当编写大量测试脚本的时候,每一个接口都要用到发送请求,所以可以把发送请求的接口抽离出来,编写为一个公共方法
- 创建common目录,存放所有的公共类
- 编写脚本
sendrequest.py
import requests as rq
class SendRequest:
def send_request(self, url, method, params="", headers=""):
res = rq.request(method, url, params=params, headers=headers)
return res.text
修改test_mobile_tel_segment.py
import unittest
import requests
from demoauto.common.sendrequest import SendRequest
class TestMobileTelSegment(unittest.TestCase):
def test01case(self):
#测试的数据
url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm"
method = "get"
params = "tel=15XXXXXXX87"
#发送请求
res = SendRequest().send_request(url, method, params)
#断言
expect_result = '''__GetZoneResult_ = {
mts:'1XXXXX9',
province:'云南',
catName:'中国移动',
telString:'15XXXXXX7',
areaVid:'30515',
ispVid:'32XXXX9',
carrier:'云南移动'
}'''
self.assertTrue(res.replace("\n",""), expect_result.replace("\n",""))
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestMobileTelSegment("test01case"))
runner = unittest.TextTestRunner(verbosity=3)
runner.run(suite)
小结:
1、提取了公共方法后,使用时需要引入
5. 抽离测试数据 - 读取Excel
用Excel编写测试用例,代码读取测试数据、请求信息后执行
- 创建一个目录,存放excel的用例
- 公共方法:读取Excel
import os
import openpyxl as ox
#获取当前路径:到common结束
#path = os.path.abspath(os.path.dirname(__file__))
#path = os.getcwd()
#获取当前路径的上一层路径:到demoauto
path = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
class ReadExcel():
def get_workbook(self, filename):
#测试用例实际的路径
xlsPath = os.path.join(path, 'testfile', filename)
print(xlsPath)
# 打开测试用例