栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

测试之路 pytest接口自动化框架-requests与requests封装

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

测试之路 pytest接口自动化框架-requests与requests封装

哈喽哈喽。小王又来了~本期内容我们开始封装思想,开始之前,先说说requests。

01 requests





requests相信各位大佬都已经很熟悉了。是python中http请求的一个模块。他可以实现get、post、put等接口请求。

在日常工作中,我们首先是创建一个requests对象,然后调用requests下的get、post等方法进行接口调用。接收到返回参数以后,进行后续操作。这种请求在单接口中比较好用,但是在一些场景中,如登录接口,我们需要记录接口的cookie。那我们就需要使用一个变量接收cookie。然后在后续接口中调用该变量。非常不方便。这时候引用session方法就可以解决

# 创建一个session对象
session = requests.session()
res = session.get('http://www.baidu.com','参数....')

但是这个方法仅限一次性请求,在第二个接口请求时,就需要再创建一个session对象。再去调用get等方法进行请求。这个时候,已经存在的session信息,在底层的request模块中进行了重置。

为了进行接口关联,我们可以用requests.session()方法创建对象。然后调用session下面的request方法进行接口请求。这个模块的request相较于上图中的request方法中。就少了一步初始化的操作。恰好这个跳过这一步,能帮助我们进行接口的session信息共享。下图是session模块的request底层实现。

02 封装





解决了多接口中session的问题。在实际用例中,我们就可以先在某个业务的用例类中先创建一个session对象。然后用这个对象进行接口调用。那么我们多个业务线,就要创建多个用例类。那么每次还是需要创建session对象,也不是很方便,同时也会出现代码冗余的情况。为解决这种情况,我们就想到了封装。

封装最大的好处就是代码复用,且代码不会冗余。

新建一个公共模块并定义一个获取requests的方法

class SendRequests:
    # 创建一个session对象
    sess = requests.session()


    # 定义请求并传入请求参数(参数就直接复制底层的request方法的入参即可)
    def get_request(self, method, url, **kwargs):
        # 直接返回这个请求
        return self.sess.request(method, url, **kwargs)

封装好以后。后面的接口直接调用这个方法就OK了

那么有个问题就来了。如果是两个不同系统的话,在调用这个方法时,会不会造成A系统的session信息,在B系统中出现呢?

答案是否定的,因为在新系统调用时,我们请求登录接口的话,就直接重写了session信息,所以就不会出现这个情况。当然pytest的运行机制也可以避免这个问题。

03 总结





以上就是本期内容了。在刚接触到封装的时候,一直在思考一个问题:封装这么多乱七八糟的方法。反而在逻辑上就很抽象,很不好理解啊!为啥还要封装呢?

在上面也说到:封装最大的好处就是代码复用,且代码不会冗余。封装的好处,在实际项目中的好处是需要慢慢体会的,运用得多了,就越知道它的好处。也不必担心会忘记定义了什么方法,哪个方法是想要的功能。在写好后,自然而然就记住了,就像是做饭一样,什么菜需要什么配料,肌肉记忆,想都不用想。卷就完了~

好了,各位大佬拜拜~下期见

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1034419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号