画布 1
接口测试内容梳理
  初级
    常见的接口协议
      http 协议
        请求
          请求行
            请求方法 method
              get
              post
              put
              delete
            url
            protocol 协议版本
          请求头
            客户端 自报家门
          请求参数
            query 拼接到url中
            协议://主机名/IP:端口/路径？请求参数(key=value)
          请求体
            request 体
              json
                {}
              form 表单
              文件格式
        响应
          响应状态行
            协议
            响应状态码
              r = requests.request()
r.status_code
              1xx
                正在处理请求
              2xx
                请求成功，响应正常返回了
              3xx
                请求需要被重定向到另一个服务器上。
              4xx
                客户端出问题
              5xx
                服务器端出问题
          响应头
            服务端自报家门
          响应体
            reponse body
              json
              form表单
              文件格式
      restful 架构
        get 获取资源
        post 上传资源
        put 修改
        delete 删除资源
    postman 测试接口
    抓包与mock 测试
  中级
    接口请求构造
      r = requests.get(url)
      r = requests.post(url)
      r = requests.put(url)
      requests.request()
    接口测试断言
      状态断言
        r = requests.get()
assert r.status_code == 200
assert r.json().get('errcode') == 0
      业务断言
        r = requests.request()
assert r.json.get('key') ==expect
    复杂请求构造
      post 请求不同的格式请求体
        form 格式
          requests.post(url, data={})
        json 格式
          requests.post(url, json={})
        文件格式
          requests.post(url, files={})
    复杂断言处理
      jsonpath
        使用jsonpath 第三方库， 通过路径完成对子段查找，然后进行断言
        jsonpath(r.json(), "jsonpath"表达式)
        jsonpath表达式
          $ 根结点
          . 下一层级
          .. 任意层级
      jsonschema
        校验 json 格式是否符合预期
        使用第三方库 jsonschema 第三方库
        validate(instance=obj, schema=schema)
    代理配置
      requests.get(url, proxies={"http": "http://127.0.0.1:8888", "https":{https://127.0.0.1:8888}},verify=False )
    cookie 处理
      请求头设置
        requests.get(url, headers={'Cookie': "key:value"})
    超时处理
      requests.get(url, timeout =0.0)
    数据库操作与断言
      使用pymysql 第三方库
        1. 连接数据库
          connect = pymysql.connect (host, post, username, password, ,database,charset )
        2. 创建游标
          cursor = connect.cursor()
        3. 执行sql 语句
          cursor.execute(sql)
        4. 获取执行结果
          cursor.fetchone()
  高级
    接口测试框架的封装
      目的
        框架更加稳定，更便于维护用例
      思路
        分层
        公共的方法进行封装
        接口的业务，测试用例，断言进行拆分
      ApiObject
        BaseApi
          底层框架
        ServiceApi
          业务接口描述
        TestCase
          测试用例以及断言
    接口的加密和解密
      知道使用的是什么加密算法
        自行使用对应的工具解密
      开发，加密的工具库
      第三方加密，让加密方提供一个远程的解析服务
    多套被测环境
    多协议封装设计
      json格式，xml ---- 统一转成python 对象
    接口的鉴权
      cookie
        第一次认证之后，后面所有的实例，都会自动携带对应的cookie 信息
      token
        首先调用一个认证接口， 完成token 获取
再调用 新增接口/ 列表接口... 发送请求的时候带着token ,完成认证
      auth
        每次请求都需要携带用户信息