接口开发请参考:使用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. 009-centos6.6 用户以及组操作

    1.查看用户所属组 id admin uid=500(admin) gid=500(admin) 组=500(admin) 2.查看用户信息 用户列表文件:cat /etc/passwd 查看系统中有 ...

  2. openstack核心组件--cinder存储服务(6)

    一.cinder 介绍:   理解 Block Storage 操作系统获得存储空间的方式一般有两种: 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系 ...

  3. PO BAPI "BAPI_PO_CREATE1"

    DATA: poheader LIKE  bapimepoheader,         poheaderx LIKE  bapimepoheaderx,         poitem  LIKE   ...

  4. Java日志体系(四)slf4j

    1.1 简介 与commons-logging相同,slf4j也是一个通用的日志接口,在程序中与其他日志框架结合使用,并对外提供服务. Simple Logging Facade for Java简称 ...

  5. 转:使用ActiveX插件时object显示问题,div被object标签遮挡的解决方案

    起因设计要求视频控制面板显示在视频界面上,如下图红框内所示.但是因为object不在文档流之中,所以不论别的元素设置z-index多高,都只会被object元素遮住而无法看到.object元素代码如下 ...

  6. 【并行计算-CUDA开发】CUDA bank conflict in shared memory

    http://hi.baidu.com/pengkuny/item/c8070b388d75d481b611db7a 以前以为 shared memory 是一个万能的 L1 cache,速度很快,只 ...

  7. eclipse 建立Maven java工程

    1.在项目资源管理器右键---新建---项目 2.在选择向导里选择Maven---Maven Project 3.选择默认的工作空间,下一步 4.选择箭头所示选项 5.输入组织名和工程名.点击完成

  8. AirFlow功能展示个人笔记

    DAGs 查看您可以一目了然地查看成功.失败及当前正在运行的任务数量. 选中其中一个DAG 树视图 跨越时间的 DAG 的树表示.如果 pipeline(管道)延迟了,您可以很快地看到哪里出现了错误的 ...

  9. mysql函数使用报错

    This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法 解决办法也有两种,第一种是在创建 ...

  10. 初学K3Cloud开发

    1.BOS中在新建的空白对象中添加一个下推按钮 1.点击“菜单集合”属性 2.在打开的窗体中,点中“工具条”,新增一个按钮 3.将新增的按钮标题改为“下推”,并配置点击事件 列表菜单增加“下推”类似, ...