基于python+requests的简单接口测试

  在进行接口测试时,我们可以使用已有的工具(如:jmeter)进行,也可以使用python+requests进行。以下为简单的接口测试模板:

一、提取常用变量,统一配置

  新建一个config.py文件,用来存放统一变量

  如:

 1 # _*_ coding:;utf--8 _*_
 2 import json
 3 
 4 #接口测试中,使用的头文件信息
 5 headers={
 6         "Accept":"application/json",
 7         "Connection":"keep-alive",
 8         "Accept-Language":"zh-Hans-CN;q=1",
 9         "Accept-Encoding":"gzip, deflate"
10     }
11 
12 #测试地址:IP+端口
13 service="http://192.168.1.1:8080"
14 
15 #读取测试用例文件
16 interfile=open("D:\testcase接口测试脚本-总接口.csv","r")
17 intercase=interfile.readlines()
18 interfile.close()
19 
20 #读取测试结果文件,并保存结果
21 def resultmode(interresult):
22         testresult=open("D:\testresult\testresult.csv","a")
23         # interresult="测试结果"
24         testresult.write(interresult)
25         testresult.close()

二、提取requests的方法,方便调用

  如:

 1 #_*_ coding:utf-8 _*_
 2 import json
 3 from Interface_test.config import service,headers,resultmode,intercase
 4 import requests
 5 import re,time
 6 import types
 7 
 8 
 9 def Interface_post(interface,paramter):
10     url = service + interface
11     # paramter = json.dumps(paramter)
12     try:
13         resp = requests.post(url, headers=headers, data=paramter,timeout=30)
14         resp.json()
15         return resp
16     except ValueError:
17         print("响应值不是json格式")
18         return resp
19     except ConnectionError:
20         print("网络异常")
21         return resp
22     except TimeoutError:
23         print("请求超时")
24         return resp
25 def Interface_get(interface,paramter):
26     url = service + interface
27     paramter = json.dumps(paramter)
28 
29     resp = requests.get(url, headers=headers,timeout=1)
30     # print(resp.json())
31     return resp

三、针对接口的测试

  如:

 1 # _*_ coding:utf-8 _*_
 2 
 3 import json
 4 from Interface_test.config import service,headers,intercase,resultmode
 5 from Interface_test.mode import Interface_post
 6 import re,time
 7 import requests
 8 
 9 class interface_test():
10     def __init__(self):
11         """init"""
12 
13 if __name__=='__main__':
14 
15     #输出接口测试执行的时间到结果文件
16     rtime=time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())
17     resultmode("
"+"本次测试时间为:"+rtime+"
")
18 
19     #循环读取测试用例文件中的信息
20     for i in range(len(intercase)):
21         param=intercase[i].split(",")
22 
23         ###赋值接口请求路径
24         inter = param[2]
25 
26         ####赋值接口参数
27         para = (str(param[3])).strip()
28 
29         ###发起请求
30         responses=Interface_post(inter,para)
31         # print(responses.encoding)
32         # print(responses.text)
33 
34         # print(responses.cookies)
35 
36         ###查看请求结果
37         #请求响应code
38         code=responses.status_code
39         # print(responses.status_code==requests.codes.ok)
40         # print(responses.raise_for_status())
41 
42         #判断请求结果
43         if code==200:
44             ##当请求成功时,获取响应数据
45             results = json.loads((responses.content).decode())
46             ##在响应数据中提取result的值
47             bool = results.get("result")
48             # body=results.get("body")
49             ##判断result值:为1时成功,输出信息
50             if bool=='1':
51                 ###将响应结果输出到文件
52                 resultstring=param[0]+","+param[1]+","+str(code)+","+"请求成功,响应成功"+"
"
53                 resultmode(resultstring)
54                 ##判断result结果:为0时,表示请求发送成功,但是响应的数据有问题,返回响应的error信息
55             elif bool=='0':
56                 errorstring=results["body"]["errorDescription"]
57                 resultstring=param[0]+","+param[1]+","+str(code)+","+"请求成功,响应报错"+
58                              ","+errorstring+"
"
59                 resultmode(resultstring)
60             else:
61                 resultstring = param[0] + "," +param[1]+","+ str(code)+ ","+"请求响应失败"+"
"
62                 resultmode(resultstring)
63         #当响应code不为200时,输出响应code
64         else:
65             resultstring = param[0]  + "," +param[1]+","+ str(code) + ","+"请求响应失败"+"
"
66             resultmode(resultstring)

四、涉及的知识点说明

1requests

  地址:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

2、文件操作

  地址:https://www.cnblogs.com/smallstone2018/p/9841957.html

3Json

  使用json前,需要先导入包:import json

  jsonpython的字典之间的转换

  json模块有两个方法:

  loads():将json数据转换成disc数据;

  dumps():将dict数据转换成json数据;

  load():读取json文件数据,转换成dict数据;

  dump():将dict数据转换成json数据后 写入json文件;

原文地址:https://www.cnblogs.com/smallstone2018/p/9847758.html