使用Python脚本更新TFS Web

问题描述 投票:-1回答:1

如何使用Python更新tfs网站中的特定字段?

我已连接到tfs并已收到HTML响应。

我有一个json,其中包含我想插入到tfs testCases字段中的数据。

JSON:

data = json.loads(url.read().decode()) (Json external data)

HTML:

tfsResponse = requests.get(tfsApi, auth=HttpNtlmAuth(username, password))
if tfsResponse.ok:
    print(tfsResponse)

soup = BeautifulSoup(tfsResponse.text, 'lxml')

我该怎么办?

json web tfs python-3.8
1个回答
0
投票

它不能直接使用Jenkins自动化测试结果来更新TFS测试用例。

您需要使用Rest API来处理此问题。您需要先提取测试结果,然后将其更新到TFS服务器。

[使用下面的Rest API:

PATCH https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/results?api-version=5.1

样品体

 [
      {
        "state": "Completed",
        "testPoint": {
          "id": 10
        },
        "outcome": "Passed",
        "testCase": {
          "id": 4567
        }
      }
    ]

如果您想使用代码,则供您参考的代码段应类似于Python:

try
{
     var u = new Uri("https://{My Account}.visualstudio.com");
     VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.VssBasicCredential(string.Empty, "PAT"));
     var connection = new VssConnection(u, c);
     var testClient = connection.GetClient<TestManagementHttpClient>();
     int testpointid = 1;
     string teamProject = "MyProjectName";
     RunCreateModel run = new RunCreateModel(name: "TestCase Name", plan: new Microsoft.TeamFoundation.TestManagement.WebApi.ShallowReference("TestPlan Id"), pointIds: new int[] { testpointid });
     TestRun testrun = testClient.CreateTestRunAsync(run, teamProject).Result;

     TestCaseResult caseResult = new TestCaseResult() { State = "Completed", Outcome = "passed", Id = 100000 };

     var testResults = testClient.UpdateTestResultsAsync(new TestCaseResult[] { caseResult }, teamProject, testrun.Id).Result;
     RunUpdateModel runmodel = new RunUpdateModel(state: "Completed");
     TestRun testRunResult = testClient.UpdateTestRunAsync(runmodel, teamProject, testrun.Id, runmodel).Result;

}
catch (AggregateException e)
{
     Console.WriteLine(e.InnerException.Message);
}
© www.soinside.com 2019 - 2024. All rights reserved.