接口自动化测试(一)

---恢复内容开始---

一、接口和接口测试

1、接口是什么?====传递数据的通道

接口测试:是测试系统组件的一种测试

接口测试主要包括:同一个系统中模块间的接口,另一个是系统平台与平台的对接。(内部接口、外部接口)

接口类型:

  http接口:通过GET或POST来获取数据,在数据的处理上效率比较高

  WebservIce接口:通过soap协议来获取数据,比起http来说能处理更复杂的数据类型

 

二. MVC模式

测试系统结构:MVC模式(Model模型、View视图、Control控制器)

         前台页面—后台服务数据交互

M:Model,指的是数据库

V:View,指用户看到的视图(呈现页面)

C:Control,逻辑层面,用于M和V之间的交互,接口就是在Control层

三、客户端与服务器如何建立通讯

http通讯过程:

 四、浏览器中查看接口信息

1. 接口包含的信息:接口地址、请求方法、请求数据、返回数据

2. chrome浏览器,在操作页面的时候,查看与后台的数据交互

F12—Network—Preserve log—XHR

3. 接口通信数据类型:

  JSON、XML

  定义通信协议

五. http通信

请求行:

请求的协议类型、协议版本、请求方法、资源地址

例:get XXXXXX.html http/1.0

 

消息头(header):

 

【空行】:

消息体(body):

 

响应数据(response):

  状态行、消息头(header)、【空行】、消息体(body)

 

以快递盒为例:快递单—消息头     快递盒里的东西—消息体

六. http通信—状态码

状态码由三位数字组成,第一个数字定义了响应的类别,共分为五种类别:

1xx:指示信息—表示请求已接收,继续处理

2xx:成功—表示请求已被成功接收、理解、接受

3xx:重定向—要完成请求必须进行更进一步的操作

4xx:客户端错误—请求有语法错误或请求无法实现

5xx:服务器端错误—服务器未能实现合法的请求

 

常见状态码:

200 OK          客户端请求成功

400 Bad Request      客户端请求有语法错误,不能被服务器所理解

401 Unauthorized     请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用

403 Forbidden        服务器收到请求,但是拒绝提供服务

404 Not Found        请求资源不存在,eg:输入了错误的URL

500 Internal Server Error    服务器发生不可预期的错误

503 Server Unavailable    服务器当前不能处理客户端的请求,一段时间后可能恢复正常

七. 接口测试要点

  • 检查接口返回的数据是否和预期结果一致

  • 检查接口的容错性,假如传递数据的类型错误时是否可以处理。例如上面的例子是支持整数,传递的是小数或字符串呢?

  • 接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理

  • 接口的性能,接口处理数据的时间也是测试的一个方法。牵扯到内部就是算法和代码的优化   ------响应时间多与少10s,易用性

  • 接口的安全性,如果是外部接口的话,这点尤为重要

测试思维相同

八.实例

以课堂派课堂详情页面为例

import requests
from requests import request
url
="https://www.ketangpai.com/AssistantApi/getTeacherTeam?courseid=MDAwMDAwMDAwMLOGy9yHz7ev"
method="get"
param="courseid: MDAwMDAwMDAwMLOGy9yHz7ev"
re=request("get",url,params=param)
print(re.status_code)
print(re.text)

得到的结果,可以看到并没有获取到数据(缺少cookies)

C:\Python34\python.exe C:/Pycharm-Workspace/python6_进阶/request_study/request_cookies.py
200
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>跳转提示</title>
<style type="text/css">
*{ padding: 0; margin: 0; }
body{ background: #fff; font-family: '微软雅黑'; color: #333; font-size: 16px; }
.system-message{ padding: 24px 48px; }
.system-message h1{ font-size: 100px; font-weight: normal; line-height: 120px; margin-bottom: 12px; }
.system-message .jump{ padding-top: 10px}
.system-message .jump a{ color: #333;}
.system-message .success,.system-message .error{ line-height: 1.8em; font-size: 36px }
.system-message .detail{ font-size: 12px; line-height: 20px; margin-top: 12px; display:none}
</style>
</head>
<body>
<div class="system-message">
<h1>:(</h1>
<p class="error">你还没有登录系统</p><p class="detail"></p>
<p class="jump">
页面自动 <a id="href" href="/User/login.html">跳转</a> 等待时间: <b id="wait">3</b>
</p>
</div>
<script type="text/javascript">
(function(){
var wait = document.getElementById('wait'),href = document.getElementById('href').href;
var interval = setInterval(function(){
    var time = --wait.innerHTML;
    if(time <= 0) {
        location.href = href;
        clearInterval(interval);
    };
}, 1000);
})();
</script>
</body>
</html>

Process finished with exit code 0

需要注意的是,request方法的动态参数要以key=value的形式传入,get请求的key是params,post请求是data,value必须写成字典的形式

 

posted @ 2018-08-17 09:47  sinder2018  阅读(26)  评论(0)    收藏  举报