You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Robot Framework后台运行指定Linux命令并验证数据创建状态

在Robot Framework中后台运行Linux命令并验证数据创建

一、后台运行指定Shell脚本

使用Robot Framework的OperatingSystem库,通过Run Process关键字实现后台运行命令,同时可跟踪进程执行状态:

*** Settings ***
Library    OperatingSystem

*** Test Cases ***
Run EMS Inventory Script in Background
    # 后台启动脚本进程,返回进程对象用于后续跟踪
    ${process}    Run Process    ./emsInventory.sh    -s 10    -i EMS1004    -p EMS    -v 10.2.0.15.1    -d "EMS Patch "    -c ems10/pass_ems10@rac_ems10.agnity.com    shell=True    background=True
    
    # 可选:等待进程执行完成(根据脚本实际运行时长调整超时时间)
    Wait For Process    ${process}    timeout=60s
    
    # 验证脚本执行成功(返回码为0表示正常结束)
    Should Be Equal As Integers    ${process.rc}    0    脚本执行失败,返回码:${process.rc}

说明:

  • shell=True:允许执行带参数的shell脚本命令
  • background=True:让进程在后台运行,不阻塞测试流程
  • Wait For Process:若需等待脚本执行完再验证必须添加;若脚本为异步处理,可跳过并改用循环检查数据

二、验证数据是否成功创建

根据数据存储位置,选择对应验证方式:

1. 数据库验证(数据存入数据库)

使用DatabaseLibrary连接数据库,查询目标数据是否存在:

*** Settings ***
Library    DatabaseLibrary

*** Test Cases ***
Verify EMS Data in Database
    # 连接数据库(示例为MySQL,需根据实际数据库类型调整驱动和参数)
    Connect To Database    pymysql    dbname=ems_db    user=admin    password=pass123    host=db_host    port=3306
    
    # 查询目标数据
    ${query_result}    Query    SELECT * FROM inventory WHERE inventory_id = 'EMS1004' AND version = '10.2.0.15.1'
    
    # 验证查询结果非空
    Should Not Be Empty    ${query_result}    未找到符合条件的EMS库存数据
    
    # 关闭数据库连接
    Disconnect From Database

2. 文件/日志验证(数据写入文件或日志)

检查脚本生成的输出文件或日志中是否包含关键标识:

*** Settings ***
Library    OperatingSystem

*** Test Cases ***
Verify EMS Data in Output Log
    # 确认输出文件存在
    File Should Exist    ./ems_inventory.log
    
    # 读取文件内容
    ${log_content}    Get File    ./ems_inventory.log
    
    # 验证关键信息存在
    Should Contain    ${log_content}    EMS1004    日志中未找到目标Inventory ID
    Should Contain    ${log_content}    10.2.0.15.1    日志中未找到目标版本号

3. API验证(数据可通过API查询)

使用RequestsLibrary调用系统API,验证数据是否已创建:

*** Settings ***
Library    RequestsLibrary

*** Test Cases ***
Verify EMS Data via API
    # 创建API会话
    Create Session    ems_api    http://ems-server:8080
    
    # 发送查询请求
    ${response}    Get Request    ems_api    /api/inventory?inventoryId=EMS1004
    
    # 验证请求成功
    Should Be Equal As Integers    ${response.status_code}    200    API请求失败,状态码:${response.status_code}
    
    # 解析响应数据并验证
    ${data}    To Json    ${response.text}
    Should Not Be Empty    ${data}    API未返回任何数据
    Should Be Equal    ${data[0].inventoryId}    EMS1004    返回数据的Inventory ID不匹配
    Should Be Equal    ${data[0].version}    10.2.0.15.1    返回数据的版本号不匹配

注意事项

  • 如果脚本是异步处理(后台运行后不会立即生成数据),需使用Wait Until Keyword Succeeds循环检查数据,避免验证过早失败:
    Wait Until Keyword Succeeds    5x    10s    Verify EMS Data in Database
    
  • 所需库需提前安装,可通过pip执行:
    pip install robotframework-databaselibrary robotframework-requests pymysql
    

内容的提问来源于stack exchange,提问作者Aditya pratap Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:09:22