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

