This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AUTS_OLD/UTS_Core/UTSModule/Test/TestResult.vb

220 lines
7.0 KiB
VB.net
Raw Normal View History

2024-03-11 16:32:52 +08:00
Imports System.Text
Imports UTS_Core.UTSModule.DbTableModel.Customer
Imports UTS_Core.UTSModule.Station
Namespace UTSModule.Test
Public Class TestResult
''' <summary>
''' 测试结果枚举集合
''' </summary>
Enum TestResultEnum
Fail
Pass
End Enum
Sub New()
UserID = -1
ServiceID = -1
ProductionLineID = -1
OrderID = -1
AppName = String.Empty
TestPlan = String.Empty
_dutSn = String.Empty
TestResult = TestResultEnum.Fail
ErrCode = String.Empty
FailSteps = New List(Of RowNode)()
CustomRecord = New Dictionary(Of String, String)()
End Sub
''' <summary>
''' 当前用户索引,登陆后填充
''' </summary>
''' <returns></returns>
Public Property UserID As Integer
''' <summary>
''' 当前服务索引,登陆后获取
''' </summary>
''' <returns></returns>
Public Property ServiceID As Integer
''' <summary>
''' 所属产线索引,用户选择后获取
''' </summary>
''' <returns></returns>
Public Property ProductionLineID As Integer
''' <summary>
''' 所属订单索引,用户提供条码,系统自动填充
''' </summary>
''' <returns></returns>
Public Property OrderID() As Integer
''' <summary>
''' 测试程序的名称,登陆后填充
''' </summary>
''' <returns></returns>
Public Property AppName As String
''' <summary>
''' 测试流程名,切换项目流程站后获取
''' </summary>
''' <returns></returns>
Public Property TestPlan As String
Private _dutSn As String
''' <summary>
''' 测试产品的索引序号,测试时获取,(使用大写,8字符
''' </summary>
''' <returns></returns>
Public Property DUT_SN As String
Get
Return _dutSn
End Get
Set(value As String)
_dutSn = value.ToUpper
End Set
End Property
''' <summary>
''' 测试开始日期与时间,测试时获取
''' </summary>
''' <returns></returns>
Public Property StartTime As DateTime
''' <summary>
''' 测试耗时,测试时获取
''' </summary>
''' <returns></returns>
Public Property UsedTime As TimeSpan
''' <summary>
''' 测试结果,测试时获取
''' </summary>
''' <returns></returns>
Public Property TestResult As TestResultEnum
''' <summary>
''' 错误代码,测试时获取
''' </summary>
''' <returns></returns>
Public Property ErrCode As String
''' <summary>
''' 失败步骤集合,测试时获取
''' </summary>
''' <returns></returns>
Public Property FailSteps As List(Of RowNode)
''' <summary>
''' 自定义记录数据,测试时获取
''' </summary>
''' <returns></returns>
Public Property CustomRecord() As Dictionary(Of String, String)
''' <summary>
''' 切换测试站后,初始话测试结果信息
''' </summary>
Public Sub InitTestResult(user As Integer)
UserID = user
TestResult = TestResultEnum.Fail
FailSteps = New List(Of RowNode)()
CustomRecord = New Dictionary(Of String, String)()
End Sub
''' <summary>
''' 开启新一轮测试时,重置测试结果信息
''' </summary>
Public Sub ResetTestResult()
ErrCode = String.Empty
_dutSn = String.Empty
TestResult = TestResultEnum.Fail
StartTime = Now
UsedTime = New TimeSpan()
OrderID = -1
FailSteps.Clear()
CustomRecord.Clear()
End Sub
''' <summary>
''' 添加自定义需要记录的测试信息
''' </summary>
''' <param name="name">记录列名</param>
''' <param name="value">记录值</param>
Public Function AddCustomRecord(name As String, value As String) As Boolean
If String.Compare(name, $"{TestLogTable.ColNames.DUT_SN}") = 0 Then
_dutSn = value
Else
If CustomRecord.ContainsKey(name) Then
CustomRecord(name) = value '已有字段则覆盖原值
Else
CustomRecord.Add(name, value)
End If
End If
Return True
End Function
''' <summary>
''' 将当前测试信息转换为字符键值对
''' </summary>
''' <returns></returns>
Public Function ToStringDictionary() As Dictionary(Of String, String)
Dim dic As New Dictionary(Of String, String) From {
{$"{TestLogTable.ColNames.UserID}", UserID.ToString()},
{$"{TestLogTable.ColNames.ServiceID}", ServiceID.ToString()},
{$"{TestLogTable.ColNames.DUT_SN}", _dutSn},
{$"{TestLogTable.ColNames.AppName}", AppName},
{$"{TestLogTable.ColNames.TestPlan}", TestPlan},
{$"{TestLogTable.ColNames.StartTime}", StartTime.ToString("yyyy-MM-dd HH:mm:ss")},
{$"{TestLogTable.ColNames.UsedTime}", UsedTime.TotalSeconds.ToString("F2")},
{$"{TestLogTable.ColNames.TestResult}", IIf(TestResult = TestResultEnum.Fail, 0, 1).ToString()},
{$"{TestLogTable.ColNames.ErrCode}", ErrCode},
{$"{TestLogTable.ColNames.ProductionLineID}", ProductionLineID.ToString()},
{$"{TestLogTable.ColNames.OrderID}", OrderID.ToString()}
}
'填充失败步骤信息(此处需要一个信息定位失败步骤)
Dim steps As New StringBuilder
Dim msg As New StringBuilder
For Each node As RowNode In FailSteps
If steps.Length > 0 Then
steps.Append(","c)
msg.Append(","c)
End If
steps.Append(node.RowListIndex)
msg.Append(node.Description)
msg.Append($" {node.TestReturn.RecordValue} ({node.TestReturn.LowerLimit},{node.TestReturn.UpperLimit})")
Next
dic.Add($"{TestLogTable.ColNames.FailSteps}", steps.ToString())
dic.Add($"{TestLogTable.ColNames.FailMsg}", msg.ToString())
'填充自定义记录数据字段信息
For Each keyValue As KeyValuePair(Of String, String) In CustomRecord
If dic.ContainsKey(keyValue.Key) Then
dic(keyValue.Key) = keyValue.Value
Else
dic.Add(keyValue.Key, keyValue.Value)
End If
Next
Return dic
End Function
End Class
End Namespace