• python应用(一、接口自动化:requests)


    1 接口自动化(python + requests)
    参考网站:
    https://www.bilibili.com/video/BV1eb411P7tV?p=4
    https://requests.readthedocs.io/zh_CN/latest/
    1.1 安装requests模块
    pip install requests

    1.2 get请求
    1)get基本语法:requests.get(url, params=数据)
    参数:使用params参数传参,数据格式为字典

    1. 按get请求参数格式分类:
      (1)不带参数的get请求
      (2)带参数的get请求:
      (a)导入requests
      (b)准备接口三要素:请求地址、请求方式、请求参数(字典格式)
      (c)获取返回值
      (3)实例:

    1.3 post请求
    1)post基本语法:requests.post(url, data=None, json=None, **kwargs)
    不同的传参方式,使用不同的参数。

    2)按post请求参数格式分类:
    (1)x-www-form-urlencoded格式
    参数:使用data参数传参,数据格式为字典
    语法:requests.post(url, data=参数, **kwargs)
    参数使用data时,requests方法会自动在请求header中将Content-Type设置为:application/x-www-form-urlencoded,下面代码中request_header不添加Content-Type也没有问题

    (2)json格式
    参数:使用json参数传参,数据格式为字典
    语法:requests.post(url, json=数据, **kwargs)
    参数使用json时,requests方法会自动在请求header中将Content-Type设置为:application/json,下面代码中request_header不添加Content-Type也没有问题

    (3)form-data格式(很少使用)
    (a)安装requests_toolbelt: pip install requests_toolbelt

    (b)代码
    参数:使用data参数传参,数据格式为字典
    语法:requests.post(url, data=数据, headers=消息头, **kwargs)

    (4)binary格式(很少使用)
    参数:使用files参数传参,数据格式为字典,字典的值是文件内容
    语法:requests.post(url, file=数据, **kwargs)

    3)post方法参数查询
    (1)按住ctrl键,单击post,自动打开api.py文件,并定位到post方法说明

    (2)在post方法说明中查找参数,我们只能找到url、data、json、kwargs。其它参数都被kwargs接收了。
    按住ctrl键,单击request,自动定位到request方法说明

    (3)在这里我们可以看到所有参数的信息

    常用参数:
    (a)json:使用json格式传递参数时使用
    (b)headers:请求消息头,字典格式。
    python发送请求,默认User-Agent是python-requests,有些网站会进行屏蔽。
    我们可以在header中将User-Agent设置成Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36,伪装成谷歌浏览器。
    (c)verify:verify=false,访问https时可以不用导入证书
    (d)timeout:设置超时时间
    (e)files:传参方式为binary时,可以上传文件

    1.4 返回值
    1)代码:

    2)返回值
    (1)返回值response的数据类型是对象:<class 'requests.models.Response'>
    (2)response.text:数据类型是字符串,以文本格式显示返回数据

    (3)response.json():数据类型是字典,以json格式显示返回数据,只适用于json格式返回值

    使用json.dumps(字典转换成json字符串)和json.loads(转json字符串换成字典)可以实现,字典数据和json数据之间的转换。
    (4)response.status_code返回的状态码:200
    (5)response.header:响应头数据,字典类型

    (6)response.content:响应数据源码,数据类型字节(bytes)

    1.5 接口测试框架设计(requests、unittest)
    1.5.1 测试项目文件夹及文件夹中的文件
    1)common文件夹
    send_method.py:封装接口请求方法
    get_keyword.py:从返回值中通过关键字获取数据
    2)interface文件夹
    一个接口对应一个py文件:
    对该接口的请求:用于单接口测试
    根据业务获取接口返回值:用于关联接口测试
    3)script:测试用例
    4)data:测试数据
    5)report:测试报告

    1.5.2 send_method封装,接口请求方法,接收返回数据
    1)编写依据:
    (1)项目接口文档
    (2)接口三要素:请求方式+请求地址、请求参数、返回值

    2)代码编写

    1.5.3 get_keyword封装,从返回值中通过关键字获取数据
    1)JsonPath
    (1)JsonPath介绍
    用来解析多层嵌套的json数据; JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,它可以通过键获取值,返回列表。
    JsonPath 对于 JSON 来说,相当于 XPath 对于 XML
    (2)安装jsonpath:pip install jsonpath

    (3)使用方法如:
    import jsonpath
    res=jsonpath.jsonpath(原数据, jsonpath表达式)
    jsonpath表达式示例:'$..关键字'
    嵌套n层也能取到所有key_name信息,其中:“$”表示最外层的{},“..”表示模糊匹配,当传入不存在的key_name时,程序会返回false。
    (4)JsonPath与XPath语法对比:

    (5)JsonPath代码编写
    使用python编写,代码复杂,不够灵活。

    使用JsonPath模块编写,简单灵活

    2)封装

    1.5.4 interface封装,一个接口对应一个py文件

    1.5.5 script封装,unittest测试脚本


    测试结果:

    1.5.6 扩展
    1)参数化(excel、csv、mysql、@ddt装饰器)
    2)关联接口测试
    第二个接口请求中,使用第一个接口的返回的数据
    例如:登录后,使用登录时产生的token,进行操作。

  • 相关阅读:
    maven
    ELK
    gitlab 升级
    平安工作流程
    平安云应用场景
    nginx基于uwsgi部署Django (单机搭建)
    ansible
    nginx理论
    GIT
    docker(三)
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14167748.html
Copyright © 2020-2023  润新知