2016-07-29 74 views
1

我有以下代碼在TFS/MTM中通過測試用例我已經實現從外部傳遞測試用例但是當我檢查測試用例的內部步驟時,沒有通過。我希望通過測試用例的每個動作來通過測試用例。 任何幫助表示讚賞。在tfs中使用tfs api通過測試用例

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

嘗試用下面的代碼:

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一些鏈接,可以幫助您:

+1

嗨上面使用的對象「_testEditInfo」是類型的嗎?你可以讓我知道我的代碼有什麼問題。 –

相關問題