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'])                                                    

猜你喜欢

转载自www.cnblogs.com/peipei-Study/p/12022574.html