公司项目启用新框架,前后端分离,所以接口测试成为测试工作中不可缺失的一个环节,现在将从0开始搭建接口自动化测试框架的路程,一步步记录下来。

开发语言我们采用Python+第三方库Requests,测试框架使用Unittest。

前期在网上看了很多相关接口自动化的视频,都是采用Python+Requests,看了视频感觉还是比较方便的。在Pycharm中新建一个工程,新建demo.py

#!/usr/bin/env python
# coding=utf-8 import requests
import json class RunMain:
def __init__(self):
pass @staticmethod
def send_post(url,cookies,headers,params=None):
try:
res = requests.post(url=url,cookies=cookies,headers=headers,data=params)
print("请求地址:", res.url)
print("返回状态:", res.status_code)
print("响应时间:", res.elapsed)
try:
print("响应数据格式为:JSON")
print("响应数据:", json.dumps(res.json(), sort_keys=True, indent=2, ensure_ascii=False))
except json.decoder.JSONDecodeError:
print("响应数据格式为:文本")
print("响应文本:", res.text)
return res
except Exception as msg:
return msg @staticmethod
def send_get(url,cookies,headers,params=None,):
try:
res = requests.get(url=url,cookies=cookies,headers=headers,params=params,)
print("请求地址:",res.url)
print("返回状态:",res.status_code)
print("响应时间:",res.elapsed)
try:
print("响应数据格式为:JSON")
print("响应数据:", json.dumps(res.json(), sort_keys=True, indent=2, ensure_ascii=False))
except json.decoder.JSONDecodeError:
print("响应数据格式为:文本")
print("响应文本:", res.text)
return res
except Exception as msg:
return msg def run_main(self, url, method,cookies=None,headers=None,params=None):
if method == 'GET' or 'G':
print('请求类型: GET')
res = self.send_get(url,cookies,headers,params)
return res
elif method == 'POST' or 'P':
print('请求类型:POST')
res = self.send_post(url,cookies,headers,params)
return res
else:
print('不支持的请求方式!')

其他 HTTP 请求类型:PUT,DELETE,HEAD 以及 OPTIONS,可以在上述run_main中自助扩展,因公司主要接口为get/post,所以此处不再继续编写。

测试一下我们的代码:

 url = "http://apis.juhe.cn/mobile/get"
headers={
"Content-Type":"application/json"
}
params = {
"phone": "",
"dtype": "json",
"key": "*****" //密匙
}
RunMain().run_main(url=url, method='G',headers=headers, params=params)

我们使用免费接口聚合数据进行测试,测试手机归属地查询。

运行代码后可以返回手机号码归属地、区号、运行商、邮政编码等信息。

在demo.py代码中:

json.decoder.JSONDecodeError

这个声明异常的作用,是为了防止get或post返回值为非json而引起的异常,出现此错误时证明返回值为非json格式,即显示文本内容。

【接口自动化】Python+Requests接口自动化测试框架搭建【一】的更多相关文章

  1. 接口自动化-python+requests+pytest+csv+yaml

    本套代码和逻辑 是本人的劳动成果,如果有转载需要标注, 非常适合公司做项目的同学!!!小白也可以学哦! 1.项目目录  2.公共方法的封装 2.1如果不用配置文件 可以使用这个方法进行封装--但是有一 ...

  2. python+requests接口自动化测试框架实例详解

    python+requests接口自动化测试框架实例详解   转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...

  3. python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  4. python web自动化测试框架搭建(功能&接口)——接口用例实现

    测试用例基类: # coding=utf-8 import unittest import Logger log = Logger.Loger() class BaseCase(unittest.Te ...

  5. python web自动化测试框架搭建(功能&接口)——接口公共方法

    接口公共方法有:数据引擎.http引擎.Excel引擎 1.数据引擎:获取用例.结果检查.结果统计 # -*- coding:utf-8 -*- from XlsEngine import XlsEn ...

  6. python web自动化测试框架搭建(功能&接口)——接口测试模块

    Python接口测试采用python读取excel的方法,通过requests库发送请求和接收响应.模块有: Data:用于存放excel用例的,用例格式: iutil: 接口公共方法,数据引擎.ht ...

  7. python web自动化测试框架搭建(功能&接口)——通用模块

    1.通用模块: config.conf: 公共配置文件,配置报告.日志.截图路径,以及邮件相关配置 [report] reportpath = E:\workspace\WebAutomation\s ...

  8. python web自动化测试框架搭建(功能&接口)——环境搭建

    自动化测试框架一般需要实现以下通用功能 执行前准备 结束后清理 执行步骤输出 执行结果输出 错误.失败截图 测试报告 发送邮件 日志 需要的软件和python第三方库有: 通用: JDK Eclips ...

  9. python web自动化测试框架搭建(功能&接口)——功能测试模块

    功能测试使用selenium,模块有: 1.futil: 公共方法,如元素高亮显示 # coding=utf-8 """高亮显示元素""" ...

  10. python web自动化测试框架搭建(功能&接口)——测试用例执行和结果收集

    由于unittest框架中结果收集在不同文件中,所以此处重写结果收集方法,加入执行时间,失败信息,失败截图等 TestRunner.py # coding=utf-8 import sys impor ...

随机推荐

  1. FGPA_Microblaze UART 中断

    由于底层所给函数发送与接收都采用中断,所用库函数比较复杂 ,有些更改涉及底层函数,因此结合网上论坛 .百度文库调试了串口中断接收程序.通过串口调试助手发送数据 ,以“发送新行”结束 . 硬件外设波特兰 ...

  2. shell动态向sql传参

    一直在想有什么好方法可以实现,用shell动态给sql传参,自己写了一个简单,有什么好方法,欢迎留言补充,下面代码纯手打,可能有疏忽之处,请大佬批评指正指正. 实现方法如下: 1.新建一个文件02.t ...

  3. PHP imagearc - 画椭圆弧

    imagearc — 用于画椭圆弧.高佣联盟 www.cgewang.com 语法 bool imagearc ( resource $image , int $cx , int $cy , int ...

  4. 7.18 NOI模拟赛 树论 线段树 树链剖分 树的直径的中心 SG函数 换根

    LINK:树论 不愧是我认识的出题人 出的题就是牛掰 == 他好像不认识我 考试的时候 只会写42 还有两个subtask写挂了 拿了37 确实两个subtask合起来只有5分的好成绩 父亲能转移到自 ...

  5. SpringXMl文件不提示的解决方法

    applicationContext.xml没有提示的解决方法 1.配置spring-beans-4.1.xsd文件 (1)找到spring-beans-4.1.xsd的文件的位置,例如: (2)复制 ...

  6. Dynmaics 365 scale group

    关于scale Groups的概念,在看Dynamics crm online的时候,一直不理解缩放组scale group的概念,后来查到GP也在用这个概念,想想不就是动态扩展嘛,马上顿悟了,原来如 ...

  7. [转]new一个对象的过程中发生了什么?

    来自:沉默哥 | 公号 :程序员小乐 链接:cnblogs.com/JackPn/p/9386182.html Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就 ...

  8. 【小白学AI】八种应对样本不均衡的策略

    文章来自:微信公众号[机器学习炼丹术] 目录 1 什么是非均衡 2 8种解决办法 2.1 重采样(四种方法) 2.2 调整损失函数 2.3 异常值检测框架 2.4 二分类变成多分类 2.5 EasyE ...

  9. 一个简单的CPP处理框架

    好久没有在csdn上写过东西了,这么多年,一方面是工作忙,下班到家也没有开过电脑了,要陪小孩玩: 下面分享一段代码,是用CPP做的一个简单的消息(协议)处理框架: 是通过成员函数指针+map来实现的: ...

  10. CF1349F 【Slime and Sequences】part1

    由于本文过长,\(\LaTeX\) 炸了,分两篇,part2 题目描述 定义一个正整数序列为好序列,当且仅当如果某个数 \(k\) 出现过,那么一定有 \(k-1\) 在最后一个 \(k\) 的前面出 ...