python locust 性能测试:HttpSession

Posted backlight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python locust 性能测试:HttpSession相关的知识,希望对你有一定的参考价值。

  官网解释:用于在请求之间执行Web请求和保留(会话)cookie的类(以便能够登录和退出网站);记录每个请求,以便locust可以显示统计信息;

from locust import TaskSet, task, HttpLocust, Locust
from locust.clients import HttpSession
import subprocess
import random
from common.sec_encrypt import AESEncrypt, md5_time
from common import read_config
from common.logger import print_file


class WebUser(TaskSet):
    def on_start(self):
        self.session = HttpSession(http://localhost:8000/api)
        self.r = random.randint(10000, 99999)

    @task(2)
    def user_auth(self):
        """用户认证"""
        auth_user = (lixiaofeng, fengzi802300)
        res = self.session.get(/sec_get_event_list/, params={eid: self.r}, auth=auth_user,
                               name=/sec_get_event_list/?eid=[eid])
        print_file(res.json())
        # assert res.json()[‘status‘] == 200, ‘用户认证接口请求失败!‘

    @task(1)
    def aes_api(self):
        payload = {name: 187187011{}.format(self.r)}
        # 加密
        encodeed = AESEncrypt(payload).encrypt_data()
        # print(encodeed)
        res = self.session.get(/sec_get_guest_list/, params={data: encodeed},
                               name=/sec_get_guest_list/?data=[aes])
        print_file(res.text)
        # assert res.json()[‘status‘] == 200, ‘AES接口加密请求失败!‘

    @task(2)
    def md5_api(self):
        payload = {"eid": "{}".format(self.r), "name": "一加8手机发布会{}".format(str(self.r)), "limit": 2000, "status": "1",
                   "address": "深圳宝体会展中心",
                   "start_time": "2019-09-15 22:40:00", time: ‘‘, sign: ‘‘}
        payload = md5_time(payload)
        res = self.session.post(/sec_add_event/, data=payload, name=/sec_add_event/?data=[md5])
        print_file(res.text)
        # assert res.json()[‘status‘] == 200, ‘md5接口加密请求失败!‘

    @task(2)
    def add_guest(self):
        """添加嘉宾"""
        payload = {eid: {}.format(self.r), realname: 赵小刀{}.format(self.r),
                   phone: 187011{}.format(self.r),
                   email: 187011{}@163.com.format(self.r)}
        res = self.session.post(/add_guest/, data=payload, name=/add_guest/?data=[payload])
        print_file(res.text)


class Run(Locust):
    # host = ‘http://localhost:8000/api‘
    task_set = WebUser
    max_wait = 6000
    min_wait = 3000

def run():
subprocess.check_call(
‘locust -f D:Interface_framework_Beautylocust_files\locust_test.py‘)


if __name__ == ‘__main__‘:
run()
print_file,基于print函数,可以使locust打印写入日志文件的方法;使用HttpSession类,需要传入url参数;Run类,需要继承Locust类,而不是HttpLocust类;name=‘/sec_add_event/?data=[md5]‘,将请求分组,便于查看;








以上是关于python locust 性能测试:HttpSession的主要内容,如果未能解决你的问题,请参考以下文章

python locust 性能测试:locust 关联---提取返回数据并使用

python locust 性能测试:locust参数-保证并发测试数据唯一性,循环取数据

Python+locust做性能测试 ====locust版本更新(HttpUser)

python+locust性能测试之No Web UI模式下运行Locust

python locust 性能测试:HttpSession

python+locust性能测试之分布式运行