如何在VSTS生成期间以编程方式将附件添加到测试结果?

Kon*_*262 6 c# azure-devops

我正在寻找一种添加自己的附件以测试结果的方法,以便在此处构建完成后可以看到它们。

在此处输入图片说明

我想以编程方式在构建过程中以及测试失败后添加这些内容。附件将是屏幕截图。

这可能吗?

我快速浏览了一下API参考,但这似乎与将附件添加到现有测试“运行”有关,或者在构建方面是用于创建构建定义并触发它们。我可能错过了它,但是在测试任务完成期间或之后,我找不到如何从代码中添加附件的方法。

谢谢,

Cec*_*SFT 3

您可以首先测试构建的运行,然后从测试运行中检索测试结果

class Program
{
    static void Main(string[] args)
    {
        string ur = "https://xxxxxxx/";
        TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(ur));
        //Get build information
        BuildHttpClient bhc = ttpc.GetClient<BuildHttpClient>();
        string projectname = "Project";
        int buildId = x;
        Build bui = bhc.GetBuildAsync(projectname,buildId).Result;
        //Get test run for the build
        TestManagementHttpClient ithc = ttpc.GetClient<TestManagementHttpClient>();

        Console.WriteLine(bui.BuildNumber);

        QueryModel qm = new QueryModel("Select * From TestRun Where BuildNumber Contains '" + bui.BuildNumber + "'");

        List<TestRun> testruns = ithc.GetTestRunsByQueryAsync(qm,projectname).Result;
        foreach (TestRun testrun in testruns)
        {

            List<TestCaseResult> testresults = ithc.GetTestResultsAsync(projectname, testrun.Id).Result;
            foreach (TestCaseResult tcr in testresults)
                {
                    Console.WriteLine(tcr.Id);
                    Console.WriteLine(tcr.Outcome);
                }

            Console.ReadLine();
        }
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

一旦获得失败的测试结果 ID,您可以使用Rest API 将文件附加到测试结果

POST https://{instance}/DefaultCollection/{project}/_apis/test/runs/{run}/results/{result}/attachments?api-version={version}
Content-Type: application/json
{
  "stream": { string },
  "fileName": { string },
  "comment": { string },
  "attachmentType": { string }
}
Run Code Online (Sandbox Code Playgroud)