from locust import HttpUser, task
from locust import LoadTestShape
payload = {
"txtUserId": "DotNet",
"txtPassword": "DotNet",
}
orderPayload = {
"listCardType": "Visa",
"txtCardNumber": "9999%209999%209999%209999",
"listMonth": "01",
"listYear": "2002",
"billAddr%24txtFirstName": "ABC",
"billAddr%24txtLastName": "XYX",
"billAddr%24txtAddress1": "901%20San%20Antonio%20Road",
"billAddr%24txtAddress2": "MS%20UCUP02-206",
"billAddr%24txtCity": "Palo%20Alto",
"billAddr%24listState": "Ca",
"billAddr%24txtZip": "94303",
"billAddr%24listCountry": "USA",
"billAddr%24txtPhone": "555-555-55",
"chkShipBilling": "on",
}
class WebsiteUser(HttpUser):
host = "http://mspetshop.com"
def on_start(self):
self.client.headers.update({'Content-type': 'application/x-www-form-urlencoded'})
@task
def get_sign_in(self):
self.client.get("/MSPetShop/SignIn.aspx", data=payload)
@task
def post_sign_it(self):
self.client.post("/MSPetShop/SignIn.aspx", data=payload)
@task
def get_fish_category_page(self):
self.client.get("/MSPetShop/Category.aspx?categoryId=FISH", data=payload)
@task
def get_items_from_category(self):
self.client.get("/MSPetShop/Items.aspx?productId=FI-FW-02", data=payload)
@task
def add_item_to_cart(self):
self.client.get("/MSPetShop/ShoppingCart.aspx?itemId=EST-20", data=payload)
@task
def get_checkout(self):
self.client.get("/MSPetShop/Checkout.aspx", data=payload)
@task
def get_billing_page(self):
self.client.get("/MSPetShop/OrderBilling.aspx", data=payload)
@task
def post_checkout(self):
self.client.post("/MSPetShop/OrderBilling.aspx", data=orderPayload)
@task
def send_order(self):
self.client.get("/MSPetShop/OrderProcess.aspx", data=payload)
@task
def sign_out(self):
self.client.get("/MSPetShop/SignOut.aspx", data=payload)
class StagesShape(LoadTestShape):
stages = [
{"duration": 60, "users": 50, "spawn_rate": 1},
{"duration": 120, "users": 50, "spawn_rate": 1}
]
def tick(self):
run_time = self.get_run_time()
for stage in self.stages:
if run_time < stage["duration"]:
tick_data = (stage["users"], stage["spawn_rate"])
return tick_data
return None