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

如何在Robot Framework中获取测试用的当前用户IP地址?

在Robot Framework中获取当前用户IP地址的方法

根据需求,你需要获取的IP分为本地IP(机器内网/局域网地址)和公网IP(对外暴露的网络地址)两种场景,以下是具体实现方法:

获取本地IP地址

通过Python的socket模块可以准确获取当前机器用于对外通信的本地IP,在Robot Framework中直接用Execute Python Code关键字执行即可:

*** Test Cases ***
Fetch Local IP
    ${local_ip}=    Execute Python Code    import socket; s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.connect(("8.8.8.8", 80)); print(s.getsockname()[0]); s.close()
    Log    当前本地IP: ${local_ip}

这种方式避免了直接解析hostname可能出现的多IP歧义问题,返回的是当前网络出口对应的本地IP。

获取公网IP地址

如果应用表中记录的是公网IP,可通过公共IP查询服务获取,以下两种方式任选:

方式1:使用RequestsLibrary

先确保环境已安装requests库(执行pip install requests),再编写用例:

*** Settings ***
Library    RequestsLibrary

*** Test Cases ***
Fetch Public IP
    ${response}=    Get Request    http://icanhazip.com
    ${public_ip}=    Set Variable    ${response.text.strip()}
    Log    当前公网IP: ${public_ip}

方式2:直接执行Python代码

无需额外导入库,直接调用Python的requests模块:

*** Test Cases ***
Fetch Public IP Via Python
    ${public_ip}=    Execute Python Code    import requests; print(requests.get('http://icanhazip.com').text.strip())
    Log    当前公网IP: ${public_ip}

验证IP与应用表记录一致

结合数据库查询完成验证,示例如下(需提前配置DatabaseLibrary并连接目标数据库):

*** Settings ***
Library    DatabaseLibrary

*** Test Cases ***
Validate IP Against App Table
    # 获取目标IP(替换为上面的本地/公网IP获取逻辑)
    ${target_ip}=    Execute Python Code    import socket; s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM); s.connect(("8.8.8.8", 80)); print(s.getsockname()[0]); s.close()
    # 查询应用表中的IP记录(根据实际表结构调整SQL)
    ${db_result}=    Query    SELECT user_ip FROM app_table WHERE user_id = 'your_target_user_id'
    # 提取存储的IP值
    ${stored_ip}=    Get From Dictionary    ${db_result[0]}    user_ip
    # 断言IP一致
    Should Be Equal    ${target_ip}    ${stored_ip}    错误:IP地址与应用表记录不匹配

内容的提问来源于stack exchange,提问作者Valentyna Len

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:50:19