我看到几个测试用例出现在一个竹JUnitParser步骤中,没有为测试用例呈现测试套件名称。
ctrmrzij1#
通过模拟测试结果,我们可以看到bamboo至少有两种形式的测试套件命名检测。
最明智的解析操作发生在显式命名的测试套件下,在xml中这由testsuite标签中的name属性表示。
testsuite
name
<?xml version="1.0" encoding="UTF-8"?> <testsuites> <testsuite name="test_dummy_suite_name" tests="1" failures="0" errors="0"> <testcase name="test_dummy_case_name" status="run" duration="0.001" time="1"></testcase> </testsuite> </testsuites>
在这种情况下,bamboo正确地解析了测试套件的名称,如下所示:
当Pytest通过--junit-xml= xml_path. xml参数生成junit xml时,它有一个约定,即在保留其junit_suite_name的默认值时,用通用的pytest字符串注入测试套件名称。
junit_suite_name
pytest
<?xml version="1.0" encoding="UTF-8"?> <testsuites> <testsuite errors="0" failures="1" hostname="XXX" name="pytest" skipped="0" tests="3" time="0.038" timestamp="2022-03-03T17:51:33.038037"> <testcase classname="classnameX.classnameY" file="junit_explore/test_module.py" line="3" name="test_passing1" time="0.001"></testcase> <testcase classname="junit_explore.test_module" file="junit_explore/test_module.py" line="6" name="test_passing2" time="0.000"></testcase> <testcase classname="" file="junit_explore/test_module.py" line="6" name="test_passing_empty_classname" time="0.000"></testcase> </testsuite> </testsuites>
Bamboo看起来很熟悉这个约定,实际上它会退而求其次,解析测试用例的classname属性,对.字符进行标记化,以提取后面的子字符串。
.
我们可以看到,对于classname属性为空的测试用例,Bamboo可以稳健地处理这种情况,但最终无法确定测试套件名称,并福尔斯到unnamed test suite表示,因为这是它为此类测试用例所拥有的所有上下文。
unnamed test suite
背景故事更新3/21/2022我深入研究了bazel行为并编写了一个nodes.py的工具化构建版本,发现会话根目录无法通过他们的相对路径逻辑session.config.rootdir实现来建立。
nodes.py
session.config.rootdir
1条答案
按热度按时间ctrmrzij1#
通过模拟测试结果,我们可以看到bamboo至少有两种形式的测试套件命名检测。
显式命名的测试套件
最明智的解析操作发生在显式命名的测试套件下,在xml中这由
testsuite
标签中的name
属性表示。在这种情况下,bamboo正确地解析了测试套件的名称,如下所示:
Pytest生成的xml
当Pytest通过--junit-xml= xml_path. xml参数生成junit xml时,它有一个约定,即在保留其
junit_suite_name
的默认值时,用通用的pytest
字符串注入测试套件名称。Bamboo看起来很熟悉这个约定,实际上它会退而求其次,解析测试用例的classname属性,对
.
字符进行标记化,以提取后面的子字符串。我们可以看到,对于classname属性为空的测试用例,Bamboo可以稳健地处理这种情况,但最终无法确定测试套件名称,并福尔斯到
unnamed test suite
表示,因为这是它为此类测试用例所拥有的所有上下文。背景故事更新3/21/2022我深入研究了bazel行为并编写了一个
nodes.py
的工具化构建版本,发现会话根目录无法通过他们的相对路径逻辑session.config.rootdir
实现来建立。