Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >接口测试框架——第三篇:发送(requests)

接口测试框架——第三篇:发送(requests)

作者头像
孟船长
发布于 2018-05-18 10:07:49
发布于 2018-05-18 10:07:49
67000
代码可运行
举报
运行总次数:0
代码可运行

把下面的代码放在requests_module.py文件中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# coding: utf-8

import requests
import logging
from requests.exceptions import *

class GetResponse():
    def __init__(self, url, method='get'):
        self.__url = url
        self.__method = method.lower()
        self.with_session = requests.session()

    def get_response(self, session=False, *args, **kwargs):        if self.__method == 'get' and session == False:
            try:
                __resp = requests.get(self.__url, *args, **kwargs)
            except (MissingSchema, InvalidURL):
                logging.error(u'请检查url:%s 是否正确' % self.__url)
            except ConnectionError:
                logging.error(u'网络连接失败或接口响应时间过长')
            else:
                return __resp

        elif self.__method == 'get' and session == True:
            try:
                __resp = self.with_session.get(self.__url, *args, **kwargs)
            except (MissingSchema, InvalidURL):
                logging.error(u'请检查url:%s 是否正确' % self.__url)
            except ConnectionError:
                logging.error(u'网络连接失败或接口响应时间过长')
            else:
                return __resp

        elif self.__method == 'post' and session == False:
            try:
                __resp = requests.post(self.__url, *args, **kwargs)
            except (MissingSchema, InvalidURL):
                logging.error(u'请检查url:%s 是否正确' % self.__url)
            except ConnectionError:
                logging.error(u'网络连接失败或接口响应时间过长')
            else:
                return __resp

        elif self.__method == 'post' and session == True:
            try:
                __resp = self.with_session.post(self.__url, *args, **kwargs)
            except (MissingSchema, InvalidURL):
                logging.error(u'请检查url:%s 是否正确' % self.__url)
            except ConnectionError:
                logging.error(u'网络连接失败或接口响应时间过长')
            else:
                return __respclass AnalysisResponse(object):
    """
    解析response:response为一大段字符串,该类将这个大串字符串中有用的内容提取出来
    """

    def __init__(self, resp):
        self.__resp = resp

    @property
    def Url(self):
        __url = self.__resp.url
        return __url

    @property
    def Status_code(self):
        __status_code = self.__resp.status_code
        return __status_code

    @property
    def Str_Content(self):
        """
        返回string类型的content
        """
        __str_content = self.__resp.content
        return __str_content

    @property
    def Dic_Content(self):
        """
        将response转换成字典后返回
        """
        __dic_content = self.__resp.json()
        return __dic_content

    @property
    def Headers(self):
        __headers = self.__resp.headers
        return __headers

    @property
    def Cookies(self):
        __cookies = self.__resp.cookies
        return __cookies

红色字体的内容就是发送的方法了,我们看到它会根据你传入接口的http请求选择发送方式,并且判断了是否含有session,session可以省去你登录的时候再去校验cookies。是不是对__xx不太熟悉?你需要复习前面的内容了……自己看吧,你懒得翻,我懒得写。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Requests库详解
requests(爬虫系列之一) 由于最近工作中,与同事对接模拟手机浏览器进行广告模拟跳转。又一次接触用到爬虫的知识,以前用过urllib + bs4 + selenium定向爬取网易一元夺宝的商品信息保存在数据库中,当时,还是太年轻,对爬虫不是很了解,对爬虫的robots协议也不知道。现在重新梳理一下爬虫的知识。争取写一个系列,大致内容顺序是requests, bs4,re, scrapy, selenium等。 在介绍requests库之前,先介绍以下基本的http概念, 下面内容是在上嵩天教授课程
若与
2018/04/25
2K1
Requests库详解
开源项目 requests 的 stars 为啥比 python 还多 3.7k?
结合上一篇文章《一次算法读图超时引起的urllib3源码分析》,我们学习了 urllib3 的基本语法、常见姿势和请求管理模式,以及PoolManager、HTTPConnectionPool、HTTPConnection等模块部分源码。对于学习 Python 的小伙伴来说,urllib3 强大的功能几乎能实现所有 HTTP 请求场景,但这就足够了吗?
程序员荒生
2022/03/15
8250
开源项目 requests 的 stars 为啥比 python 还多 3.7k?
requests源码阅读
requests是一个简洁易用的http-client库,早期在github的python项目受欢迎程度可以排名TOP10。介绍这个项目,我个人觉得还是官方的地道: Requests is an elegant and simple HTTP library for Python, built for human beings. 夸张到是人类就会使用requests)。我们一起阅读一下其源码,学习它是如何实现的。整篇文档分下面几个部分:
仙人技术
2021/01/22
9840
接口测试框架——读取excel文件
谢谢@小麦苹果的提醒,才发现我接口测试少写了一个文件,今天给大家补上: common->service->excel_case_data.py # coding: utf-8 import json import sys import logging import setting import requests from common.module import excel_module from common.module import requests_module from common.modul
孟船长
2018/05/18
1K0
manage.py作用_java源码解析
第2段代码是先获取request_headers、request_cookies、request_body,然后将获取到的信息放入RequestData模型中,最后打印请求的信息
全栈程序员站长
2022/09/19
3080
manage.py作用_java源码解析
python requests 如何达到关闭强制urlencode的效果
requests库是python中常用的网络库,有着比原生urllib更丰富的功能和更易用的接口,但是并不一定有相当的灵活性。这不现在就有一个问题。
一次次尝试
2019/02/23
9K3
python模块之requests及应用
Python标准库中提供了:urllib、urllib2、httplib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。
菲宇
2019/06/12
1.6K0
python模块之requests及应用
如何打造自己的PoC框架-Pocsuite3-框架篇
本节笔者将按照Pocsuite框架结构以及工程化实践,来实现一款自己的PoC框架。为了开一个好头,我们先取一个好听的名字,想威武霸气一些可以取上古神器之类的,诸如轩辕夏禹赤霄干将,若怀着对游戏的热爱也可以有山丘之王(Mountain King)剑圣(BladeMaster)月之女神(Priess Of the moon)。由于笔者比较懒,我们就取一个朴素的名字:AirPoc,中文名叫它"空气炮"吧。
Seebug漏洞平台
2019/05/15
1.4K0
如何打造自己的PoC框架-Pocsuite3-框架篇
Requests源码阅读v0.8.0
添加一个auth.py文件,加入了自己实现的auth处理器,包含http_basic和http_digest,分别对应Headers中Autohorization以Basic和Digest开头的情形。
岂不美哉Frost
2019/11/30
4970
十分钟写个博客迁移工具
最近不少写博客的朋友跟我反馈博客园的一些文章下架了,这让我联想到去年简书一样,我之前写的博客都被下架不可见了。
Cookieboty
2021/04/09
4900
十分钟写个博客迁移工具
​​内网隧道之Neo-reGeorg
github:https://github.com/L-codes/Neo-reGeorg
中龙技术
2022/09/29
2.5K0
​​内网隧道之Neo-reGeorg
关于接口测试——自动化框架的设计与实现
在大部分测试人员眼中只要沾上“框架”,就感觉非常神秘,非常遥远。大家之所以觉得复杂,是因为落地运用起来很复杂;每个公司,每个业务及产品线的业务流程都不一样,所以就导致了“自动化测试框架”去完成自动化测试的时候产生很多不稳定因素,这样就很难定位成一个固定的框架。其实不然,真正的自动化测试框架不是一个模式,而是一种思想和方法的集合,通俗的讲就是一个架构。
数澜科技
2019/10/16
2K0
关于接口测试——自动化框架的设计与实现
HttpRunner3的HTTP请求是怎么发出去的
在类TestCaseBasic的内部定义了teststeps列表,由多个Step类的实例对象组成。
python亦希
2022/01/26
4020
搭一个简单的接口测试框架
可以理解为工具的集合,把日常所需要实现功能的代码,模块进行封装起来结合其他的工具进行测试。得出结论报告。
赵云龙龙
2020/02/24
4990
使用Flask实现RESTful API(译)
假设那你已经了解RESTful API的相关概念,如果不清楚,可以阅读我之前写的这篇博客Designing a RESTful Web API.
用户2936342
2018/08/27
7290
Python requests接口请求封装(二)
   这个封装只针对了get请求和post请求,当然你也可以把put,delete等请求添加在32行代码后面,实现更多的请求方式
王大力测试进阶之路
2019/10/25
2.1K0
Python requests接口请求封装(二)
requests模块概述
请注意,本文编写于 1729 天前,最后修改于 998 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
1.1K0
requests模块概述
爬虫篇| Requests库详细的用法(四)
对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助。入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取。那么简单介绍一下 requests 库的基本用法。
润森
2019/08/29
6790
爬虫篇| Requests库详细的用法(四)
如何优雅的封装requests
后面定义了get/options/head/post/put/patch/delete 6个函数。
dongfanger
2020/09/23
9330
python3和scrapy使用隧道代理问题以及代码
近期,我参与了一个需要爬取国家食品药品监督局数据的项目,但该网站存在IP屏蔽机制。因此,我需要在Scrapy框架中实现自动IP切换,才能完成任务。然而,尽管我使用了第三方库scrapy-proxys和代理API接口,但测试并不成功。
小白学大数据
2023/03/02
9440
相关推荐
Requests库详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档