xml - VSTS 测试、JUnit 和 VSTS Rest API
问题描述
注意:请记住,我从未使用过 VSTS Test,所以我的一些评论可能是我的错误。我与 VSTS 的其余部分进行了广泛的合作。
我的任务是将一些 JUnit 测试结果 XML 发布到 VSTS 在线测试中:
我的测试在 Ubuntu Docker 容器中运行,所以我想使用 VSTS REST API 来发布它们。这是其余的 API 文档:
https://docs.microsoft.com/en-us/rest/api/vsts/test/?view=vsts-rest-5.0
POST https://{accountName}.visualstudio.com/{project}/_apis/test/Runs/{runId}/results?api-version=5.0-preview.5
效果很好,但 POST 正文示例是 json:
[
{
"testCaseTitle": "VerifyWebsiteTheme",
"automatedTestName":
"FabrikamFiber.WebSite.TestClass.VerifyWebsiteTheme",
"priority": 1,
"outcome": "Passed"
},
{
"testCaseTitle": "VerifyWebsiteLinks",
"automatedTestName":
"FabrikamFiber.WebSite.TestClass.VerifyWebsiteLinks",
"priority": 2,
"outcome": "Failed",
"associatedBugs": [
{
"id": 30
}
]
}]
然而,我的测试人员和他的测试输出给了我 XML:
<?xml version="1.0" encoding="utf-8"?>
<testsuite errors="10" failures="0" name="pytest" skips="12" tests="53" time="16.073">
<testcase classname="tests.test_api" file="tests/test_api.py" line="5" name="test_GETNotFound" time="0.4054398536682129"></testcase>
<testcase classname="tests.test_api" file="tests/test_api.py" line="10" name="test_POSTBadRequest[]" time="0.41185760498046875"></testcase>
<testcase classname="tests.test_api" file="tests/test_api.py" line="10" name="test_POSTBadRequest[req1]" time="0.48476719856262207"></testcase>
<testcase classname="tests.test_api" file="tests/test_api.py" line="10" name="test_POSTBadRequest[{}]" time="0.44095635414123535"></testcase>
<testcase classname="tests.test_api" file="tests/test_api.py" line="10" name="test_POSTBadRequest[TEST]" time="0.4718012809753418"></testcase>
<testcase classname="tests.test_azureFileService" file="tests/test_azureFileService.py" line="0" name="test_readFilesDirs" time="0.22459125518798828"></testcase>
</testsuite>
我不知道如何从 JUnit XML 文件中获取所需的 VSTS Rest API 方式。
希望得到一些指导。
谢谢
解决方案
选项 1:将测试结果从容器中复制出来并使用Publish Test Results
可以解析 JUnit 格式的 XML 测试结果的任务。docker cp containerName:/path/to/testresults.xml ./testresults.xml
应该做的伎俩。
选项 2:编写一个简单的程序来解析测试结果并输出一个 JSON 文档,然后在您的容器中运行它。
我会说选项 1 更好,但这只是我的意见。我已经通过其他工具的测试结果做到了这一点。
推荐阅读
- javascript - 如果角色更改机器人显示昵称已更新,如何解决
- apache-kafka - 如何在 Kafka 2.5.0 中降级 log.message.format.version
- vue.js - Vue-Filepond & Nuxt-Bridge
- javascript - 如何找到字符串的相似元素
- angular - 使用单独开发时如何从Angular2中的后端获取令牌?
- python - 熊猫:当我用 .to_csv() 保存数据框时,删除列上的“,”
- java - 使用 Jmeter 检查在 s3 上上传的文件
- r - 使用 str_match 时,如何获取没有起始字符串的输出矩阵列?
- html - 搜索框边框上的占位符文本和搜索图标未直接对齐
- javascript - 通过嵌套属性获取父对象