华为的测试大牛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 requests import json class 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 render from django.http import HttpResponse import json from 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函数处理接口请求并返回结果
如果对软件测试、接口测试、自动化测试、性能测试、LR脚本开发、面试经验交流。感兴趣可以273462828,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。
记得添加Django路由
在urls中加入:
运行项目
输入参数:
执行测试:
好了,以上就是一个简单的Django接口测试开发,比较适合基础不好的朋友入门学习
学习最好的老师是兴趣,兴趣最好的培养就是成就感,希望大家在学习的过程中都能找到成就感。
大家有问题可以留言,积极讨论

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
支撑百万并发的数据库架构如何设计?
前言 作为一个全球人数最多的国家,一个再怎么凄惨的行业,都能找出很多的人为之付出。而在这个互联网的时代,IT公司绝对比牛毛还多很多。但是大多数都是创业公司,长期存活的真的不多。大多数的IT项目在注册量从0-100万,日活跃1-5万,说实话就这种系统随便找一个有几年工作经验的高级工程师,然后带几个年轻工程师,随便干干都可以做出来。 因为这样的系统,实际上主要就是在前期快速的进行业务功能的开发,搞一个单块系统部署在一台服务器上,然后连接一个数据库就可以了。接着大家就是不停的在一个工程里填充进去各种业务代码,尽快把公司的业务支撑起来。 但是如果真的发展的还可以,可能就会遇到如下问题: 在运行的过程中系统访问数据库的性能越来越差,单表数据量越来越大,一些复杂查询 SQL直接拖垮! 这种时候就不得不考虑的解决方案:缓存,负载均衡,项目分块(微服务);数据库:读写分离,分库分表等技术 如果说此时你还是一台数据库服务器在支撑每秒上万的请求,负责任的告诉你,每次高峰期会出现下述问题: 数据库服务器的磁盘 IO、网络带宽、CPU 负载、内存消耗,都会达到非常高的情况,数据库所在服务器的整体负载会非常重,...
- 下一篇
防火墙API,全新升级,支持iptables、ipset、pf、nftables
在上一篇“使用redis来调用iptables,封禁恶意IP” 一文中已经讲解RedisPushIptables的用法,在经过几个版本迭代后,该模块功能更强大了,语法有所改变,所以需要新开篇幅来讲解下。 RedisPushIptables-6.2.tar.gz为最新版本,已经支持iptables、ipset、pf、nftables防火墙,意味着它已经跨平台支持,Linux、BSD、MacOS。最重要的是添加了动态删除防火墙规则的功能,当然这个功能ipset也有。虽然fail2ban也有此功能,但是极其消耗资源因为它是轮询来获取任务的。 本篇主要介绍RedisPushIptables模块的实现原理、安装方法、API使用方法以及适用范围。并与Fail2ban作了对比以便读者了解二者的区别,RedisPushIptables不受编程语言的限制。意味着开发者都可以使用它来进行业务防护,接着讲解了怎样重新封装lib库从而支持API调用,最后给出了部分编程语言调用API的示例,供读者参阅。 简介 RedisPushIptables是Redis的一个模块, 也可以把它理解为防火墙API调用库,该...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题