I want to use this pytest script as a performance test.
How can I implement i.e. Userclass and tasks given the following script?
With regards to scope, if I define a UserClass (i.e. FastHttpUser), could all the test be outside of this class?
import requests
from azure.identity import DefaultAzureCredential
import json
import pytest
# Arrange:
base_url = "https://example.com"
credential = DefaultAzureCredential()
token = credential.get_token("api://xxx")
token = token.token
hpsId = ''
powerplantId = ''
all_pp_ids = []
def get_requests(t, endpoint):
# Arrange:
response = requests.get(f'{base_url}{endpoint}',
headers={"Authorization": f'Bearer {t}',
"Content-Type": 'application/json'})
print(response.text)
return response
def post_requests(t, endpoint, payload):
# Arrange:
data = payload
json_data = json.dumps(data, indent=2)
response = requests.post(f'{base_url}{endpoint}', data=json_data,
headers={"Authorization": f'Bearer {t}',
"Content-Type": 'application/json'})
print(response.text)
print(response.request.body)
return response
def setpayload_bid_generate(hps_id):
# Arrange:
myjson = {"powerPlantIds": [hps_id]}
return myjson
def setpayload_bids(hps_id, pp_id):
# Arrange:
myjson = {
"hpsId": hps_id,
"powerPlantId": pp_id,
"readPeriod": [
1713909600,
1714089600
],
"timeAxis": {
"t0": 1713909600,
"dt": 900,
"n": 200
}
}
return myjson
def setpayload_bids_generate_all(alle):
# Arrange:
myjson = {"powerPlantIds": alle}
return myjson
def test_get_powerplant():
global hpsId
global powerplantId
global all_pp_ids
# Act:
response = get_requests(token, '/mfrr-
eam/api/mfrr/eam/powerplant/all')
try:
data = response.json()
all_pp_ids = [(item["powerPlant"]["id"]) for item in data]
print("Alle powerplant IDs: ", all_pp_ids)
except KeyError:
print("Unable to get pp ids")
try:
hpsId = response.json()[0]["hpsId"] # Get the hpsId
print("HPS Ids: ", hpsId)
print(response.text)
except KeyError:
print("Unable to get hpsID")
try:
powerplantId = response.json()[0]["powerPlant"]["id"]
# Get the powerplant id
print("PP Ids: ", powerplantId)
except KeyError:
print("Unable to get powerplantId")
# Assertion:
assert response.status_code == 200 # Validation of status code
def test_bid_generate_for_powerplant():
# Act:
response = post_requests(token, '/mfrr- eam/api/mfrr/eam/bids/generate',
setpayload_bid_generate(hpsId))
# Assertion:
assert response.status_code == 200 # Validation of status code
def test_bids():
# Act:
response = post_requests(token, '/mfrr-eam/api/mfrr/eam/Bids', setpayload_bids(hpsId,
powerplantId))
# Assertion:
assert response.status_code == 200 # Validation of status code
print("Responsen fra Bids: ", response.text)
def test_bids_generate_all():
# Act:
response = post_requests(token, '/mfrr-
eam/api/mfrr/eam/bids/generate',
setpayload_bid_generate(all_pp_ids))
# Assertion:
assert response.status_code == 200 # Validation of status code
Shoudl every pytest-call be in a separate task? Or could it be all the test can be ran consecutively within the same task?