学习网址:http://www.python3.vip/

一、概念

接口测试:对软件系统消息交互接口的测试

 

 二、接口测试流程

1.依据接口规范,写测试用例

2.使用软件工具直接通过消息接口对被测系统进行消息收发

3.验证被测系统行为是否正确

注意:明确测试对象是哪个,通常是服务端测试,一般用工具模拟客户端发消息给服务端,查看服务端响应

 三、API接口测试

1.获取网页、图片、css资源信息,不需特别数据处理,直接从服务端读取文件,返回改客户端,不是api接口

2.api接口:需要服务端程序进行一番处理,如:对请求的权限检查、从数据库中读出数据,进行信息过滤和格式转换,最后由HTTP响应返回给客户端

3.测试工具:postman、jmeter、python的requests库,原理:构建HTTP请求消息,并且解析http响应消息,用户来判断是否符合预期

四、接口测试工作

1.获取接口文档、评审文档、了解接口的实现细节

2.根据接口文档,写出测试用例

3.等产品发布后,根据测试用例,使用软件工具,直接通过消息接口对被测系统进行消息收发、验证被测系统行为是否正确

 五、request库

1.request库用于发送Http请求、接收响应、简单的爬虫工具

2.官网文档:Requests官方网站,安装命令pip install requests

3.请求方法:常见的get、post、put、delete等,发哦少年宫请求方法调用同名的函数

4.响应消息:返回requests库库里定义的response类实例对象

六、filder工具使用

1.filder代理式抓包

根据目标主机地址过滤 HTTP消息, 在上图所示 左边的红色箭头处, 选择 show only the following hosts

然后,在下边的方框,里面填写要抓取的HTTP消息的目标地址, 可以使用* 作为通配符

 

 大家点击这里,下载fidder安装包

过滤包设置,只抓发往某个目的的包

根据目标主机地址过滤 HTTP消息, 在上图所示 左边的红色箭头处, 选择 show only the following hosts

然后,在下边的方框,里面填写要抓取的HTTP消息的目标地址, 可以使用* 作为通配符

注意:修改完设置后,一定要点击一下 下图箭头所示处,才能保存生效

image

安装好以后,通常我们需要设置一下抓包过滤项,否则抓到的包太多,不方便分析。

image

 查看包内容

 

 2.浏览器代理设置(谷歌默认使用代理)

3.使用代码

 

 4.手机抓包

确保手机使用wifi与fiddler运行同一个子网

然后 需要设置fidder, 允许远程机器连接自己,点击菜单option,点击connections标签,勾选 Allow remote computer to connect, 如下所示

image

 

然后打开手机的 WIFI 设置, 长按 当前的 WiFi连接,选择 修改网络

然后点击高级选项下拉框,在代理设置里面选择手动,如下所示

image

然后填入fiddler所在机器的 IP地址(通过ipconfig命令查看) 和代理端口 8888, 点击完成 ,如下所示

image

如果是需要抓 HTTPS包,需要导入证书,参考这篇文章

 七、构造请求消息

1.get请求 https://www.baidu.com/s?wd=iphone&rsv_spt=1

问号后面的部分 wd=iphone&rsv_spt=1 就是 url 参数, 参数放到一个字典里面,然后把字典对象传递给 Requests请求方法的 params 参数

 

 

2.post请求

传递参数指定参数 headers 的值为这个字典

 

 

八、构造消息体

 1.响应状态码

 

 2.响应消息头

 

 

response.headers 对象的类型 是 继承自 Dict 字典 类型的一个 类。

我们也可以像操作字典一样操作它,比如取出一个元素的值

print(response.headers['Content-Type'])

 

3.响应消息体

要获取响应的消息体的文本内容,直接通过response对象 的 text 属性即可获取,equests 会根据响应消息头(比如 Content-Type)对编码格式做推测。

但是有时候,服务端并不一定会在消息头中指定编码格式,这时, requests的推测可能有误,需要我们指定编码格式。

 十、cookies与session关系

 

 

用户使用客户端登录,服务端进行验证(比如验证用户名、密码)。

验证通过后,服务端系统就会为这次登录创建一个session。

session就是一个数据结构,保存该客户这次登录操作相关信息。通常保存在数据库中。

同时创建一个唯一的sessionid(就是一个字符串),标志这个session。

然后,服务端通过HTTP响应,把sessionid告诉客户端。

客户端在后续的HTTP请求消息头中,都要包含这个sessionid。这样服务端就会知道,这个请求对应哪个session,从而知道对应哪个客户。

十一、requests处理session-cookie

equests库给我们提供一个 Session 类 ,通过这个类,无需我们操心, requests库自动帮我们保存服务端返回的 cookie数据, HTTP请求自动 在消息头中放入 cookie 数据。

mport requests

# 打印HTTP响应消息的函数
def printResponse(response):
    print('\n\n-------- HTTP response * begin -------')
    print(response.status_code)

    for k, v in response.headers.items():
        print(f'{k}: {v}')

    print('')

    print(response.content.decode('utf8'))
    print('-------- HTTP response * end -------\n\n')


# 创建 Session 对象
s = requests.Session()

# 通过 Session 对象 发送请求
response = s.post("http://127.0.0.1/api/mgr/signin",
       data={
           'username': 'byhy',
           'password': '88888888'
       })

printResponse(response)

# 通过 Session 对象 发送请求
response = s.get("http://127.0.0.1/api/mgr/customers",
      params={
          'action'    :  'list_customer',
          'pagesize'  :  10,
          'pagenum'   :  1,
          'keywords'  :  '',
      })

printResponse(response)

 

 

 

 

 

posted on 2021-05-06 17:00  丝瓜123  阅读(80)  评论(0编辑  收藏  举报