• WebAPI接口的自动化测试1


    自动化测试要满足四个条件:

         1 - 自动化用例能够完成所有测试步骤   -------- postman不支持  没有完整的用例管理系统

         2 - 每个用例的输入数据,必须要自动填入  -------- postman支持

         3 - 每个用例的结果检查,必须可以用代码自动完成   ------ postman支持

         4 - 具备环境初始化和清除功能  ------   postman不支持  postman受到沙盒限制并不能任意引用第三方库

    python语言也可以实现web api接口测试。主要是构造出相应的http请求。

                   * 内置库有 httplib    urllib2

                   * 第三方库 urllib3    requests   pyCurl

    因此,要想进行接口自动化,我们就来了解下Request库。

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------

    Requests库:第三方库,简单易用、功能强大,是python实现的最简单易用的HTTP库。

          需要手动安装: pip  install  requests   提示successful即安装成功,模块requests就可以使用了   import  requests

      构建各种http请求:

             requests.get('htpps://api.github.com/events')  ---------   http.get请求

             requests.post('http://httpbin.org/post', data={'key':'value'})    ----------- http.post请求

             requests.put('http://httpbin.org/put', data={'key':'value'})  ------------ http.put请求

             requests.delete('http://httpbin.org/delete')    ------------  http.delete请求

      构建URL参数:

             payload = {'key1':'value1', 'key2':'value2'}

             requests.get('http://httpbin.org/get', params=payload)

      构建请求头: 

             只需要简单的传递一个字典给headers参数就可以了,如:

             h = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36....'}

             requests.get(url, headers=h, params=payload) 

      定制请求体:

             ① 请求体类型 Content-Type:   application/x-www-form-urlencoded

             只需要简单的穿衣一个字典给data参数就可以了,如:

             payload1 = {‘action’: 'add_course',

                              'data':'''{

                                     'name':'数学',

                                      'desc':'数学课程',

                                      'display_idx': '4'

                              }'''

                     }

             resp  = request.post(url, data=payload1)

             ② 请求体类型 Content-Type:  application/json

             可以将字典直接传递给json参数  如:

             payload2 = {‘action’: 'add_course', 'data':{ 'name':'数学',  'desc':'数学课程',  'display_idx': '4'}}

             resp = requests.post(url, json=payload2)

      查看响应内容:  

             先获取到响应对象resp =  requests.post(url, data=payload)  就可以查看服务器返回的各种消息内容

             查看响应头   ----- resp.headers

             查看响应体   ----- resp.text

             如果响应体恰巧是json格式   resp.json()   自动把json格式的字符串转成python对象,通常都是字典类型。

             那么再获取字典里面具体的值就好操作了。如:

                 retObj = resp.json()

                 if  retObj['retcode'] == 0:

                           print('pass')

                 else:

                           print(retObj['retcode'])                                                    

  • 相关阅读:
    django项目一:基于django2.2可重用登录与注册模块-图片验证码
    django项目一:基于django2.2可重用登录与注册模块-Django表单
    django项目一:基于django2.2可重用登录与注册模块-登录视图函数
    谈谈我的移动端rem适配方案
    微信公众号jssdk自定义分享,二次分享自定义失败解决技巧
    html-webpack-plugin的使用
    formData 无需form异步上传多个图片
    原生javascript跨浏览器常用事件处理
    apache+php+mysql运行环境
    MySQL企业级备份
  • 原文地址:https://www.cnblogs.com/peipei-Study/p/12022574.html
Copyright © 2020-2023  润新知