locust

from locust import  HttpLocust,task,TaskSet
import time
import requests
import hashlib
import hmac
import random


HOST="10.100.1.100:10712"
baseUrl="http://%s"%HOST
login_html=baseUrl+"/bs/rule/loan/rs/generalfunction/get"
user_login_url=baseUrl+"/bs/rule/loan/j_spring_security_check"

'''查询规则'''
query_rule_url_01=baseUrl+"/bs/rule/loan/rs/sd/config/event/listChannelEvent?returnEmptyChild=false"
query_rule_url_02=baseUrl+"/bs/rule/loan/rs/sd/config/pkg/category/listPkgCate"
query_rule_url_03=baseUrl+"/bs/rule/loan/rs/sd/hit/rule/listRules"
'''查询特征'''
query_feater_url=baseUrl+"/bs/rule/loan/rs/sd/feature/list?"
'''查询机构'''
query_org_url=baseUrl+"/bs/rule/loan/rs/org?"
'''查询角色'''
query_character_url=baseUrl+"/bs/rule/loan/rs/role?"
'''查询用户'''
query_user_url=baseUrl+"/bs/rule/loan/rs/role?"



def jiami_sha256(value):
    sha256=hashlib.sha256()
    sha256.update(value.encode("utf-8"))
    res=sha256.hexdigest()
    return res

def getLoginSession(username,password):
    r=requests.get(login_html)
    loginSession=r.cookies.get_dict()["SESSION"]
    cookie="theme=bangsun; portal_biz_line=LOAN; Language=zh-CN; SESSION="+loginSession
    # print (cookie)
    headers = {"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        , "Accept-Encoding":"gzip, deflate"
        , "Accept-Language":"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"
        , "Cache-Control":"max-age=0"
        , "Connection":"keep-alive"
        , "Host":HOST
        ,"cookie":cookie,
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"
        , "If-Modified-Since":"Thu, 28 Nov 2019 07:45:02 GMT"
        , "Upgrade-Insecure-Requests":"1"
        }
    passwd=jiami_sha256(password)
    data={
        "username":username,
        "password":passwd
    }
    r1=requests.post(url=user_login_url,headers=headers,data=data)
    if "true" in r1.text:
        print ("用户:%s登录成功"%username)
    else:
        print (r1.text)
    return "theme=bangsun; portal_biz_line=LOAN; Language=zh-CN; SESSION="+r1.cookies.get_dict()["SESSION"]



class UserBehavior(TaskSet):
    def on_start(self):
        self.cookie = getLoginSession("admin","bangsun")
        self.headers = {"Accept": "*/*"
            , "Accept-Encoding": "gzip, deflate"
            , "Accept-Language": "zh-CN,zh;q=0.9"
            , "Connection": "keep-alive"
            , "Cookie": self.cookie
            , "Host": HOST
            ,
                   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"
            , "X-Requested-With": "XMLHttpRequest"
            , "Content-Type": "application/json"
            , "Content-Length": "120"
                }
    @task(2)  #查询规则
    def test_query_rule(self):
        data = {"start":1,"limit":25,"keyword":"tyxtyx","cateId":"",
                "orgId":"","pkgType":"HIT,SCORE","orgType":"belong",
                "ruleType":"HIT,SCORE","tabCode":"COMMON","pkgId":""}
        data["keyword"]="测试规则%s"%str(random.randint(0,100))
        self.client.post(url=query_rule_url_03, data=data, headers=self.headers,name='规则页面:查询规则接口1')
        self.client.get(url=query_rule_url_01, data=data, headers=self.headers, name='规则页面:查询规则接口2')
        self.client.get(url=query_rule_url_02, data=data, headers=self.headers, name='规则页面:查询规则接口3')

    @task(2) #查询特征
    def test_query_feater(self):
        data = {"type": "",
                "enabled": "",
                "keyword": "测试%s"%str(random.randint(0,100)),
                "groupId": "",
                "limit": "15",
                "start": "1"}
        self.client.get(url=query_feater_url,data=data,headers=self.headers,name="特征管理页面,查询特征接口")
    @task(2) #查询机构
    def test_query_org(self):
        data={"keyword":"Orgname_%s"%str(random.randint(1,100)),
              "orgId":"",
              "start":"1",
              "limit":"25",
        }
        self.client.get(url=query_org_url,data=data,headers=self.headers,name="系统配置页面:机构查询接口")
    @task(2) #查询角色
    def test_query_character(self):
        data = {"keyword":"",
                "orgId":"",
                "start":"0",
                "limit":"0"
                }
        data1 = {"keyword":"TestCharacter%s"%str(random.randint(1,400)),
                "orgId":"",
                "start":"1",
                "limit":"25"
                }
        self.client.get(url=query_character_url,data=data,headers=self.headers,name="系统配置页面:角色查询接口1")
        self.client.get(url=query_character_url,data=data1,headers=self.headers,name="系统配置页面:角色查询接口2")
    @task(2)#查询用户
    def test_query_user1(self):
        data = {"keyword":"",
                "orgId":"",
                "start":"0",
                "limit":"0"
                }
        data1 = {"keyword": "testuser%s" % str(random.randint(1, 400)),
                 "orgId":"",
                 "roleName":"",
                 "start":"1",
                 "limit":"25"
                 }
        self.client.get(url=query_user_url,data=data,headers=self.headers,name="系统配置页面:用户查询接口1")
        self.client.get(url=query_user_url,data=data1,headers=self.headers,name="系统配置页面:用户查询接口2")


class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    host='http://%s'%HOST
    min_wait = 2000
    max_wait = 4000

  @task()控制执行权限,   on_start( ) 类似于 setup    

on_start
原文地址:https://www.cnblogs.com/XXQQ123/p/13354660.html