我正在使用c#来编写自动化结果。我有要求在运行自动化端到端流程时我必须在不同的相同Excel表中写入结果。 当我的testmethod给出结果为pass时,我必须以下面的格式在sheet1中写出该testmethods的结果
Testclassname | testmethodname | pass(yes/No) | time
当testmethod失败时,请写上
Testclassname | testmethodname | Fail(yes/No) | time | exception
如何在c#??
中实现这一点答案 0 :(得分:3)
让Test方法自己写入Excel文件是个坏主意。我个人认为写excel文件没什么价值,但你可能有你的理由。
根据您运行测试的方式,可能有更好的方法来实现您的目标:
使用命令行vstest.console.exe
运行测试时,可以指定Logger。 /Logger:trx
将创建包含所有测试结果的XML文件。 XML文件很容易解析。 XSLT到HTML表格或使用Excel Package Plus或the OleDB driver for ADO.NET等包。
您可以将测试结果链接到Build(通过Team Build或MTM执行测试时以及使用/Logger:TfsPublisher
从命令行执行测试(请参阅:MSDN)。然后可以使用数据仓库create your excel file using the Excel Powerpivot features。
如果您需要更多详细信息,请进行实验,将您的发现作为新问题发布,并提出具体问题。
答案 1 :(得分:-1)
您可以使用TestContext检查当前的测试方法名称以及测试结果:
测试结果:TestContext.CurrentTestOutcome == UnitTestOutcome.Failed
现在您应该能够在TestCleanup中创建if-else来检查测试是否失败,获取测试方法名称。根据测试结果,将其写入一个或另一个Excel文件。
要在C#中写入Excel文件,我会谷歌并尝试一些例子:https://www.google.com/#q=writing+to+an+excel+file+in+c%23
<强>更新强>
请记住,将来当您的测试套件变大时,您可能希望并行运行测试。所以TestCleanup中的任何东西都必须是并行证明。写入相同的Excel文件将导致问题。如杰西建议的那样,在运行后处理测试结果会更好。