接口开发请参考:使用Django开发简单接口:文章增删改查

1、开发环境

  • 操作系统:Ubuntu18
  • 开发工具:IDEA+PyCharm插件
  • Python版本:3.6

2、用到的模块

  • requests:用于发送请求
  • xlrd:操作Excel,组织测试用例
  • smtplib,email:发送测试报告
  • logging:日志追踪
  • json:数据格式化
  • Django:接口开发
  • configparser:读取配置文件

3、框架设计

3.1、流程

接口用例是通过Excel来组织的,定义了URL,Request Body等列。执行流程如下:

  • 使用xlrd工具读取Excel中的信息,拼接成一个个完整的请求。
  • 接口请求类拿到一个个完整的请求的去执行,这个过程需要记录日志,每一次执行情况都要有迹可循。
  • 回填测试结果,发送邮件,归档每次的运行结果。更好一点的做法是把历史运行情况做个报表,更直观。

优点:

  • 用例通过Excel来组织,不需要编写代码,上手难度小。
  • 在用例个数不是很多的情况,开发速度快。

缺点:

  • 用例依赖是痛点。
  • 只能支持接口自动化用例。
  • Excel中用例无法预先检查正确性,只有跑一把才能知道。
  • 无法很好地管理大量用例,且不支持团队协同作业,个人用来回归测试或上线后的冒烟测试会是一个不错的选择。

通过优缺点的对比,可以明显发现这个框架的硬伤其实很多了。所以无论是业界开源的自动化测试框架或企业自研的还没有见过用Excel来组织用例的。值得一提的是个别企业自研的自动化框架非常难用,抑或是把一堆工具简单组合到一起。根本无法提高团队的生产力。不过好的产品也不是一蹴而就的,需要一个持续优化的过程。所以上面用Excel组织用例的框架还是值的玩一玩的,暂且命名为apitest吧。目前比较好的自动化测试框架有unittest,testng,pytest等。

3.2、项目结构

  • testcase:存放测试用例或请求的json文件。
  • config:配置文件。
  • report:测试报告和日志文件及其归档。
  • untils:工具集,send_request用来发送请求,email_tool用来发送邮件,excel_tool用来读取Excel中的数据,check_result用来校验结果,run_main用例执行入口,log_trace用来追踪日志。

5、日志打印

采用内置logging模块才记录运行日志,设置日志级别。

log_trace.log:

import  logging
filename = "../report/test_case_run.log"
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(levelname)s1 %(filename)s [line:%(lineno)d] %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename=filename,
filemode='w')

6、接口请求类封装

安装第三方模块requests

pip install requests

定义函数send_request,根据传入的方法类型分别去调用request的get,post,delete,put等方法去发送请求。send_request.py:

import  requests
from untils. log_trace import * #发送get请求
def get_request(url,data=None,headers=None):
res = requests.get(url=url,data=data,headers=headers)
return res #发送post请求
def post_request(url,data,headers=None):
res = requests.post(url=url,data=data,headers=headers)
return res #发送delete请求
def del_request(url,data=None,headers=None):
res = requests.delete(url,data=data)
return res #发送put请求
def put_request(url,data,headers=None):
pass def send_request(method,url,data=None,headers=None):
try:
logging.info(headers)
if headers:
if method == "GET":
return get_request(url,data,headers=headers)
if method == "POST":
return post_request(url,data=data,headers=headers)
if method == "DELETE":
return del_request(url,data=data,headers=headers)
#put使用频率低,暂时不写
if method == "PUT":
return put_request(url,data=data,headers=headers)
else:
logging.info("Header is null")
except Exception as e:
logging.info("send request fail:%s"%e)

在untils_test.py中编写代码测试send_request方法,代码如下:

#coding:utf-8
from untils.send_request import send_request def test_send_request():
url="http://127.0.0.1:9000/articles/"
headers = {
"X-Token":"0a6db4e59c7fff2b2b94a297e2e5632e"
}
res = send_request("GET",url,headers=headers)
print(res.json()) if __name__ == "__main__":
test_send_request()

运行结果:

/usr/bin/python3.6 /home/stephen/IdeaProjects/apitest/untils/untils_test.py
{'status': 'BS.200', 'all_titles': {'amy1': 'alive', 'modifytest': 'alive', 'addTest': 'alive'}, 'msg': 'query articles sucess.'} Process finished with exit code 0

Python3简易接口自动化测试框架设计与实现(上)的更多相关文章

  1. Python3简易接口自动化测试框架设计与实现(中)

    目录 7.Excel数据读取 7.1.读取配置文件 7.1.编写Excel操作类 8.用例组装 9.用例运行结果校验 10.运行用例 11 .小结 上一篇:Python3简易接口自动化测试框架设计与实 ...

  2. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  3. python 做接口自动化测试框架设计

    1,明确什么叫自动化测试,什么叫接口自动化测试,如何设计接口测试用例,已登录为例 自动化测试:解放人力来自动完成规定的测试. 自动化测试分层模型:UI层,不论WEB端还是移动端,都是基于页面元素的识别 ...

  4. 从接口自动化测试框架设计到开发(二)操作json文件、重构json工具类

    用例模板里的请求数据多,看起来很乱,所以可以通过访问另外一个文件的方式获取请求数据 把请求数据都放在一个json文件中 取出login的内容: import json fp = open('G:/un ...

  5. Python接口自动化测试框架实战 从设计到开发

    第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

  6. 基于Python接口自动化测试框架(初级篇)附源码

    引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局 ...

  7. 接口自动化 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)

    基于python实现的http+json协议接口自动化测试框架(实用改进版)   by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436     目录 1.      ...

  8. Maven+TestNG+ReportNG/Allure接口自动化测试框架初探(上)

    转载:http://www.51testing.com/html/58/n-3721258.html 由于一直忙于功能和性能测试,接口自动化测试框架改造的工作被耽搁了好久.近期闲暇一些,可以来做点有意 ...

  9. python3+request接口自动化框架

    首次书写博客,记录下写的自动化接口框架,框架比较简单,哈哈哈,算是记录下历程把!~~~ 一.本次框架由python3.6 书写 1.准备代码环境,下载python3.6    下载地址:https:/ ...

随机推荐

  1. virtualbox迁移虚拟机

    我用的Ubuntu16.04,下图为装好virtualbox时安装好系统后默认的存储位置. 促使我想迁移的原因是我的/home下因为虚拟机的存储原因导致/home下还剩1.5M可用空间..... 该目 ...

  2. 小D课堂 - 新版本微服务springcloud+Docker教程_5-07 断路器dashboard监控仪表

    笔记 7.断路器Dashboard监控仪表盘实战     简介:讲解断路器Dashboard基础使用和查看     1.加入依赖          <dependency>         ...

  3. linux简单命令10---权限

    1:文件权限设置 数字的用法:chmod 755 文件名 ---------------------------------------------下面是文件权限------------------- ...

  4. dede 友情链接显示不全解决方法

    只需在html页面中调用友情链接的地方修改链接长度即可 titlelen: 链接文字长度(修改此数值即可) row: 友情链接的数量 {dede:flink titlelen="50&quo ...

  5. harbor API 与tag 清理

    harbor API 官方swagger swagger在线查看 harbor tag 清理 python程序 import requests import json class RequestCli ...

  6. IDEA 2019.2.2破解激活方法(激活到2089年8月,亲测有效)

    本来笔者这边是有个正版激活码可以使用的,但是,2019.9月3号的时候,一些小伙伴反映这个注册码已经失效了,于是拿着自己的 IDEA, 赶快测试了一下,果不其然,已然是不能用了. 好在,笔者又找到了新 ...

  7. python-第五章习题

    5.2 def isOdd(x): if(x%2==0): return False return True x=eval(input("")) print(isOdd(x)) 5 ...

  8. PostgreSQL 循环导出schema的脚本

    需要备份的schema列表 $ cat need_backup_schema.txt pipeline_na_16q3_v4 pipeline_na_16q4_v8 pipeline_na_16q4_ ...

  9. [转帖]差之毫厘谬之千里!带你认识CPU后缀含义

    差之毫厘谬之千里!带你认识CPU后缀含义 https://diy.pconline.com.cn/718/7189243_all.html 2015-11-16 00:15 出处:PConline原创 ...

  10. 石子合并(直线版+环形版)&(朴素写法+四边形优化+GarsiaWachs算法)

    石子合并-直线版 (点击此处查看题目) 朴素写法 最简单常见的写法就是通过枚举分割点,求出每个区间合并的最小花费,从而得到整个区间的最小花费,时间复杂度为O(n^3),核心代码如下: ; i < ...