Https post接口自动化测试-python实现篇

Posted 软件测试部落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Https post接口自动化测试-python实现篇相关的知识,希望对你有一定的参考价值。

        Https post接口自动化测试-python实现篇



背景:

目前国内很多公司都在打造所谓的“平台”,而平台要对外服务,兼容各种B端,C端公司,必须要开发标准的http请求API接口,以便对外、对内调用,昨天刚收到一个任务,熟悉公司的API接口,在我研究懂了第一个接口后,我做了以下尝试,两天时间波折起伏,遇到各种问题,各种百度查资料,终于全部完成。之前轱辘宠在他的python并发测试中已见过多线程使用,我这里不重复说明,原文链接如下:


Https post接口自动化测试-python实现篇


Https post接口自动化测试-python实现篇
需求分解:
Https post接口自动化测试-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实现篇

Https post接口自动化测试-python实现篇

Https post接口自动化测试-python实现篇



更多精彩,请关注"软件测试部落",官方社区


以上是关于Https post接口自动化测试-python实现篇的主要内容,如果未能解决你的问题,请参考以下文章

python接口自动化测试-requests.post()

python接口自动化测试框架(post提交添加变量)

20171213-python自动化-接口测试-jmeter-post-login

20171213-python自动化-接口测试-jmeter-post-设置cookie

20171213-python自动化-接口测试-jmeter-post-add-stu

Python接口自动化测试之详解post请求