TestObject[…]
给出一个表示 TestCreate 结果的对象.
TestObject
TestObject[…]
给出一个表示 TestCreate 结果的对象.
更多信息
- TestObject 通常作为 TestCreate 的结果获得.
- TestObject[…]["prop"] 返回给定 TestObject 的 "prop" 值.
- TestObject[…][{"prop1","prop2",…}] 返回对应于多个属性的值的关联.
- TestObject[…]["Properties"] 返回所有可用属性的列表.
- TestObject 的可能属性包括:
-
"AbsoluteTime" 测试创建的绝对时间,以 UTC 时区表示 "AbsoluteTimeUsed" 已经过去的实时绝对秒数 "ActualMessages" 运算输入时生成的消息 "ActualOutput" 运算输入时生成的输出 "CPUTimeUsed" 用于运算输入的 CPU 时间 "Created" 创建时间的 DateObject,时区为 $TimeZone "ExpectedMessages" 传递给测试的消息 "ExpectedOutput" 运算后的预期输出 "Input" 原始测试输入 "MemoryConstraint" 原始 MemoryConstraint 值 "MemoryUsed" 用于存储所有数据的字节数 "Outcome" 运行 TestCreate 的结果 "SameTest" 原始 SameTest 函数 "TestFileName" 当前执行的测试文件的绝对文件名 "TestID" 测试的唯一标识符 "TestKey" 对每次测试都唯一的自动密钥 "TimeConstraint" 原始 TimeConstraint 值 "TestCreate" 原始 TestCreate 表达式 "VerificationTest" 原始 VerificationTest 表达式 - "Outcome" 属性可能的值包括:
-
"Success" 测试成功通过 "MessageFailure" 测试失败,在运算过程中发出一条消息 "Failure" 测试没有成功通过 "NotEvaluated" 测试未被计算 - "FailureType" 属性可能的值包括:
-
"SameTestFailure" 实际输出与预期输出不相符 "SameMessagesFailure" 发出了没有预料到的消息 "SameTestUnevaluated" SameTest 函数没有返回 True 或 False "TimeConstraintFailure" 超出了 TimeConstraint 选项的设置 "MemoryConstraintFailure" 超出了 MemoryConstraint 选项的设置 "TimeConstraintInvalid" TimeConstraint 选项无效 "MemoryConstraintInvalid" 超出了 MemoryConstraint 选项的设置 "EvaluationAbortedFailure" Abort 终止了计算 "UncaughtThrowFailure" Throw 终止了计算 "IntermediateTestFailure" IntermediateTest 失败 "IntermediateTestMessagesFailure" IntermediateTest 发出了没有预料到的消息
范例
打开所有单元 关闭所有单元基本范例 (2)
运行 TestCreate 以得到 TestObject:
test = TestCreate[1 + 1, 2]使用 TestEvaluate 运行测试:
TestEvaluate[test]test = TestCreate[Integrate[E^-x^2, {x, 0, ∞}], (Sqrt[π]/2)]test["Input"]提取原始输入并使用 ReleaseHold 再次运行测试:
ReleaseHold @ test["Input"]范围 (1)
test = TestEvaluate @ TestCreate[1 + 1, 2];test["Properties"]test[{"Input", "ExpectedOutput", "Created"}]提取所有属性并在 Dataset 中显示结果:
Dataset[test[All]]应用 (1)
test = TestEvaluate @ TestCreate[
1 + 4, 2,
SameTest -> Greater,
TestID -> "FiveIsMoreThanTwo"
]使用 "TestCreate" 属性来重新创建原始测试表达式:
original = test["TestCreate"]使用 ReleaseHold 再次创建一个新的测试:
ReleaseHold[original]属性和关系 (34)
属性 (34)
"AbsoluteTime" (1)
test = TestCreate[2 + 2, 4];用 "AbsoluteTime" 提取测试创建的 UTC 时间:
test["AbsoluteTime"]用 FromAbsoluteTime 对 DateObject 中的值进行转换:
Block[{$TimeZone = "UTC"}, FromAbsoluteTime[test["AbsoluteTime"]]]用 "Created" 属性获取你所在时区的 DateObject:
test["Created"]"AbsoluteTimeUsed" (1)
test = TestEvaluate[TestCreate[Pause[0.5]]];用 "AbsoluteTimeUsed" 提取实际已经过去的绝对秒数:
test["AbsoluteTimeUsed"]如果 TestObject 从未被运行过,则返回 Missing:
TestCreate[2 + 2, 4]["AbsoluteTimeUsed"]"ActualMessages" (1)
test = TestEvaluate[
TestCreate[
StringJoin[2],
Unevaluated[StringJoin[2]]
]
];用 "ActualMessages" 提取测运行估期间发出的所有消息:
test["ActualMessages"]表达式被封装在 HoldForm 中:
test["ActualMessages"]//InputForm如果 TestObject 从未被运行过,则返回 Missing:
TestCreate[2 + 2, 4]["ActualMessages"]"ActualOutput" (1)
test = TestEvaluate[TestCreate[2 + 2, 4]];test["ActualOutput"]表达式被封装在 HoldForm 中:
test["ActualOutput"]//InputForm如果 TestObject 从未被运行过,则返回 Missing:
TestCreate[2 + 2, 4]["ActualOutput"]"CPUTimeUsed" (1)
test = TestEvaluate[TestCreate[Pause[0.5]]];用 "CPUTimeUsed" 提取计算输入花费的 CPU 时间:
test["CPUTimeUsed"]如果 TestObject 从未被运行过,则返回 Missing:
TestCreate[2 + 2, 4]["CPUTimeUsed"]"Created" (1)
test = TestCreate[2 + 2, 4];用 "Created" 提取以 DateObject 给出的创建日期:
test["Created"]"ExpectedMessages" (1)
test = TestCreate[
StringJoin[2],
Unevaluated[StringJoin[2]],
StringJoin::string
];用 "ExpectedMessages" 提取输入运行期间应发出的所有消息:
test["ExpectedMessages"]表达式被封装在 HoldForm 中:
test["ExpectedMessages"]//InputForm"ExpectedOutput" (1)
test = TestCreate[2 + 2, 4];test["ExpectedOutput"]表达式被封装在 HoldForm 中:
test["ExpectedOutput"]//InputForm"FailureType" (11)
test = TestEvaluate[TestCreate[1, 2]]test["FailureType"]创建一个测试,其中,SameTest 函数没有返回 True 或 False:
test = TestEvaluate[TestCreate[a, b, SameTest -> Equal]]test["FailureType"]创建一个测试,其中,TimeConstraint 的值将被超出:
test = TestEvaluate[TestCreate[Pause[1], Null, TimeConstraint -> 0.2]]失败类型为 "TimeConstrainedFailure":
test["FailureType"]创建一个测试,其中,TimeConstraint 值无效:
test = TestEvaluate[TestCreate[Pause[1], Null, TimeConstraint -> someValue]]失败类型为 "TimeConstrainedInvalid":
test["FailureType"]创建一个测试,其中,MemoryConstraint 的值将被超出:
test = TestEvaluate[TestCreate[ConstantArray[1, {2000}], Null, MemoryConstraint -> 100]]失败类型为 "MemoryConstrainedFailure":
test["FailureType"]创建一个测试,其中,MemoryConstraint 值无效:
test = TestEvaluate[TestCreate[ConstantArray[1, {2000}], Null, MemoryConstraint -> someValue]]失败类型为 "MemoryConstrainedInvalid":
test["FailureType"]创建一个测试,其中发生 Abort[]:
test = TestEvaluate[TestCreate[Abort[]]]test["FailureType"]创建一个测试,其中发生 Throw[]:
test = TestEvaluate[TestCreate[Throw[42]]]test["FailureType"]创建一个测试,其中 IntermediateTest 失败:
test = TestEvaluate[TestCreate[IntermediateTest[1, 2]]]失败类型为 "IntermediateTestFailure":
test["FailureType"]创建一个测试,其中 IntermediateTest 失败,并发出一条没有预料到的消息:
test = TestEvaluate[
TestCreate[
IntermediateTest[
StringJoin[1, 2],
Unevaluated[StringJoin[1, 2]]
]
]
]失败类型为 "IntermediateTestMessagesFailure":
test["FailureType"]测试成功时,返回的失败类型的值为 None:
test = TestEvaluate[TestCreate[2 + 2, 4]]test["FailureType"]"Input" (1)
test = TestCreate[2 + 2, 4];test["Input"]表达式被封装在 HoldForm 中:
test["Input"]//InputForm"MemoryConstraint" (1)
创建一个使用 MemoryConstraint 选项的测试:
test = TestCreate[2 + 2, 4, MemoryConstraint -> 10];用 "MemoryConstraint" 提取选项原来的值:
test["MemoryConstraint"]"MemoryUsed" (1)
"MetaInformation" (1)
"Outcome" (1)
test = TestEvaluate[TestCreate[2 + 2, 4]];test["Outcome"]如果 "ActualOutput" 与 "ExpectedOutput" 不相符,测试会给出 "Failure" 结果:
TestEvaluate[TestCreate[2 + 2, 5]]如果测试运行成功,但是没有发出指定的 "ExpectedMessages" 列表,测试会给出 "MessagesFailure" 结果:
TestEvaluate[TestCreate[StringJoin[2 + 2], Unevaluated[StringJoin[4]]]]如果 SameTest 函数没有返回 True,则检验将会失败:
TestEvaluate[TestCreate[a, b, SameTest -> Equal]]"SameTest" (1)
"TestFileName" (1)
report = TestReport[FileNameJoin[{"ExampleData", "ExampleTestFile.nb"}]];提取第一个 TestObject:
test = First[report["Results"]]test["TestFileName"]"TestID" (4)
test = TestCreate[2 + 2, 4, TestID -> "MyTestMultiplication"];test["TestID"]TestID 可用是任意表达式:
Table[
VerificationTest[n + 2 > 0, True, TestID -> {"NumericTest", n}],
{n, 3}
]TestCreate[2 + 2, 4]["TestID"]如果 TestCreate 的输入发生改变,TestID 也会改变:
TestCreate[2 + 2, 5]["TestID"]用 CreateUUID 每次创建随机标识符:
TestCreate[2 + 2, 5, TestID :> CreateUUID[]]["TestID"]"TestKey" (1)
"TimeConstraint" (1)
"TestCreate" (1)
test = TestCreate[2 + 2, 4];用 "TestCreate" 根据测试对象创建一个 TestCreate 表达式:
test["TestCreate"]表达式被封装在 HoldForm 中:
test["TestCreate"]//InputForm"VerificationTest" (1)
test = TestCreate[2 + 2, 4];用 "VerificationTest" 根据对象创建一个 VerificationTest 表达式:
test["VerificationTest"]表达式被封装在 HoldForm 中:
test["VerificationTest"]//InputForm技术笔记
相关指南
-
▪
- 系统测试和验证
文本
Wolfram Research (2023),TestObject,Wolfram 语言函数,https://reference.wolfram.com/language/ref/TestObject.html.
CMS
Wolfram 语言. 2023. "TestObject." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/TestObject.html.
APA
Wolfram 语言. (2023). TestObject. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/TestObject.html 年
BibTeX
@misc{reference.wolfram_2026_testobject, author="Wolfram Research", title="{TestObject}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/TestObject.html}", note=[Accessed: 07-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_testobject, organization={Wolfram Research}, title={TestObject}, year={2023}, url={https://reference.wolfram.com/language/ref/TestObject.html}, note=[Accessed: 07-November-2026]}