如何在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
相关产品推荐
相关产品推荐

