2022年 11月 4日

使用python实现接口测试

一、Requests库的基本使用:

        安装:pip install requests -i https://pypi.douban.com/simple

        官方文档: https://requests.readthedocs.io/zh_CN/latest/

                用来进行HTTP访问处理的第3方库。

        基本用法:

                方法一:

                 requests.request(请求方法,请求地址, 协议版本号,请求数据,请求头信息….)

                实际接口:requests.request(method,url,**kwargs)

                示例:

  1. # get请求,查询所有学院信息
  2. # 定义地址
  3. url = "http://127.0.0.1:8000/api/departments/"
  4. # 调用方法,发送请求
  5. res01 = requests.request("get", url)
  6. print("request方法获取的get响应报文为:", res01.text)

                方法二:每种请求方法使用一个函数。

                (1)GET方法使用 requests.get(请求地址,协议版本号,请求数据,请求头信息….)

                实际接口:requests.get(url,**kwargs)

                示例:

  1. # 定义地址
  2. url = "http://127.0.0.1:8000/api/departments/"
  3. # get请求不带参数
  4. # 调用方法,发送请求
  5. res02 = requests.get(url)
  6. print("get请求不带参数返回", res02)
  7. print("get请求不带参数返回的报文文本为:", res02.text)
  8. print("get请求不带参数返回的状态码为:", res02.status_code)
  9. print("get请求不带参数返回的头部字段为:", res02.headers)
  10. # get请求带参数
  11. # 定义参数列表,分析清楚参数名和参数值分别是什么
  12. para03 = {"dep_name": "小狐狸"}
  13. # 发送请求,获取响应,存入一个变量
  14. res03 = requests.get(url, para03)
  15. print("get请求带参数返回的响应报文文本为:", res03.text)

                (2)post请求使用示例:

                        需求:添加一条学院信息

                        携带消息体数据为纯文本格式示例:

  1. # 定义地址
  2. url = "http://127.0.0.1:8000/api/departments/"
  3. # post请求带消息体数据,方式一:纯文本格式
  4. # 定制请求头,指定消息体格式为json
  5. myheader04 = {"Content-Type": "application/json"}
  6. # 定义消息体数据,纯文本格式
  7. data = '{"data":[{"dep_id":"flower","dep_name":"百花仙子","master_name":"百花园","slogan":"花无百日红"}]}'
  8. # 发送请求,获取响应,存入变量
  9. # 调用encode方法,转换编码格式
  10. res04 = requests.post(url, data.encode("utf-8"), headers=myheader04)
  11. print("post请求带纯文本消息体数据返回的响应报文为:", res04.text)

                        携带消息体数据为json格式示例:

  1. # 定义地址
  2. url = "http://127.0.0.1:8000/api/departments/"
  3. # post请求带消息体数据,方式二:json格式
  4. # 定义消息体数据,json格式
  5. json01 = \
  6. {
  7. "data":
  8. [
  9. {
  10. "dep_id": "monkey",
  11. "dep_name": "孙悟空",
  12. "master_name": "花果山水帘洞",
  13. "slogan": "知恩不报非君子,万古千秋作骂名。"
  14. }
  15. ]
  16. }
  17. # 发送请求,存入变量
  18. res05 = requests.post(url, json=json01)
  19. print("post带json格式消息体数据返回的响应报文为:", res05.text)

        二、对响应结果进行处理

        获取响应码:

print("响应状态码:",res.status_code)

        获取头信息:

print("响应头信息:",res.headers)

        获取响应文本:

print("响应数据文本:",res.text)

三、python接口测试框架的设计思路

        (1)请求发送与响应获取:requests库

        (2)测试用用例管理:unittest

        (3)生成测试报告:unittest、其它HTML报告生成工具

        (4)测试数据的管理:csv

        (5)参数化:DDT