使用tfs api在tfs中传递测试用例

时间:2016-07-29 11:55:02

标签: c# tfs

我有以下代码在TFS / MTM中传递测试用例。我已经实现从外部传递测试用例但是当我检查测试用例的内部步骤时,它们没有通过。我希望通过通过测试用例的每个动作的测试用例。 任何帮助表示感谢。

ITestPlan tp = testinsuitesd.Plan;
// foreach (ITestCase testcase in allTestCases)
//{

ITestRun testRun = testinsuitesd.Plan.CreateTestRun(false);
ITestPointCollection testPoints = tp.QueryTestPoints("select * from TestPoint where suiteId= "+ testinsuitesd.Id);
    foreach(ITestPoint testRuns in testPoints)
    {
        testRun.AddTestPoint(testRuns, null);
    }
    testRun.Save();

    ITestCaseResultCollection testCaseResult = testRun.QueryResults();     //code to Pass the test Case
    foreach (ITestCaseResult testResult in testCaseResult)
        {
    ITestIterationResult iterationResult;
   ITestActionResult actionResults;                                   
      iterationResult = testResult.CreateIteration(1);
    //actionResults = testResult.CreateIteration(1);
            foreach (ITestAction testStep in testResult.GetTestCase().Actions)
            {

                ITestActionResult stepResult = iterationResult.CreateStepResult(testStep.Id);                                                    
                //stepResult.ErrorMessage = String.Empty;                                            
                stepResult.Outcome = TestOutcome.Passed; //you can assign different states here

                iterationResult.Actions.Add(stepResult);
        //actionResults.Add(stepResult);
             //   iterationResult.Actions.Add(stepResult);
       // actionResults.   Add(stepResult);
            }

            iterationResult.Outcome = TestOutcome.Passed;                                        
            testResult.Iterations.Add(iterationResult);
    testResult.Outcome = TestOutcome.Passed;
    testResult.State = TestResultState.Completed;
    testResult.Save();
        }
    testCaseResult.Save(false);
//  testCaseResult.
    testRun.Save();
    testRun.Refresh();

tp.Save();

1 个答案:

答案 0 :(得分:-1)

尝试使用以下代码:

var tfsRun = _testPoint.Plan.CreateTestRun(false);

tfsRun.DateStarted = DateTime.Now;
tfsRun.AddTestPoint(_testPoint, _currentIdentity);
tfsRun.DateCompleted = DateTime.Now;
tfsRun.Save(); // so results object is created

var result = tfsRun.QueryResults()[0];
result.Owner = _currentIdentity;
result.RunBy = _currentIdentity;
result.State = TestResultState.Completed;
result.DateStarted = DateTime.Now;
result.Duration = new TimeSpan(0L);
result.DateCompleted = DateTime.Now.AddMinutes(0.0);

var iteration = result.CreateIteration(1);
iteration.DateStarted = DateTime.Now;
iteration.DateCompleted = DateTime.Now;
iteration.Duration = new TimeSpan(0L);
iteration.Comment = "Run from TFS Test Steps Editor by " + _currentIdentity.DisplayName;

for (int actionIndex = 0; actionIndex < _testEditInfo.TestCase.Actions.Count; actionIndex++)
{
    var testAction = _testEditInfo.TestCase.Actions[actionIndex];
    if (testAction is ISharedStepReference)
        continue;

    var userStep = _testEditInfo.SimpleSteps[actionIndex];

    var stepResult = iteration.CreateStepResult(testAction.Id);
    stepResult.ErrorMessage = String.Empty;
    stepResult.Outcome = userStep.Outcome;

    foreach (var attachmentPath in userStep.AttachmentPaths)
    {
        var attachment = stepResult.CreateAttachment(attachmentPath);
        stepResult.Attachments.Add(attachment);
    }

    iteration.Actions.Add(stepResult);
}

var overallOutcome = _testEditInfo.SimpleSteps.Any(s => s.Outcome != TestOutcome.Passed)
    ? TestOutcome.Failed
    : TestOutcome.Passed;

iteration.Outcome = overallOutcome;

result.Iterations.Add(iteration);

result.Outcome = overallOutcome;
result.Save(false);

此外,还有一些关于TFS API的链接可以帮助您: