python自动化接口测试

前几天,同组姐妹说想要对接口那些异常值进行测试,能否有自动化测试的方法。仔细想了一下,工具还挺多,大概分析了一下:

1、soapui:可以对接口参数进行异常值参数化,可以加断言,一般我们会加httpcode是否200的较验,或者返回值json里是否有success标识等

2、LR:脚本容易,但是不易于维护,还有就是使用成功高

3、自己写脚本:java\python都行

其实,作为一个测试来讲,每次功能测试过程 中,都会遇到要写些小脚本辅助测试的时候,这些小脚本并不能完全称作为"自动化",但是这些小脚本确实是帮忙我节省了效率,可能运行结果只是我控制台输出的log而已,但对于个人使用已足够

我想了一下,做了个简单的脚本,思路不复杂,主要是想做:

例如有一个Get接口:

https://ics.pcauto.com.cn/magear/s/pcauto/wenda/tagTopics.xsp?pageNo=1\&tagId=2836

其中URL是:https://ics.pcauto.com.cn/magear/s/pcauto/wenda/tagTopics.xsp

pageNo和tagId是参数,我想要做的就是,有一个文本,里面存储的是一些异常值

如下图:

我想要自动化去帮我把这些异常值带入pageNo或tagId中然后去发送get请求,然后获取响应结果,

但因为这里可能没那么多,同一类型的参数值只有一个,

还有就是我们的接口返回做的不规范,有时候输入异常是一个200状态但标识是status:0,有时候又是直接400或500的返回,所以用于个人测试,我这里没有做结果判断error还是fail,当然如果要加,也简单。

以下是我的代码:

|----------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | # -*- coding:utf-8 -*- ''' @Author :xx @Version : v1.0 @File :wexcel.py @CreateTime :2019-11-06 上午 11:23 ''' import xlrd import requests import xlsxwriter class wexcel: ``#参数化 ``def xlwd_excel_param(``self``, url, input_params_file, excel_file, get_params): ``workbook ``= xlsxwriter.Workbook(excel_file) ``# 创建一个Excel文件 ``worksheet ``= workbook.add_worksheet() ``# 创建一个sheet ``title ``= [U``'输入'``,U``'输出'``, U``'测试参数'``] ``# 表格title ``worksheet.write_row(``'A1'``, title) ``# title 写入Excel ``i ``= 0 ``#循环读取get_params ``for key ``in get_params: ``paramlist ``= open``(input_params_file, ``'r'``) ``#当运行第1个的参数的时候,值替换为line ``# print(key) ``for line ``in paramlist: ``get_params[key]``=``line ``i ``+``= 1 ``num ``= str``(i``+``1``) ``row ``= "A" + num ``col ``= "B" + num ``third ``= "C" +``num ``response ``= requests.get(url, params``=``get_params) ``res ``= response.text ``worksheet.write_row(row, [line]) ``worksheet.write_row(col, [res]) ``worksheet.write_row(third, [key]) ``print``(line,``'--------'``,res,``'-------'``,key) ``workbook.close() a``=``wexcel() input_params_file``=``"E:\\param\\input.txt" excel_file``=``"E:\\param\\res.xls" url``=``"https://xx.pcauto.com.cn/magear/s/pcauto/wenda/questionDetail.xsp" res_data ``= { ``'pageNo'``: ``1``, ``'qid'``: ``'1114031' } a.xlwd_excel_param(url,input_params_file,excel_file,res_data)   |

跑出来的结果是:

基本上,对业务熟悉的人,一眼就知道对错了。如果你的接口规范,可以获取json值,加上断言,直接输出error或success

相关推荐
兵慌码乱10 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot12 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海17 小时前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱19 小时前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽1 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱1 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵1 天前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio2 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户0332126663672 天前
使用 Python 从零创建 Word 文档
python