【问题标题】:How can I get the name of all Test Cases in a Robotframework Test Suite如何获取 Robotframework 测试套件中所有测试用例的名称
【发布时间】:2018-09-17 21:37:45
【问题描述】:

在 Robotframework 中,我可以获得当前的测试名称或带有内置变量的当前测试套件,例如:

log to console  TestName: ${TEST NAME}
log to console  SuiteName: ${SUITE NAME}

现在,有谁知道我是否可以获取并打印当前测试套件中的所有测试用例?比如名字列表?

我找不到包含该信息的变量。

谢谢。

【问题讨论】:

  • 谢谢@Pekka,但我之前看过那个链接,但没有。找不到包含该信息的变量。

标签: python robotframework


【解决方案1】:

在每个测试用例的结尾或开头设置变量,并将它们添加到测试套件结尾的列表中

${cnt}=   Set Variable   ${0}

以下两行需要在每个测试用例中添加

Set suite variable  ${TestCase1}     ${TEST NAME}
${cnt}=   Set Variable   ${cnt+1}

这行在测试套件结束时是最后的

@{TestCases}=    Create List
:FOR   ${index}  IN RANGE  0   ${cnt}
\    Append To List     ${TestCases}   ${TestCase${Index}} 

然后使用这个列表@{TestCases}

【讨论】:

  • 嗨,这只有在我运行整个套件和所有 TC 都在同一个套件执行时才有效。即使我运行一个套件的单个 TC,我也需要获取名称,隔离。例如:我在套件 1 中只运行了一个 TC X,但在这个 TC X 中,我需要获取套件 1 中未运行或未计划的 TC Y 和 TC Z 的名称。
  • 我不认为它会那样工作,当你运行测试用例时,变量会初始化,所以它只会返回执行的测试用例,否则它会返回任何东西,你试图通过这样做来实现什么?
  • 每个 TC 都有一个对应的 Jenkins Job 来执行 TC 由于技术和业务需求以及由于传递参数问题。目标是每个 TC 触发下一个 TC(在同一个套件中),而不需要静态传递名称。所以我为此找到的解决方法是在 Jenkins Jobs 中而不是在 TC(RF 内部)中设置 dechaining。所以“工作 A 将直接触发工作 B”,而不是像最初想象的那样“TC A 触发工作 B”。
猜你喜欢
  • 1970-01-01
  • 2013-08-31
  • 2020-01-16
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
相关资源
最近更新 更多