写个脚本做压力测试,要求一个设备同时新增100个基站标签,一个一个加太繁琐,因此写了个脚本进行测试,也没提供接口文档,只能通过fiddler抓包找所需接口,下面进入正题
1.新增四个文件,且放在一个目录下,分别是:excel文件(用来存放post请求的正文),ReadExc.py(将excel中的内容解析后拼接成字典),smtp.py(请求报错发送邮件),请求.py(post请求)
2.我测试所发送的请求正文是json格式的,所以存储的格式第一行统一为key,其他行为value,并采用了两个sheet表来保存,格式如下:
ReadExc.py代码:
#coding=utf-8
import xlrd
class Read_Ex():
def read_excel(self,node):
#打开excel表
book = xlrd.open_workbook("./data.xlsx")
#找到sheet1页
table1 = book.sheet_by_name("Sheet1")
#找到sheet2页
table2 = book.sheet_by_name("Sheet2")
#获取sheet1总行数总列数
row_Num1 = table1.nrows
col_Num1 = table1.ncols
#获取sheet2总行数列数
row_Num2 = table2.nrows
col_Num2 = table2.ncols
#初始化列表,用来保存excel传入的body值
s1= []
s2 = []
#第一行数据一般是表头,作为字典的key值
key1 = table1.row_values(0)
key2 = table2.row_values(0)
if row_Num1 <= 1 and row_Num2 <= 1:
print("excel未传入数据")
else:
j1 = 1
j2 = 1
#执行总行数减1次
for i in range(row_Num1-1):
d1={}
values1 = table1.row_values(j1) #2行 3行....
for x in range(col_Num1):
if isinstance(values1[x],float) and x!=1:
d1[key1[x]]=int(values1[x])
elif x==1:
d1[key1[x]]=str(int(values1[x]))
print(type(d1[key1[x]]))
else:
d1[key1[x]]=values1[x]
j1+=1
#s1.append(d1)
for i in range(row_Num2-1):
d2={}
values2 = table2.row_values(j2)
for x in range(col_Num2):
if isinstance(values2[x],float):
d2[key2[x]]=int(values2[x])
elif x==5:
values2[x]=None
d2[key2[x]]=values2[x]
else:
d2[key2[x]]=values2[x]
#print(type(d2[key2[x]]))
j2+=1
s2.append(d2)
d1.update({node:s2})
return d1
if __name__ == '__main__':
r = Read_Ex()
s = r.read_excel('vecTagFilter')
print(s)
smtp.py代码:
#coding=utf-8
import smtplib,time,os
from email.mime.text import MIMEText
from email.utils import formataddr,parseaddr
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from datetime import datetime
#发送email
class Send_email():
def send(self,mail_body):
#发送方邮箱
msg_from='***@163.com'
#发送方邮箱的授权码
passwd='***'
#收件人邮箱
msg_to='***@qq.com'
#主题
subject="新增温湿度设备请求"
#发送的正文
msg=MIMEText(mail_body)
#主题
msg['subject']=subject
#发件人邮箱
msg['From'] = msg_from
#收件人邮箱
msg['To']=msg_to
#发送时间
msg['Date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z')
#邮箱服务器及端口号
s=smtplib.SMTP_SSL("smtp.163.com",465)
#登录邮箱
s.login(msg_from,passwd)
#发送邮件
s.sendmail(msg_from,msg_to,msg.as_string())
if __name__ == '__main__':
pass
请求.py代码
#导包
import unittest
import requests
import json
from ReadExc import Read_Ex
from smtp import Send_email
from datetime import datetime
#断言
class Test_Add(unittest.TestCase):
def setUp(self):
print("开始")
def tearDown(self):
print("结束")
def test01(self):
res1=Read_Ex()
para=res1.read_excel('vecTagFilter') #连接Sheet2的键
print(para)
#接口地址
url ="接口地址"
#发送post请求
#res = requests.post(url,json=para)
res = requests.post(url,data=json.dumps(para,ensure_ascii=False).encode('utf-8'))
#获取json数据
rs=res.json()
rn=Send_email()
now = datetime.now()
if int(rs["nRet"]) != 0:
rn.send(mail_body='请求未正常发送,时间是:%s'%now)
print("请求发送失败")
else:
print('请求发送成功')
if __name__=='__main__':
unittest.main()
运行结果:
请求发送失败时邮箱会收到信息,但信息会存在垃圾信箱中
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/chenjuan0530/article/details/87718746
内容来源于网络,如有侵权,请联系作者删除!