接口自动化:Python+Django实现接口测试工具

爱码小士 2021-07-20 04:31:31
Python django


引言:

         最近被几个公司实习生整自闭了,没有基础,想学自动化又不知道怎么去学,没有方向没有头绪,说白了其实就是学习过程中没有成就感,所以学不下去。出于各种花里胡哨的原因,今天给大家整一个简单又有成就感的接口自动化学习吧。

         不皮了,进入正题。本文中用到的技术点有:Python基础、Django基础、Request库、一丢丢前端基础。(考虑到大家零基础,所以文中代码编写使用纯新手手法)

1、先创建一个Django项目(具体请参考Django基础入门教程)

2、创建一个模板,新增一个index.html页面

  •  
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Parker接口测试</title></head><body> <h3 style="...">接口测试</h3> <form action="/index/" method="post"> <table> <tr> <td>接口地址:</td> <td> <input type="text" name="url" /> <br/> </td> </tr> <tr> <td>选择方法:</td> <td> <input type="radio" name="fun" value="post" checked/>POST <input type="radio" name="fun" value="get" />GET </td> </tr> <tr> <td>参数类型:</td> <td> <select name="leixin"> <option value="json">Json</option> <option value="xml">XML</option> <option value="date">Data</option> </select> </td> </tr> <tr> <td>测试数据:</td> <td> <textarea name="testdate" style="with:200px;height:60px;"></textarea> </td> </tr> <tr> <td>预期结果:</td> <td> <input type="text" name="exr" /> <br/> </td> </tr> <tr> <td>实际结果:</td> <td> <label>{{ data1 }}</label><br/> </td> </tr> <tr> <td>测试结果:</td> <td> <label>{{ data }}</label><br/> </td> </tr> <tr> <td> <input type="submit" value="执行测试" /> </td> </tr> </table> </form></body></html>

3、在项目包中新建py文件,封装接口调用类

  •  
import requestsimport jsonclass cls_api: def post(self,url,par): a_url=url a_par=par res=requests.post(a_url,a_par) return res def get(self,url,par): a_url=url a_par=par res=requests.get(a_url,a_par) return res

4、在views文件中添加如下代码

  •  
#-*- coding:utf-8 -*-from django.shortcuts import renderfrom django.http import HttpResponseimport jsonfrom parkerapi import postapi
def index(request): pt=postapi.cls_api() exr=request.POST.get('exr',None) data="" data1="" if request.method=='POST': data=pt.post(request.POST.get('url',None), json.loads(request.POST.get('testdate',None))) result=data.json() data1=result['message'] if int(result['message']==int(exr)): data=u'测试通过' else: data=u'测试失败' return render(request,"index.html",{"data":data,"data1":data1})
def add_args(a,b): x=int(a) y=int(b) return x+y
def post(request): if request.method=='POST': d={} if request.POST: a=request.POST.get('a',None) b=request.POST.get('b',None) if a and b: res=add_args(a, b) d['message']=res d=json.dumps(d) return HttpResponse(d) else: return HttpResponse(u'输入错误') else: return HttpResponse(u'输入为空') else: return HttpResponse(u'方法错误')

 

add_args函数处理加法运算,index函数接收前端POST数据,处理数据并返回结果,post函数处理接口请求并返回结果

记得添加Django路由

在urls中加入:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

运行项目:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

输入参数:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

执行测试:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

好了,以上就是一个简单的Django接口测试开发,比较适合基础不好的朋友入门学习

学习最好的老师是兴趣,兴趣最好的培养就是成就感,希望大家在学习的过程中都能找到成就感。 

版权声明
本文为[爱码小士]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_14126611/2895119

  1. 【推荐】常见的Python数据可视化库
  2. 基于Python3.3+Selenium3.0框架实战Web自动化测试实战(百度网站实测项目)
  3. 【django轻量级框架】用Mysql的各种项目响应速度慢?一招解决!
  4. 【django轻量级框架】Django项目导入css,js,images等静态文件
  5. 【django轻量级框架】HTML上传文件拦截到本地
  6. 【深度学习入门到精通系列】留一交叉验证法Python实现(看不懂你来打我~!)
  7. Python机器学习笔记:sklearn库的学习
  8. python【Opencv计算机视觉库】opencv模块cv2常用函数用法(全)
  9. python基础练习(七)
  10. python基础练习(八)
  11. python基础练习(九)
  12. python基础练习(十)
  13. python新增练习(一)
  14. python新增练习(二)
  15. python新增练习(三)
  16. Python中的排序sorted(d.items(), key=lambda x: x[1])
  17. python 判断字母大小写
  18. python绘制科赫雪花(递归)
  19. 解决cmd命令查看python版本“python不是内部命令或外部命令,也不是可执行程序解决方案”的问题
  20. Python Numpy介绍
  21. python —pandas库常用函数
  22. Python应用matplotlib绘图简介
  23. Python matplotlib高级绘图详解
  24. 入门训练 Fibonacci数列-python实现
  25. Python -二维数组定义
  26. python二进制相加
  27. Python文本处理:解析json格式的数据
  28. 查看python安装路径
  29. Python编程之计算生态
  30. Python-turtle标准库知识小结(python绘图工具)
  31. Python-time标准库知识小结
  32. Python-random标准库知识小结
  33. python安装第三方库的三种方法
  34. python程序的控制结构
  35. Python程序的函数和代码复用
  36. python之组合数据类型
  37. python【力扣LeetCode算法题库】300 最长上升子序列(动态规划)
  38. python【力扣LeetCode算法题库】695- 岛屿的最大面积(深搜)
  39. python【力扣LeetCode算法题库】面试题 01.06-字符串压缩
  40. python【力扣LeetCode算法题库】1160-拼写单词
  41. python【力扣LeetCode算法题库】836- 矩形重叠
  42. python【力扣LeetCode算法题库】409-最长回文串(数学 计数器)
  43. python【力扣LeetCode算法题库】面试题40- 最小的k个数
  44. python【力扣LeetCode算法题库】945- 使数组唯一的最小增量
  45. python【力扣LeetCode算法题库】365- 水壶问题(裴蜀等式)
  46. python【力扣LeetCode算法题库】876- 链表的中间结点
  47. python【力扣LeetCode算法题库】面试题 17.16- 按摩师(DP)
  48. python【力扣LeetCode算法题库】892-三维形体的表面积
  49. python【力扣LeetCode算法题库】999-车的可用捕获量(DFS)
  50. python【力扣LeetCode算法题库】914. 卡牌分组(reduce & collections.Counter)
  51. python【力扣LeetCode算法题库】820- 单词的压缩编码
  52. python【力扣LeetCode算法题库】1162- 地图分析(BFS)
  53. python【力扣LeetCode算法题库】面试题62- 圆圈中最后剩下的数字(约瑟夫环)
  54. python【力扣LeetCode算法题库】912- 排序数组
  55. python【力扣LeetCode算法题库】1111- 有效括号的嵌套深度
  56. python【力扣LeetCode算法题库】289- 生命游戏
  57. python【力扣LeetCode算法题库】12- 整数转罗马数字(打表 模拟)
  58. python【数据结构与算法】内置函数enumerate(枚举) 函数(看不懂你来打我)
  59. python【力扣LeetCode算法题库】13- 罗马数字转整数
  60. python【数据结构与算法】内置函数 zip() 函数(看不懂你来打我)