junit 如何将Azure Pipeline测试结果链接到测试用例

ryhaxcpt  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(180)

我正在尝试将管道任务PublishTestResults中的自动测试结果链接到Azure中的测试用例。

背景

这些测试是使用pytest自动执行的,并生成一个Junit XML报告发送到Azure。如果我说错了,请纠正我,但根据我的发现,没有一个参数、选项或设置使Azure能够自动链接这些测试用例。此外,Azure期望的XML格式不包含id的属性。https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/test/publish-test-results?view=azure-devops&tabs=trx%2Cyaml
我无法通过visual studio关联这些测试,因为不支持pytest。https://learn.microsoft.com/en-us/azure/devops/test/associate-automated-test-with-test-case?view=azure-devops

问题

我开始使用Azure REST API和Azure devops python api https://github.com/microsoft/azure-devops-python-api。获取我的构建ID、与管道构建关联的测试运行ID、来自ID的测试运行、测试用例ID和测试点ID。执行GET测试结果返回测试结果,并将重点放在响应的特定对象上。

"testCase": {
    "name": "test title"
},

但是,当我执行PATCH Test Result以更新测试结果时

"testCase": {
    "id": "5688",
    "name": "test title"
},
"testPoint": {
    "id": "296"
},

它不更新,保持不变。我可以确认我能够更新其他字段,并且我也看到lastUpdatedDate更新。参考此调用。https://learn.microsoft.com/en-us/rest/api/azure/devops/test/results/update?view=azure-devops-rest-6.0
我尝试手动运行测试,并且能够添加具有测试用例ID的测试结果。但是,之后我无法编辑测试用例ID。我尝试将具有测试用例ID的测试结果添加到自动测试运行中,但没有成功
有人知道我做错了什么吗?或者有什么更好的方法来将测试结果链接到Azure中的测试用例吗?

zbsbpyhn

zbsbpyhn1#

我在Visual Studio开发人员社区论坛上发帖。
我们几乎必须通过“Update Work Item”路径。为了将自动化测试结果与测试用例链接起来,我向测试结果添加了一个关系链接:

[
    {
        "op": "add",
        "path": "/relations/-",
        "value": {
            "rel": "ArtifactLink",
            "url": "vstfs:///TestManagement/TcmResult/1234.100000",
            "attributes": {
                "name": "Test Result"
            }
        }
    }
]

这将从测试用例中添加一个链接,将您指向一个无效的URL,因此它只会将您置于Build Summary页面。

https://dev.azure.com/{organization}/{project}/_build?buildId=1122&view=ms.vss-test-web.build-test-results-tab&runId=1234&resultId=100000&paneView=debug

但除此之外,这个很管用。

lfapxunr

lfapxunr2#

对于发现此问题的任何人:
Add Test Results with references to Test Plan, Test Suite, Test Case not working "ShallowReference" using azure rest api
您将需要使用Test - Runs - Create API,它允许您为一个给定的测试计划开始一个新的测试运行。使用这个post操作,您需要引用所讨论的测试计划和测试点。测试点是从测试计划/测试套件的Angular 表示测试用例的方式。因此,把测试点看作是被引用的测试用例,在那里你得到了一个新的测试计划上的“本地”id--你需要处理它。
现在你有了一个测试运行,它的状态是“In Progress”--它包含了一个应该测试的测试点的列表。这使你能够通过Test - Results - List API获取你应该用给定的状态更新的测试点的列表。结果将产生一个json数组,你可以遍历它并分配测试的状态。
棘手的部分是,现在你需要通过Test - Results - Update API对测试运行进行更新/修补,确保你不要进行发布操作,因为它会使新条目和更新完成单个测试用例。
最后,您需要通过Test - Runs - Update API完成测试运行,以使测试运行离开“In Progress”状态。

相关问题