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 |