【问题标题】:CSV file creation - robotframeworkCSV 文件创建 - 机器人框架
【发布时间】:2021-11-23 05:06:44
【问题描述】:

我想创建包含以下内容的 csv 文件: 标头 1、标头 2、标头 3 值 1、值 2、值 3 值 11、值 22、值 33 我还想动态生成值并附加到文件中;这在robotframework中如何实现?

【问题讨论】:

  • 发帖前你有没有搜索过解决方案?有几个库可以处理 CSV 文件,请尝试使用文档并使用它们,然后如果找不到解决方案,然后将您的尝试放在这里,社区会提供帮助
  • 嗨@Claudio,感谢您抽出宝贵时间回复。我是机器人框架的新手,我确实通过 CSV 库和字符串库来做某些事情:我尝试了以下方法为文件创建数据:创建文件 ${heading}= "Header1","Header2","Header3" ; ${value}= 值 ["Header1"],value["Header2"]; -->我不确定我需要如何设置值,因为我希望动态生成值;例如value["Header1"]= 生成随机字符串.... ${data} = ${heading} \n ${value} 创建文件 ${TEMPDIR}/test.csv encoding=ISO-8859-1 附加到 Csv 文件${TEMPDIR}/test.csv ${data}

标签: robotframework


【解决方案1】:

您可以使用一些辅助关键字来执行此操作,虽然不清楚您需要什么,但您可以通过附加到基于指定列数以及其他两个关键字的列表来动态创建多个标题值其中第一个基于标题计数创建一个随机值列表,另一个将该值列表附加到一个列表中,该列表实际上是您的行。您也可以在 for 循环中使用它,该循环调用关键字来生成行值,直到达到指定的行数。

如果您只是将标题/行列表转换为逗号分隔的字符串,然后使用标准的 Append to File 关键字来附加此字符串,则您可能可以不使用 csv 库。

总而言之,您可以定义如下关键字:

  • 生成标题
  • 生成随机行集
  • 生成随机值行
  • 将列表转换为逗号分隔字符串
  • 生成 CSV 文件

您还需要:

调用一些关键字(生成标题、生成随机行集和生成 CSV 文件)的测试用例本身 在变量部分中定义了标题计数和行计数 库(字符串、集合和操作系统)

*** Settings ***  
Library  String
Library  Collections
Library  OperatingSystem

*** Variables ***
${header_count}  5    # Change this for a different number of headers
${row_count}     20   # Change this for a different number of rows

*** Test Cases ***
Scenario: Create CSV With Random Data
    ${header}  Generate Header  ${header_count}
    ${data}  Generate Set of Random Rows  ${header_count}  ${row_count} 
    Generate CSV File  ${header}  ${data}

*** Keywords ***
Generate Header
    [Documentation]  Generate a number of headers, stored in a list with prefix "Header" and Suffixed with the current index of the iteration
    [Arguments]  ${header_count}
    @{header_list}  Create List
    FOR  ${header_num}  IN RANGE  1  ${header_count}+1
        Append To List  ${header_list}  Header${header_num}
    END 
    [Return]  ${header_list}

Generate Set of Random Rows 
    [Documentation]  Takes the header count and row count which is used to create a list of lists containing randomly generated strings
    [Arguments]  ${header_count}  ${row_count}
    @{random_row_list}  Create List
    FOR  ${row}  IN RANGE  0  ${row_count}
        ${values}  Generate Random Row Of Values  ${header_count}
        Append To List  ${random_row_list}  ${values}
    END
    [Return]  ${random_row_list}

Generate Random Row Of Values
    [Documentation]  Takes header count to derive the amount of random strings to append to a list
    [Arguments]  ${header_count}
    @{random_value_list}  Create List
    FOR  ${column}  IN RANGE  0  ${header_count}
        ${value}  Generate Random String
        Append To List  ${random_value_list}  ${value}
    END
    [Return]  ${random_value_list}

Convert List To Comma Seperated String
    [Documentation]  Converts list values to string so they can be appended to csv file
    [Arguments]  ${values}
    ${converted_values}  Evaluate  ", ".join(${values})
    [Return]  ${converted_values}

Generate CSV File
    [Documentation]  Takes header (list of column headers) and data (List containing nested list of row values)
    [Arguments]  ${header}  ${data}
    Create File  test.csv
    ${header_string}  Convert List To Comma Seperated String   ${header}

    # Create the header
    Append To File  test.csv  ${header_string}

    # Append all the values row by row
    FOR  ${row}  IN  @{data}
        ${row_values}  Convert List To Comma Seperated String   ${row}
        Append To File  test.csv  \n${row_values}
    END

【讨论】:

    猜你喜欢
    • 2017-04-23
    • 2020-01-22
    • 2016-05-19
    • 2018-03-13
    • 2013-02-13
    • 1970-01-01
    • 2019-10-25
    • 2017-12-04
    • 2018-04-01
    相关资源
    最近更新 更多