feat: 新增CommandRunningTime步骤耗时统计命令(序号区间RunTime求和,依赖倒置+AsyncLocal作用域隔离)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
using Common.Attributes;
|
||||
using Common.Tools;
|
||||
using System;
|
||||
|
||||
namespace Command
|
||||
{
|
||||
/// <summary>
|
||||
/// 步骤运行耗时统计命令。
|
||||
/// <para>
|
||||
/// 命令库为纯 .NET 类库,不直接引用宿主的步骤管理器类型;
|
||||
/// 实际的步骤数据查询能力由宿主(StepRunning)在执行测试步骤前通过
|
||||
/// <see cref="Common.Tools.StepRuntimeContext.StepTimeQuery"/> 注入(依赖倒置),
|
||||
/// 多台架并发运行时各作用域的查询器随异步流隔离,互不串扰。
|
||||
/// </para>
|
||||
/// </summary>
|
||||
[ADPCommand]
|
||||
public static class CommandRunningTime
|
||||
{
|
||||
/// <summary>
|
||||
/// 计算测试步骤运行时间之和:统计步骤管理器主程序中,
|
||||
/// 序号从起始序号到结束序号(含两端)范围内所有步骤的运行耗时总和。
|
||||
/// </summary>
|
||||
/// <param name="起始序号">起始步骤序号(从 1 开始)</param>
|
||||
/// <param name="结束序号">结束步骤序号(含本身)</param>
|
||||
/// <returns>范围内步骤运行时间之和(毫秒);序号超界、范围内无步骤或查询异常时输出 0</returns>
|
||||
public static double 获取步骤运行时间之和(int 起始序号, int 结束序号)
|
||||
{
|
||||
// 读取当前异步执行流注入的步骤耗时查询器(由 StepRunning 设置)
|
||||
var query = StepRuntimeContext.StepTimeQuery.Value;
|
||||
if (query == null)
|
||||
{
|
||||
Console.WriteLine($"[步骤耗时] 宿主未注入步骤耗时查询器,无法计算序号 {起始序号}~{结束序号} 的运行时间之和");
|
||||
return 0;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return query(起始序号, 结束序号);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[步骤耗时] 计算序号 {起始序号}~{结束序号} 的运行时间之和失败: {ex.Message}");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user