Https post接口自动化测试-python实现篇
Posted 软件测试部落
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Https post接口自动化测试-python实现篇相关的知识,希望对你有一定的参考价值。
Https post接口自动化测试-python实现篇
背景:
目前国内很多公司都在打造所谓的“平台”,而平台要对外服务,兼容各种B端,C端公司,必须要开发标准的http请求API接口,以便对外、对内调用,昨天刚收到一个任务,熟悉公司的API接口,在我研究懂了第一个接口后,我做了以下尝试,两天时间波折起伏,遇到各种问题,各种百度查资料,终于全部完成。之前轱辘宠在他的python并发测试中已见过多线程使用,我这里不重复说明,原文链接如下:
源码如下:
# coding:utf-8
import requests,json,threading,time,datetime,logging
#定义消息发送次数
MessageSum = 0
url="https://xxxx.xxxx.xxxx/xxxx/xxxx"
# 定义request的body内容
date={
"platform":"all",
"audience":"all",
"notification":{
"alert": "Hi, Hordehome!",
"android":{},
"ios":{
"extras": {
"newsid":321
}
}
}
}
#定义header内容
header = {"content-type": "application/json",
"Authorization": "basic YTQ3ZTx5YWFhMmIzMTIzNTM3ZDkxZGEwOjBhY2I2YzcxYzZkMjdjMmU1YTFmMTA3Mg=="}
#定义log打印格式
logging.basicConfig(level=logging.DEBUG,
format='[process:%(process)d][threadid:%(thread)d][threadName:%(threadName)s][%(asctime)s][%(relativeCreated)d ][%(filename)s][line:%(lineno)d][module:%(module)s][funcName:%(funcName)s] %(levelname)s %(message)s',
filename='pushlog\\'+str(time.time())+ '.log',
filemode='w'
)
#定义时间戳
def output_systime():
nowtime_min=time.strftime('%Y%m%d%H%M%S')
nowtime_microsecond=str(datetime.datetime.now().microsecond)
nowtime=int(nowtime_min+nowtime_microsecond)
print "当前时间为%s"%nowtime
logging.debug("当前时间为%s"%nowtime)
def sendMessage():
global MessageSum
print json.dumps(date)
for i in range(1,1000): #消息发送次数可调整
output_systime()
req_post = requests.post(url,data=json.dumps(date),headers=header)
print req_post.text
MessageSum=MessageSum+1
print "当前一共成功发送消息数目为%s"%MessageSum
logging.debug("当前一共成功发送消息数目为%s" % MessageSum)
def startThread(treadNum):
threads=[]
for treadtime in xrange(1,treadNum):
T1 = threading.Thread(target=sendMessage)
threads.append(T1)
T1.setDaemon(True)
for T1 in threads:
T1.start()
print "第%s个线程已经启动" % (threads.index(T1)+1)
logging.debug("第%s个线程已经启动" % (threads.index(T1)+1))
for T1 in threads:
T1.join()
print "任务完成,线程终止,当前时间为%s" %time.ctime()
logging.debug("任务完成,线程终止,当前时间为%s" %time.ctime())
if __name__ == '__main__':
print "多线程API自动化测试脚本启动"
logging.debug("多线程API自动化测试脚本启动")
startThread(5000)
更多精彩,请关注"软件测试部落",官方社区
以上是关于Https post接口自动化测试-python实现篇的主要内容,如果未能解决你的问题,请参考以下文章
20171213-python自动化-接口测试-jmeter-post-login
20171213-python自动化-接口测试-jmeter-post-设置cookie