Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tfs 无法按照MTM中列出的正确顺序获得测试结果_Tfs_Tfs Sdk_Mtm - Fatal编程技术网

Tfs 无法按照MTM中列出的正确顺序获得测试结果

Tfs 无法按照MTM中列出的正确顺序获得测试结果,tfs,tfs-sdk,mtm,Tfs,Tfs Sdk,Mtm,我正在尝试创建一个报告,其中包含在测试用例中执行的每个步骤的结果,并且我能够检索测试步骤、预期结果、步骤结果、错误消息和附件 测试步骤和预期结果按MTM上所示的正确顺序列出,但步骤结果和错误消息似乎被重新安排用于我检索的所有测试用例。这是我的密码,请协助 foreach (ITestSuiteEntry testcase in ts.TestCases) { var testResults = testProject.TestResults.ByTestId(testcase.TestC

我正在尝试创建一个报告,其中包含在测试用例中执行的每个步骤的结果,并且我能够检索测试步骤、预期结果、步骤结果、错误消息和附件

测试步骤和预期结果按MTM上所示的正确顺序列出,但步骤结果和错误消息似乎被重新安排用于我检索的所有测试用例。这是我的密码,请协助

foreach (ITestSuiteEntry testcase in ts.TestCases)
{
    var testResults = testProject.TestResults.ByTestId(testcase.TestCase.Id);
    foreach (ITestCaseResult result in testResults)
    {
        for (int actionIndex = 0; actionIndex < testcase.TestCase.Actions.Count; actionIndex++)
        {
            resultData = new TestResultData();
            var actionStep = testcase.TestCase.Actions[actionIndex] as ITestStep;
            if (actionStep != null)
            {
                resultData.TestCaseName = result.TestCaseTitle;
                resultData.Step = Regex.Replace(actionStep.Title, @"<[^>]+>|&nbsp;", "").Trim();
                resultData.ExpectedResult = Regex.Replace(actionStep.ExpectedResult, @"<[^>]+>|&nbsp;", "").Trim();
            }
            var topIteration = result.Iterations.FirstOrDefault();
            if (topIteration != null && actionIndex < topIteration.Actions.Count)
            {
                var actionResult = topIteration.Actions[actionIndex];
                resultData.StepOutcome = actionResult.Outcome.ToString();
                resultData.Comment = actionResult.ErrorMessage;
                foreach (var attachment in actionResult.Attachments)
                {
                    resultData.AttachmentName = attachment.Name;
                    resultData.AttachmentUri = attachment.Uri.ToString();
                }
            }
            resultDataList.Add(resultData);
        }
    }
}
foreach(ts.TestCases中的itestsuitentry测试用例)
{
var testResults=testProject.testResults.ByTestId(testcase.testcase.Id);
foreach(测试结果中的ITestCaseResult)
{
for(int actionIndex=0;actionIndex|“,”).Trim();
resultData.ExpectedResult=Regex.Replace(actionStep.ExpectedResult,@“]+>|“,”).Trim();
}
var topIteration=result.Iterations.FirstOrDefault();
if(topIteration!=null&&actionIndex
结果由ActivityId存储,因此获取每个操作的匹配结果的最简单方法是使用:

topIteration.Actions.FirstOrDefault(result => result.ActionId == actionstep.Id)
要从测试用例下载附件,您需要使用WorkItemStore类下载工作项,然后使用WebClient下载各个文件:

var workItemStore = teamProjectCollection.GetService<WorkitemStore>();
var workItem = workItemStore.GetWorkItem(testcaseId)

foreach (Attachment attachment in workItem.Attachments)
{
    var client = new WebClient();
    client.DownloadFile(attachment.Uri, attachment.Name);
}
var workItemStore=teamProjectCollection.GetService();
var workItem=workItemStore.GetWorkItem(testcaseId)
foreach(工作项附件中的附件)
{
var client=new WebClient();
client.DownloadFile(attachment.Uri,attachment.Name);
}

我怀疑您需要使用
topIteration.Actions.FirstOrDefault(result=>result.ActionId==actionstep.Id)
并不是每个步骤都有一个与之关联的结果。非常感谢!这很有魅力。我还有一个问题:我知道附件可以链接到结果测试步骤,也可以链接到测试用例。我能够检索链接到测试结果的附件。您能告诉我如何检索链接到测试用例的附件吗。非常感谢您抽出时间。