【问题标题】:Run a single test in loop in Robot Framework在 Robot Framework 中循环运行单个测试
【发布时间】:2018-06-21 15:05:22
【问题描述】:

我有一个包含测试数据的 csv 文件,如下所示:

# Case, StartTime, EndTime, ExpectedResult
Case_1, 2018-01-11T00:10:00, 2018-01-11T00:58:00, 2.5
Case_2, 2018-01-11T00:15:00, 2018-01-11T00:54:00, 3.2
Case_3, 2018-01-11T00:18:00, 2018-01-11T00:47:00, 4.5
...

使用机器人框架,我添加了一个关键字来读取文件的内容,如下所示:

Read Data File
    ${LIST}=  Process Data File  session_data.csv    
    : FOR    ${LINE}    IN    @{LIST}
        \    Log    ${LINE}
        \    @{COLUMNS}=    Split String    ${LINE}    separator=,
        \    ${TESTCASE}=    Get From List    ${COLUMNS}    0
        \    Log    ${TESTCASE}

我创建了一个测试“验证结果”来处理来自 CSV 的数据并验证预期结果,但所有过程都被视为一个测试用例。

对于 CSV 文件中的每一行,我需要创建一个测试用例,例如如下:

Verify Result for Case_1
Verify Result for Case_3
Verify Result for Case_3
and so on...

请提供有关如何在 Robot Framework 中循环运行单个测试的建议。

【问题讨论】:

  • 您不能将一个关键字分块到多个单独的测试用例中。你必须做很多测试用例。进一步阅读 - Test templates.
  • 取决于你想让这个工作有多糟糕......你可以做我所做的将 TEARDOWN 转换为关键字(所以它不会使套件失败)。对html文件进行后处理,并将关键字转换为html中的测试用例,并使用rebot重新生成日志文件

标签: python automated-tests robotframework


【解决方案1】:

很遗憾,您想做的事情无法完成。 Robot 并非旨在将外部文件中的测试数据视为单独的测试用例。

您可以改为编写一个脚本,该脚本读取您的 .csv 文件并将其转换为一系列机器人测试用例,然后再运行测试。然后,您可以运行这个生成的测试套件。

【讨论】:

    【解决方案2】:

    根据 Psytho 的建议,测试模板可能是您问题的解决方案。

    这是一个基本的例子,给你一个方向

    *** Settings ***
    
    *** Test Cases ***
    Look for All Possible Outputs from the System Under Test
        [Template]    Look for Specific Output
       csv1     #These rows are treated as arguments for test cases with [Template]
       csv2     # You can put your list variable as well, i have not checked with list
       csv3
    
    *** Keywords ***
    Look For Specific Output
        [Arguments]    ${output}
        Comment    Pretending to look for a specific output...
        Log    ${output}   # 
    

    测试用例将运行 3 次。

    【讨论】:

      【解决方案3】:

      您可以将您的测试用例转换为关键字并在测试用例的循环中运行它。每次运行时都可以通过从 CSV 获取输入来更改值

      【讨论】:

      • 这仍然是整个 csv 文件的单个测试用例,而不是单行的单个测试用例。
      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 2021-10-03
      • 1970-01-01
      • 2014-09-28
      • 2016-12-02
      • 2015-01-31
      • 2019-09-03
      • 2017-02-16
      相关资源
      最近更新 更多