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

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

WebAPI接口的自动化测试1的更多相关文章

  1. WebAPI接口的自动化测试2

    接口认证: 服务器的接口需要通过一个验证机制,这个验证机制可以是session或token 以session为例. session存储与服务器,通常用户登录后,服务器会把配套的sessionid发送给 ...

  2. WebApi接口 - 如何在应用中调用webapi接口

    很高兴能再次和大家分享webapi接口的相关文章,本篇将要讲解的是如何在应用中调用webapi接口:对于大部分做内部管理系统及类似系统的朋友来说很少会去调用别人的接口,因此可能在这方面存在一些困惑,希 ...

  3. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解  ...

  4. C#进阶系列——WebApi 接口参数不再困惑:传参详解

    前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路.本 ...

  5. ASP.NET MVC对WebAPI接口操作(添加,更新和删除)

    昨天<怎样操作WebAPI接口(显示数据)>http://www.cnblogs.com/insus/p/5670401.html 既有使用jQuery,也有使作HttpClient来从数 ...

  6. WebApi 接口参数不再困惑:传参详解

    阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.“怪异”的get请求 二.post请求 1.基础类型参数 2.实体作为参数 3.数组作为参数 4.后台发送请求参数的 ...

  7. 利用委托与Lambada创建和调用webapi接口

    前言 现在项目中用的是webapi,其中有以下问题:    1.接口随着开发的增多逐渐增加相当庞大. 2.接口调用时不好管理. 以上是主要问题,对此就衍生了一个想法: 如果每一个接口都一个配置文件来管 ...

  8. 【转】C#进阶系列——WebApi 接口参数不再困惑:传参详解

    原文地址:http://www.cnblogs.com/landeanfen/archive/2016/04/06/5337072.html 阅读目录 一.get请求 1.基础类型参数 2.实体作为参 ...

  9. WebAPI接口测试之matthewcv.WebApiTestClient

    WebAPI接口测试之matthewcv.WebApiTestClient matthewcv.WebApiTestClient 1.安装matthewcv.WebApiTestClient包 打开v ...

随机推荐

  1. [LC]206题 Reverse Linked List (反转链表)(链表)

    ①英文题目 Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5-> ...

  2. 领扣(LeetCode)寻找旋转排序数组中的最小值 个人题解

    假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 请找出其中最小的元素. 你可以假设数组中不存在重 ...

  3. 0MQ是会阻塞的,不要字面上看到队列就等同非阻塞。

    如果你是希望通过0MQ来做缓冲队列,非阻塞的效果,那你就必须清楚 0MQ Socket是会阻塞,你要搞清楚0MQ Socket与队列的关系. 官方协议文档规定了,一部分类型的 0MQ Socket为不 ...

  4. 遗忘root密码,应该如何修改?[CentOS7.5]

    https://www.lanzous.com/i71hw6d 下载视频演示 实验环境:VMware Workstation [CentOS7.5]遗忘root用户密码 应该如何修改??? 设置BIO ...

  5. HTML的条件注释和hack技术

    在很多时候,前端的兼容性问题,都很让人头痛!幸运的是,微软从去年声明:从2016年1月12日起,微软将停止为IE8(包括IE8)提供技术支持和安全更新.整个前端圈子都沸腾起来,和今年七月份Adobe宣 ...

  6. 【前端知识体系-JS相关】10分钟搞定JavaScript正则表达式高频考点

    1.正则表达式基础 1.1 创建正则表达式 1.1.1 使用一个正则表达式字面量 const regex = /^[a-zA-Z]+[0-9]*\W?_$/gi; 1.1.2 调用RegExp对象的构 ...

  7. LXC容器文件系统设计优化

    在HOST上面,一个LXC container包含一个config文件和一个rootfs目录. 早期我们在交叉编译系统上编译出container的rootfs之后,直接在编译系统上将其用tar压缩打包 ...

  8. 看完这篇还不会用Git,那我就哭了!

    你使用过 Git 吗?也许你已经使用了一段时间,但它的许多奥秘仍然令人困惑. Git 是一个版本控制系统,是任何软件开发项目中的主要内容.通常有两个主要用途:代码备份和代码版本控制.你可以逐步处理代码 ...

  9. Java关于Resource leak: 's' is never closed的问题

    Resource leak: 's' is never closed的问题 问题:在编写Java时出现了Resource leak: 's' is never closed的问题,也就是对象s下面的波 ...

  10. cenos7搭建gitlab

    git.github和gitlab的区别 git:是一种版本控制系统,是一个命令,是一种工具 gitlib:是基于实现功能的开发库 github:是一个基于git实现的在线代码仓库软件 gitlib可 ...