接口测试之多线程场景

  • 前置:线上抽奖系统
  • 场景:2000用户,分别请求接口,查看开奖概率是否符合预期
  • 思路:单个用户for循环请求,跑了10+min才跑了3分之1,中途还挂了一次。效率太慢了,,考虑多线程实现代码。
import requests
import threading


def call_post(_number, token=None):
    header = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'x-token': token,
    }
    data = requests.post('url', headers=header)
    print('线程' + str(_number) + ':' + str(data.status_code))
    data_file = data.json()
    print(data_file)
    with open("content.txt", "a") as f:
        f.write(str(data_file) + "\n")


def thread(_number, msg):
    """
    :param _number: 每次从列表取的数量
    :param msg: 线程的数量
    :return: 无
    """
    token_list = file_token("token.txt", "r")
    n = 0
    while _number * n < len(token_list):
        a = token_list[_number * n:_number * n + _number]
        threads = []
        for s in range(0, msg):
            token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI' + a[s]
            t = threading.Thread(target=call_post, args=(s, token))
            threads.append(t)
        n = n + 1

        for t in threads:
            t.start()
        for t in threads:
            t.join()


if __name__ == '__main__':
    thread(4, 4)

 

posted @ 2021-01-27 19:50  Crazy_小乐  阅读(199)  评论(0编辑  收藏  举报