Microsoft Azure Developer LoadTesting Python客户端库
项目描述
Azure Load Testing Python客户端库
Azure Load Testing为用户提供Python客户端库,用户可以通过该库以本地方式与Azure Load Testing服务交互。Azure Load Testing是一个全托管负载测试服务,允许您生成高规模负载。该服务模拟应用程序的流量,无论它们托管在哪里。开发人员、测试人员和质量保证(QA)工程师可以使用它来优化应用程序的性能、可扩展性或容量。
文档
有各种文档可供您开始使用
入门
安装包
python -m pip install azure-developer-loadtesting
先决条件
- 使用此包需要Python 3.7或更高版本。
- 您需要Azure订阅才能使用此包。
- 现有的Azure Developer LoadTesting实例。
使用Azure Active Directory凭证创建
要使用 Azure Active Directory (AAD) 令牌凭证,请提供一个从 azure-identity 库获取的所需凭证类型的实例。
要使用 AAD 进行身份验证,您必须首先 pip 安装 azure-identity
设置完成后,您可以选择从 azure.identity 中使用哪种类型的 凭证。
例如,通过 Azure CLI 的 az login
命令登录,并使用 DefaultAzureCredential 作为该用户进行身份验证。
使用返回的令牌凭证进行客户端身份验证。
创建客户端
Azure 开发者负载测试 SDK 有 2 个主要客户端(LoadTestingClient
)的子客户端,用于与服务交互,分别是 'administration' 和 'test_run'。
from azure.developer.loadtesting import LoadTestAdministrationClient
# for managing authentication and authorization
# can be installed from pypi, follow: https://pypi.ac.cn/project/azure-identity/
# using DefaultAzureCredentials, read more at: https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python
from azure.identity import DefaultAzureCredential
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
<endpoint>
指的是资源的数据平面端点/URL。
关键概念
Azure Load Test Python 客户端库允许您通过使用客户端与这些组件交互。该库有两个顶级客户端,是库的主要入口点
LoadTestAdministrationClient
(azure.developer.loadtesting.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.LoadTestRunClient
)
这两个客户端也有它们异步的对应物,分别是
LoadTestAdministrationClient
(azure.developer.loadtesting.aio.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.aio.LoadTestRunClient
)
负载测试管理客户端
LoadTestAdministrationClient
用于管理和配置负载测试、应用程序组件和指标。
测试
测试指定测试脚本和运行负载测试的配置设置。您可以在 Azure 负载测试资源中创建一个或多个测试。
应用程序组件
当您为 Azure 托管的应用程序运行负载测试时,您可以监视不同 Azure 应用程序组件(服务器端指标)的资源指标。在负载测试运行期间以及测试完成后,您可以在 Azure 负载测试仪表板中监视和分析资源指标。
指标
在负载测试期间,Azure Load Testing 收集有关测试执行的指标。有两种类型的指标
-
客户端指标提供了测试引擎报告的详细信息。这些指标包括虚拟用户数量、请求响应时间、失败请求数量或每秒请求数量。
-
服务器端指标适用于 Azure 托管的应用程序,并提供有关您的 Azure 应用程序组件的信息。指标可以是数据库读取次数、HTTP 响应类型或容器资源消耗。
测试运行客户端
LoadTestRunClient
用于启动和停止与负载测试对应的测试运行。测试运行表示负载测试的一次执行。它收集与运行 Apache JMeter 脚本、负载测试 YAML 配置、要监视的应用程序组件列表和测试结果相关的日志。
数据平面端点
可以使用以下 URL 格式通过 Azure Load Testing 资源的数据平面进行寻址
00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com
第一个 GUID 00000000-0000-0000-0000-000000000000
是用于访问 Azure Load Testing 资源的唯一标识符。其后是 aaa
,这是资源的 Azure 区域。
数据平面端点是从控制平面 API 获取的。
示例: 1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com
在上面的示例中,eus
表示 Azure 区域 East US
。
示例
创建负载测试
from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
import os
TEST_ID = "some-test-id"
DISPLAY_NAME = "my-load-test"
# set SUBSCRIPTION_ID as an environment variable
SUBSCRIPTION_ID = os.environ["SUBSCRIPTION_ID"]
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
result = client.create_or_update_test(
TEST_ID,
{
"description": "",
"displayName": "My New Load Test",
"loadTestConfig": {
"engineInstances": 1,
"splitAllCSVs": False,
},
"passFailCriteria": {
"passFailMetrics": {
"condition1": {
"clientmetric": "response_time_ms",
"aggregate": "avg",
"condition": ">",
"value": 300
},
"condition2": {
"clientmetric": "error",
"aggregate": "percentage",
"condition": ">",
"value": 50
},
"condition3": {
"clientmetric": "latency",
"aggregate": "avg",
"condition": ">",
"value": 200,
"requestName": "GetCustomerDetails"
}
}
},
"secrets": {
"secret1": {
"value": "https://sdk-testing-keyvault.vault.azure.net/secrets/sdk-secret",
"type": "AKV_SECRET_URI"
}
},
"environmentVariables": {
"my-variable": "value"
}
}
)
print(result)
except HttpResponseError as e:
print('Service responded with error: {}'.format(e.response.json()))
将 .jmx 文件上传到测试
from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
TEST_ID = "some-test-id"
FILE_NAME = "some-file-name.jmx"
client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
# uploading .jmx file to a test
resultPoller = client.begin_upload_test_file(TEST_ID, FILE_NAME, open("sample.jmx", "rb"))
# getting result of LRO poller with timeout of 600 secs
validationResponse = resultPoller.result(600)
print(validationResponse)
except HttpResponseError as e:
print("Failed with error: {}".format(e.response.json()))
运行测试
from azure.developer.loadtesting import LoadTestRunClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
TEST_ID = "some-test-id"
TEST_RUN_ID = "some-testrun-id"
DISPLAY_NAME = "my-load-test-run"
client = LoadTestRunClient(endpoint='<endpoint>', credential=DefaultAzureCredential())
try:
testRunPoller = client.begin_test_run(
TEST_RUN_ID,
{
"testId": TEST_ID,
"displayName": "My New Load Test Run",
}
)
#waiting for test run status to be completed with timeout = 3600 seconds
result = testRunPoller.result(3600)
print(result)
except HttpResponseError as e:
print("Failed with error: {}".format(e.response.json()))
下一步
更多示例请见此处。
贡献
本项目欢迎贡献和建议。大多数贡献需要您同意贡献者许可协议(CLA),声明您有权利并且实际上已经授予我们使用您贡献的权利。有关详细信息,请访问https://cla.microsoft.com。
当您提交拉取请求时,CLA-bot 将自动确定您是否需要提供 CLA,并适当地装饰 PR(例如,标签,注释)。只需遵循机器人提供的说明即可。您只需在整个使用我们的 CLA 的所有仓库中这样做一次。
本项目采用了Microsoft 开源行为准则。有关更多信息,请参阅行为准则常见问题解答或通过opencode@microsoft.com联系以提出任何额外的问题或评论。
故障排除
更多信息即将推出...
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
哈希值 for azure_developer_loadtesting-1.0.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8db5cccab0f6e987108d099f9e6e3608001f9f02a9381f009599d74d91b53533 |
|
MD5 | 1284f4bf4dd2ca45fa0bc65e0fa51a2d |
|
BLAKE2b-256 | 3c119f0e1277c389b1e7b4213436762d64262912cd3989174d3f4bf0c492948b |