Aid*_*yan 15 c# visual-studio-2010 tfs-sdk tfs2010 microsoft-test-manager
我找到了几个关于使用TFS API检索测试结果的示例,但没有关于以编程方式创建结果的文档.我的目标是创建一个轻量级的替代方法,使用Microsoft Test Manager来运行手动测试.有任何人对此有经验吗?那里有没有我遗失的例子吗?
这是我到目前为止所拥有的:
ITestCaseResult CreateNewTestCaseResult(ITestSuiteEntry testCaseEntry)
{
var run = testCaseEntry.TestSuite.Plan.CreateTestRun(false /* not automated */);
run.AddTest(testCaseEntry.TestCase.Id, suiteEntry.TestSuite.DefaultConfigurations[0].Id, suiteEntry.TestSuite.Plan.Owner);
run.Save(); // so that results object is created
return run.QueryResults()[0];
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是启动新运行的正确方法,我不确定如何记录测试的每个操作的结果.
Aid*_*yan 14
2012年8月15日更新:
下面的示例现已集成到我的开源TFS测试步骤编辑器工具中.在最新版本中,它获得了将测试结果发布到TFS的能力.请参阅GitHub上的源代码.
我现在有用于发布测试结果的工作代码.请注意,以下代码接受ITestPoint(这表示特定套件中的测试用例)并且具有一些内部类(未包括在内),它们仅为每个步骤提供结果和附件路径.
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);
Run Code Online (Sandbox Code Playgroud)
Mik*_*gel 11
测试操作似乎没有用于设置通过/失败或添加附件的属性.
public interface ITestAction : INotifyPropertyChanged {
int Id { get; }
ITestBase Owner { get; }
ITestActionGroup Parent { get; }
ITestAction CopyToNewOwner(ITestBase newOwner);
void MoveToNewOwner(ITestBase newOwner); }
Run Code Online (Sandbox Code Playgroud)
这是在父级(TestCase)完成的.
ITestCaseResult result = run.QueryResults()[0];
IAttachmentCollection collection = result.Attachments;
string x = result.Comment;
Run Code Online (Sandbox Code Playgroud)
以下是您正确启动新运行的方式:
namespace SampleRunCreation
{
class Program
{
static void Main(string[] args)
{
TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://pradeepn-tcm:8080/tfs/DefaultCollection"));
ITestManagementTeamProject project = tfs.GetService<ITestManagementService>().GetTeamProject("Pradeep");
// Create a test case.
ITestCase testCase = CreateTestCase(project, "My test case");
// Create test plan.
ITestPlan plan = CreateTestPlan(project, "My test plan");
// Create test configuration. You can reuse this instead of creating a new config everytime.
ITestConfiguration config = CreateTestConfiguration(project, string.Format("My test config {0}", DateTime.Now));
// Create test points.
IList<ITestPoint> testPoints = CreateTestPoints(project,
plan,
new List<ITestCase>(){testCase},
new IdAndName[] { new IdAndName(config.Id, config.Name) });
// Create test run using test points.
ITestRun run = CreateTestRun(project, plan, testPoints);
// Query results from the run.
ITestCaseResult result = run.QueryResults()[0];
// Fail the result.
result.Outcome = TestOutcome.Failed;
result.State = TestResultState.Completed;
result.Save();
Console.WriteLine("Run {0} completed", run.Id);
}
private static ITestCase CreateTestCase(ITestManagementTeamProject project,
string title)
{
// Create a test case.
ITestCase testCase = project.TestCases.Create();
testCase.Owner = null;
testCase.Title = title;
testCase.Save();
return testCase;
}
private static ITestPlan CreateTestPlan(ITestManagementTeamProject project, string title)
{
// Create a test plan.
ITestPlan testPlan = project.TestPlans.Create();
testPlan.Name = title;
testPlan.Save();
return testPlan;
}
private static ITestConfiguration CreateTestConfiguration(ITestManagementTeamProject project, string title)
{
ITestConfiguration configuration = project.TestConfigurations.Create();
configuration.Name = title;
configuration.Description = "DefaultConfig";
configuration.Values.Add(new KeyValuePair<string, string>("Browser", "IE"));
configuration.Save();
return configuration;
}
public static IList<ITestPoint> CreateTestPoints(ITestManagementTeamProject project,
ITestPlan testPlan,
IList<ITestCase> testCases,
IList<IdAndName> testConfigs)
{
// Create a static suite within the plan and add all the test cases.
IStaticTestSuite testSuite = CreateTestSuite(project);
testPlan.RootSuite.Entries.Add(testSuite);
testPlan.Save();
testSuite.Entries.AddCases(testCases);
testPlan.Save();
testSuite.SetEntryConfigurations(testSuite.Entries, testConfigs);
testPlan.Save();
ITestPointCollection tpc = testPlan.QueryTestPoints("SELECT * FROM TestPoint WHERE SuiteId = " + testSuite.Id);
return new List<ITestPoint>(tpc);
}
private static IStaticTestSuite CreateTestSuite(ITestManagementTeamProject project)
{
// Create a static test suite.
IStaticTestSuite testSuite = project.TestSuites.CreateStatic();
testSuite.Title = "Static Suite";
return testSuite;
}
private static ITestRun CreateTestRun(ITestManagementTeamProject project,
ITestPlan plan,
IList<ITestPoint> points)
{
ITestRun run = plan.CreateTestRun(false);
foreach (ITestPoint tp in points)
{
run.AddTestPoint(tp, null);
}
run.Save();
return run;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23979 次 |
| 最近记录: |