<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.3.2 (Python 3.9.6 on darwin)" generated="2026-05-28T20:27:09.309472" rpa="false" schemaversion="5">
<suite id="s1" name="BitRadeX_API测试_prod" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests">
<suite id="s1-s1" name="App" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app">
<suite id="s1-s1-s1" name="Ad List" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app/ad_list.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.396615" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:09.396523" elapsed="0.000119"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.396767" elapsed="0.000008"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:09.396685" elapsed="0.000104"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.396893" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:09.396837" elapsed="0.000075"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:09.396798" elapsed="0.000127"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:09.396675" elapsed="0.000257"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.397191" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:09.397144" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.397291" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.397339" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.397382" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.397424" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.397466" elapsed="0.000006"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:09.397232" elapsed="0.000252"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.397841" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.397549" elapsed="0.000309"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.398153" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.397900" elapsed="0.000270"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.398455" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.398211" elapsed="0.000261"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.398761" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.398513" elapsed="0.000263"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.399077" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.398817" elapsed="0.000275"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.399404" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.399134" elapsed="0.000287"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.399719" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.399467" elapsed="0.000268"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.400028" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.399777" elapsed="0.000268"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.400350" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:09.400088" elapsed="0.000280"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:09.397492" elapsed="0.002891"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400434" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400486" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400534" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400577" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400619" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400660" elapsed="0.000030"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400728" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400771" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.400813" elapsed="0.000007"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:09.400393" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:09.397225" elapsed="0.003613"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.400931" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:09.400871" elapsed="0.000077"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:09.401098" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:09.400989" elapsed="0.000179"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:09.397045" elapsed="0.004150"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.401270" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:09.401236" elapsed="0.000050"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:09.396218" elapsed="0.005087"/>
</kw>
<test id="s1-s1-s1-t1" name="获取广告列表" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:09.402324" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:09.402047" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:09.402586" elapsed="0.000008"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:09.402382" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:09.402375" elapsed="0.000242"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:09.402630" elapsed="0.000015"/>
</return>
<msg time="2026-05-28T20:27:09.402710" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:09.401753" elapsed="0.000968"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:10.039541" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/app/public/ad/list 
 path_url=/v1/app/public/ad/list 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:10.040020" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/app/public/ad/list 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:10 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'api-method': 'GET', 'api-path': '/public/ad/list', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '26e67283b467f4cc48e0f1f97d4c6579', 'X-Transparent': '00-26e67283b467f4cc48e0f1f97d4c6579-fcb91eb4720dfdf7-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d407b8e4be39c-NRT'} 
 body={"code":0,"data":[],"msg":"Success.","msgInfo":{"template":"Success."},"ts":1779971230023} 
 </msg>
<msg time="2026-05-28T20:27:10.040198" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:10.040602" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>url=/v1/app/public/ad/list</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=any</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:09.402761" elapsed="0.637879"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.042316" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:10.041102" elapsed="0.001298"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.043200" level="INFO">${resp_json} = {'code': 0, 'data': [], 'msg': 'Success.', 'msgInfo': {'template': 'Success.'}, 'ts': 1779971230023}</msg>
<var>${resp_json}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:10.042571" elapsed="0.000658"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${resp_json}</arg>
<arg>data</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:10.043462" elapsed="0.000265"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.044440" level="INFO">${json_str} = {
  "code": 0,
  "data": [],
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971230023
}</msg>
<var>${json_str}</var>
<arg>json.dumps($resp_json, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:10.043856" elapsed="0.000619"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.044846" level="INFO">{
  "code": 0,
  "data": [],
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971230023
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.044632" elapsed="0.000300"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:10.045658" level="INFO">${data} = []</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:10.045056" elapsed="0.000632"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.045854" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证广告列表结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($ad_list, list)</arg>
<arg>广告数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.047747" elapsed="0.000257"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.048289" level="INFO">Length is 0.</msg>
<msg time="2026-05-28T20:27:10.048380" level="INFO">${length} = 0</msg>
<var>${length}</var>
<arg>${ad_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:10.048151" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.048691" level="INFO">广告列表包含 0 个广告项</msg>
<arg>广告列表包含 ${length} 个广告项</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.048537" elapsed="0.000205"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${length} &gt; 0</arg>
<arg>验证广告项结构</arg>
<arg>${ad_list[0]}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.048881" elapsed="0.000157"/>
</kw>
<arg>${data}</arg>
<doc>验证广告列表的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:10.047224" elapsed="0.001910"/>
</kw>
<arg>isinstance($data, list)</arg>
<arg>验证广告列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.046477" elapsed="0.002716"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, dict)</arg>
<arg>验证广告字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.049344" elapsed="0.000193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.050412" level="INFO">获取广告列表 /v1/app/public/ad/list status=200</msg>
<arg>获取广告列表 /v1/app/public/ad/list status=${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.049670" elapsed="0.000812"/>
</kw>
<doc>验证广告列表接口功能</doc>
<tag>app</tag>
<status status="PASS" start="2026-05-28T20:27:09.401329" elapsed="0.649411"/>
</test>
<doc>广告列表接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:09.318802" elapsed="0.732745"/>
</suite>
<suite id="s1-s1-s2" name="App Share Info" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app/app_share_info.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.061945" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:10.061710" elapsed="0.000267"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.062351" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:10.062101" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.064661" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.062539" elapsed="0.002179"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:10.062442" elapsed="0.002316"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:10.062063" elapsed="0.002725"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.065592" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.065465" elapsed="0.000173"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.065893" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.066020" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.066141" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.066259" elapsed="0.000027"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.066389" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:10.065714" elapsed="0.000726"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.066860" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.066627" elapsed="0.000277"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.067299" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.067077" elapsed="0.000267"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.067662" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.067456" elapsed="0.000245"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.068020" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.067810" elapsed="0.000250"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.068376" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.068169" elapsed="0.000246"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.068739" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.068523" elapsed="0.000255"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.069111" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.068887" elapsed="0.000263"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.069479" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.069258" elapsed="0.000257"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.069804" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.069609" elapsed="0.000228"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:10.066463" elapsed="0.003408"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.069987" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.070095" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.070197" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.070300" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.070401" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.070501" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.070601" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.070702" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.070803" elapsed="0.000014"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:10.069895" elapsed="0.000951"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:10.065688" elapsed="0.005178"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.071103" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.070955" elapsed="0.000189"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:10.071547" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:10.071239" elapsed="0.000560"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:10.065176" elapsed="0.006693"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.072051" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.071972" elapsed="0.000128"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:10.061396" elapsed="0.010753"/>
</kw>
<test id="s1-s1-s2-t1" name="获取应用分享信息" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.075458" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:10.074612" elapsed="0.000890"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.076379" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:10.075725" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:10.075699" elapsed="0.000781"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:10.076521" elapsed="0.000046"/>
</return>
<msg time="2026-05-28T20:27:10.076776" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:10.073543" elapsed="0.003264"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:10.555230" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/app/public/app/share/info 
 path_url=/v1/app/public/app/share/info 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:10.555598" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/app/public/app/share/info 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:10 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'api-method': 'GET', 'api-path': '/public/app/share/info', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'f490b76c1d26668734985eb7d755ba67', 'X-Transparent': '00-f490b76c1d26668734985eb7d755ba67-904ab7f0d07824b9-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d407ecb77e57d-NRT'} 
 body={"code":0,"data":{"path":"/account/register","host":"https://www.bitradex.ai"},"msg":"Success.","msgInfo":{"template":"Success."},"ts":1779971230536} 
 </msg>
<msg time="2026-05-28T20:27:10.555812" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:10.556233" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:10.077851" elapsed="0.478448"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:10.556551" elapsed="0.000140"/>
</return>
<msg time="2026-05-28T20:27:10.557097" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/app/public/app/share/info</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:10.077007" elapsed="0.480151"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.560070" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:10.558747" elapsed="0.001482"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.561608" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:10.560537" elapsed="0.001131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.562749" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.561923" elapsed="0.000922"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:10.557791" elapsed="0.005188"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.564673" level="INFO">${json_data} = {'code': 0, 'data': {'path': '/account/register', 'host': 'https://www.bitradex.ai'}, 'msg': 'Success.', 'msgInfo': {'template': 'Success.'}, 'ts': 1779971230536}</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:10.563829" elapsed="0.000890"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:10.564915" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.565574" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.565383" elapsed="0.000254"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:10.563342" elapsed="0.002378"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.567216" level="INFO">${json_data} = {'code': 0, 'data': {'path': '/account/register', 'host': 'https://www.bitradex.ai'}, 'msg': 'Success.', 'msgInfo': {'template': 'Success.'}, 'ts': 1779971230536}</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:10.566388" elapsed="0.000871"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.568159" level="INFO">${json_str} = {
  "code": 0,
  "data": {
    "path": "/account/register",
    "host": "https://www.bitradex.ai"
  },
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971230536
}</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:10.567446" elapsed="0.000758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.568653" level="INFO">{
  "code": 0,
  "data": {
    "path": "/account/register",
    "host": "https://www.bitradex.ai"
  },
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971230536
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.568378" elapsed="0.000434"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:10.565965" elapsed="0.003011"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:10.569969" level="INFO">${data} = {'path': '/account/register', 'host': 'https://www.bitradex.ai'}</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:10.569151" elapsed="0.000857"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, dict)</arg>
<arg>响应数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.570193" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证分享信息结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, dict)</arg>
<arg>分享信息数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.571688" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.572252" level="INFO">分享信息数据结构: {'path': '/account/register', 'host': 'https://www.bitradex.ai'}</msg>
<arg>分享信息数据结构: ${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.572093" elapsed="0.000212"/>
</kw>
<kw name="Get Dictionary Keys" owner="Collections">
<msg time="2026-05-28T20:27:10.572636" level="INFO">${keys} = ['host', 'path']</msg>
<var>${keys}</var>
<arg>${data}</arg>
<doc>Returns keys of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-05-28T20:27:10.572438" elapsed="0.000228"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.572945" level="INFO">Length is 2.</msg>
<msg time="2026-05-28T20:27:10.573026" level="INFO">${count} = 2</msg>
<var>${count}</var>
<arg>${keys}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:10.572810" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.573356" level="INFO">分享信息数据包含 2 个字段</msg>
<arg>分享信息数据包含 ${count} 个字段</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.573184" elapsed="0.000221"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:10.574024" level="FAIL">Dictionary does not contain key 'title'.</msg>
<arg>${data}</arg>
<arg>title</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:10.573738" elapsed="0.000436">Dictionary does not contain key 'title'.</status>
</kw>
<msg time="2026-05-28T20:27:10.574286" level="INFO">${has_title} = False</msg>
<var>${has_title}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${data}</arg>
<arg>title</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:10.573550" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_title}</arg>
<arg>Log</arg>
<arg>包含标题字段: ${data['title']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.574467" elapsed="0.000138"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:10.575095" level="FAIL">Dictionary does not contain key 'content'.</msg>
<arg>${data}</arg>
<arg>content</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:10.574904" elapsed="0.000268">Dictionary does not contain key 'content'.</status>
</kw>
<msg time="2026-05-28T20:27:10.575275" level="INFO">${has_content} = False</msg>
<var>${has_content}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${data}</arg>
<arg>content</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:10.574746" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_content}</arg>
<arg>Log</arg>
<arg>包含内容字段: ${data['content']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.575443" elapsed="0.000112"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:10.576162" level="FAIL">Dictionary does not contain key 'url'.</msg>
<arg>${data}</arg>
<arg>url</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:10.576000" elapsed="0.000220">Dictionary does not contain key 'url'.</status>
</kw>
<msg time="2026-05-28T20:27:10.576309" level="INFO">${has_url} = False</msg>
<var>${has_url}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${data}</arg>
<arg>url</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:10.575675" elapsed="0.000659"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_url}</arg>
<arg>Log</arg>
<arg>包含链接字段: ${data['url']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.576457" elapsed="0.000106"/>
</kw>
<arg>${data}</arg>
<doc>验证应用分享信息的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:10.571305" elapsed="0.005327"/>
</kw>
<arg>len($data) &gt; 0</arg>
<arg>验证分享信息结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:10.570751" elapsed="0.005939"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.577806" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:10.577249" elapsed="0.000585"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:10.578101" elapsed="0.000525"/>
</kw>
<msg time="2026-05-28T20:27:10.578721" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:10.577949" elapsed="0.000797"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.579044" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:10.578885" elapsed="0.000186"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.579397" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:10.579192" elapsed="0.000230"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.579760" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:10.579543" elapsed="0.000240"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.580155" level="INFO">${summary_content} = 🧪 测试过程: 获取应用分享信息 | 📡 请求接口: /v1/app/public/app/share/info | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:10.579882" elapsed="0.000304"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.580470" level="INFO">${final_summary} = 🧪 测试过程: 获取应用分享信息 | 📡 请求接口: /v1/app/public/app/share/info | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:10.580289" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.580699" level="INFO">🧪 测试过程: 获取应用分享信息 | 📡 请求接口: /v1/app/public/app/share/info | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.580594" elapsed="0.000146"/>
</kw>
<arg>获取应用分享信息</arg>
<arg>/v1/app/public/app/share/info</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:10.576917" elapsed="0.003878"/>
</kw>
<doc>验证应用分享信息接口功能</doc>
<tag>app</tag>
<status status="PASS" start="2026-05-28T20:27:10.072229" elapsed="0.508775"/>
</test>
<doc>应用分享信息接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:10.052909" elapsed="0.528549"/>
</suite>
<suite id="s1-s1-s3" name="App Version Info" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app/app_version_info.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.587690" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:10.587455" elapsed="0.000272"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.588063" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:10.587823" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.588392" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.588248" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:10.588148" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:10.587798" elapsed="0.000687"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.589310" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.589178" elapsed="0.000175"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.589574" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.589689" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.589801" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.589907" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.590012" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:10.589418" elapsed="0.000639"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.590429" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.590224" elapsed="0.000244"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.590755" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.590572" elapsed="0.000223"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.591077" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.590894" elapsed="0.000219"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.591403" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.591215" elapsed="0.000225"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.591722" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.591538" elapsed="0.000221"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.592060" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.591856" elapsed="0.000240"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.592394" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.592195" elapsed="0.000236"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.592780" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.592576" elapsed="0.000242"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.593117" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:10.592919" elapsed="0.000235"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:10.590077" elapsed="0.003109"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.593300" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.593413" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.593519" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.593625" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.593729" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.593838" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.593945" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.594048" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.594149" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:10.593207" elapsed="0.000984"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:10.589402" elapsed="0.004806"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.594437" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.594289" elapsed="0.000190"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:10.594853" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:10.594582" elapsed="0.000421"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:10.588934" elapsed="0.006130"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.595250" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:10.595165" elapsed="0.000124"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:10.587164" elapsed="0.008173"/>
</kw>
<test id="s1-s1-s3-t1" name="获取应用版本信息" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:10.597765" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:10.597195" elapsed="0.000594"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:10.598326" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:10.597899" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:10.597885" elapsed="0.000507"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:10.598422" elapsed="0.000026"/>
</return>
<msg time="2026-05-28T20:27:10.598624" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:10.596466" elapsed="0.002180"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:11.085100" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/app/public/app-info/version?client=ios-test-flight&amp;build=7034 
 path_url=/v1/app/public/app-info/version?client=ios-test-flight&amp;build=7034 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:11.085711" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/app/public/app-info/version?client=ios-test-flight&amp;build=7034 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:11 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'api-method': 'GET', 'api-path': '/public/app-info/version', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'b675a7e0bb805652dc0be68c511a0250', 'X-Transparent': '00-b675a7e0bb805652dc0be68c511a0250-0877212145cce4a0-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40821aedeb79-NRT'} 
 body={"code":0,"data":{"alertType":2,"build":7051,"description":"1. 活动与奖励中心全面升级，参与体验更直观流畅\n2. 账户安全与KYC流程优化，高效认证保障资金安全\n3. 客服系统升级，交互更顺畅，服务更及时","version":"1.2.7","url":"itms-services://?action=download-manifest&amp;url=https://download.bitradex.co/app/IOS/manifest.plist"},"msg":"Success.","msgInfo":{"template":"Success."},"ts":1779971231066} 
 </msg>
<msg time="2026-05-28T20:27:11.085911" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:11.086318" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:10.599373" elapsed="0.487010"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:11.086609" elapsed="0.000128"/>
</return>
<msg time="2026-05-28T20:27:11.087149" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/app/public/app-info/version?client=ios-test-flight&amp;build=7034</arg>
<arg>headers=&amp;{headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:10.598763" elapsed="0.488445"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.089971" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:11.088720" elapsed="0.001398"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.091452" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:11.090411" elapsed="0.001088"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.091943" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.091711" elapsed="0.000305"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:11.087807" elapsed="0.004304"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.094240" level="INFO">${json_data} = {'code': 0, 'data': {'alertType': 2, 'build': 7051, 'description': '1. 活动与奖励中心全面升级，参与体验更直观流畅\n2. 账户安全与KYC流程优化，高效认证保障资金安全\n3. 客服系统升级，交互更顺畅，服务更及时', 'version': '1.2.7', 'url': 'itms-services://?action=do...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:11.093337" elapsed="0.000955"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:11.094482" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.095161" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.094953" elapsed="0.000278"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:11.092380" elapsed="0.002943"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.096840" level="INFO">${json_data} = {'code': 0, 'data': {'alertType': 2, 'build': 7051, 'description': '1. 活动与奖励中心全面升级，参与体验更直观流畅\n2. 账户安全与KYC流程优化，高效认证保障资金安全\n3. 客服系统升级，交互更顺畅，服务更及时', 'version': '1.2.7', 'url': 'itms-services://?action=do...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:11.096019" elapsed="0.000870"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.097765" level="INFO">${json_str} = {
  "code": 0,
  "data": {
    "alertType": 2,
    "build": 7051,
    "description": "1. 活动与奖励中心全面升级，参与体验更直观流畅\n2. 账户安全与KYC流程优化，高效认证保障资金安全\n3. 客服系统升级，交互更顺畅，服务更及时",
    "version": "1.2.7",
    "url": "...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:11.097071" elapsed="0.000743"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.098278" level="INFO">{
  "code": 0,
  "data": {
    "alertType": 2,
    "build": 7051,
    "description": "1. 活动与奖励中心全面升级，参与体验更直观流畅\n2. 账户安全与KYC流程优化，高效认证保障资金安全\n3. 客服系统升级，交互更顺畅，服务更及时",
    "version": "1.2.7",
    "url": "itms-services://?action=download-manifest&amp;url=https://download.bitradex.co/app/IOS/manifest.plist"
  },
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971231066
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.098002" elapsed="0.000489"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:11.095575" elapsed="0.003011"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.100155" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:11.099498" elapsed="0.000692"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:11.100549" elapsed="0.000634"/>
</kw>
<msg time="2026-05-28T20:27:11.101295" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:11.100353" elapsed="0.000973"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.101679" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:11.101490" elapsed="0.000220"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.102119" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:11.101861" elapsed="0.000289"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.102507" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:11.102298" elapsed="0.000240"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.103017" level="INFO">${summary_content} = 🧪 测试过程: 获取应用版本信息 | 📡 请求接口: /v1/app/public/app-info/version?client=ios-test-flight&amp;build=7034 | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:11.102677" elapsed="0.000382"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.103452" level="INFO">${final_summary} = 🧪 测试过程: 获取应用版本信息 | 📡 请求接口: /v1/app/public/app-info/version?client=ios-test-flight&amp;build=7034 | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:11.103203" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.103777" level="INFO">🧪 测试过程: 获取应用版本信息 | 📡 请求接口: /v1/app/public/app-info/version?client=ios-test-flight&amp;build=7034 | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.103629" elapsed="0.000206"/>
</kw>
<arg>获取应用版本信息</arg>
<arg>/v1/app/public/app-info/version?client=ios-test-flight&amp;build=7034</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:11.098950" elapsed="0.004955"/>
</kw>
<doc>验证应用版本信息接口功能</doc>
<tag>app</tag>
<status status="PASS" start="2026-05-28T20:27:10.595395" elapsed="0.508711"/>
</test>
<doc>应用版本信息接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:10.582536" elapsed="0.522032"/>
</suite>
<suite id="s1-s1-s4" name="Banner List" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app/banner_list.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.110570" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:11.110381" elapsed="0.000219"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.110892" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:11.110696" elapsed="0.000242"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.111177" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.111045" elapsed="0.000178"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:11.110965" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:11.110671" elapsed="0.000606"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.111906" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.111803" elapsed="0.000141"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.112145" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.112249" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.112346" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.112445" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.112727" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:11.112002" elapsed="0.000821"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.113383" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.113095" elapsed="0.000344"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.113857" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.113623" elapsed="0.000281"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.114247" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.114027" elapsed="0.000264"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.114628" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.114410" elapsed="0.000262"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.115016" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.114791" elapsed="0.000269"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.115394" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.115178" elapsed="0.000259"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.115790" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.115555" elapsed="0.000277"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.116187" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.115951" elapsed="0.000279"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.116582" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.116349" elapsed="0.000276"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:11.112855" elapsed="0.003809"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.116804" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.116925" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.117031" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.117136" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.117240" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.117343" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.117444" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.117546" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.117646" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:11.116691" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:11.111986" elapsed="0.005722"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.117961" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.117795" elapsed="0.000211"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:11.118385" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:11.118108" elapsed="0.000442"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:11.111569" elapsed="0.007048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.118805" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.118720" elapsed="0.000125"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:11.110130" elapsed="0.008764"/>
</kw>
<test id="s1-s1-s4-t1" name="获取Banner列表" line="7">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.119931" level="INFO">&amp;{params} = { type=2 }</msg>
<var>&amp;{params}</var>
<arg>type=2</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:11.119731" elapsed="0.000225"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.121582" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:11.120964" elapsed="0.000646"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.122266" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:11.121763" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:11.121741" elapsed="0.000602"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:11.122375" elapsed="0.000038"/>
</return>
<msg time="2026-05-28T20:27:11.122574" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:11.120183" elapsed="0.002415"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:11.801383" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/app/public/banner/listByApp?type=2 
 path_url=/v1/app/public/banner/listByApp?type=2 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:11.801712" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/app/public/banner/listByApp?type=2 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:11 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'api-method': 'GET', 'api-path': '/public/banner/listByApp', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '5919333f37505c150549c4ad7b3cac05', 'X-Transparent': '00-5919333f37505c150549c4ad7b3cac05-02216d3fe62dcf04-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40869d4bd74c-NRT'} 
 body={"code":0,"data":[],"msg":"Success.","msgInfo":{"template":"Success."},"ts":1779971231783} 
 </msg>
<msg time="2026-05-28T20:27:11.801890" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:11.802253" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>url=/v1/app/public/banner/listByApp</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=any</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:11.122699" elapsed="0.679619"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.804183" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:11.802817" elapsed="0.001556"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.806002" level="INFO">${resp_json} = {'code': 0, 'data': [], 'msg': 'Success.', 'msgInfo': {'template': 'Success.'}, 'ts': 1779971231783}</msg>
<var>${resp_json}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:11.804707" elapsed="0.001357"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${resp_json}</arg>
<arg>data</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:11.806353" elapsed="0.000861"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.808423" level="INFO">${json_str} = {
  "code": 0,
  "data": [],
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971231783
}</msg>
<var>${json_str}</var>
<arg>json.dumps($resp_json, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:11.807480" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.809130" level="INFO">{
  "code": 0,
  "data": [],
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971231783
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.808758" elapsed="0.000540"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:11.810468" level="INFO">${data} = []</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:11.809512" elapsed="0.001006"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:11.810744" elapsed="0.000480"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证Banner列表结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($banner_list, list)</arg>
<arg>Banner数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:11.812570" elapsed="0.001015"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.813927" level="INFO">Length is 0.</msg>
<msg time="2026-05-28T20:27:11.814019" level="INFO">${length} = 0</msg>
<var>${length}</var>
<arg>${banner_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:11.813768" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.814344" level="INFO">Banner列表包含 0 个Banner项</msg>
<arg>Banner列表包含 ${length} 个Banner项</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.814185" elapsed="0.000215"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${length} &gt; 0</arg>
<arg>验证Banner项结构</arg>
<arg>${banner_list[0]}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:11.814537" elapsed="0.000160"/>
</kw>
<arg>${data}</arg>
<doc>验证Banner列表的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:11.812022" elapsed="0.002770"/>
</kw>
<arg>isinstance($data, list)</arg>
<arg>验证Banner列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:11.811446" elapsed="0.003410"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, dict)</arg>
<arg>验证Banner字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:11.815069" elapsed="0.000188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.816058" level="INFO">获取Banner列表 /v1/app/public/banner/listByApp status=200</msg>
<arg>获取Banner列表 /v1/app/public/banner/listByApp status=${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.815396" elapsed="0.000716"/>
</kw>
<doc>验证Banner列表接口功能</doc>
<tag>app</tag>
<status status="PASS" start="2026-05-28T20:27:11.118961" elapsed="0.697353"/>
</test>
<doc>Banner列表接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:11.105782" elapsed="0.711037"/>
</suite>
<suite id="s1-s1-s5" name="Captcha Apply" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app/captcha_apply.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.822943" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:11.822752" elapsed="0.000217"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.823262" elapsed="0.000190"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:11.823075" elapsed="0.000413"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.823722" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.823604" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:11.823518" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:11.823040" elapsed="0.000776"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.824488" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.824383" elapsed="0.000143"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.824739" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.824855" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.824961" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.825075" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.825179" elapsed="0.000014"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:11.824583" elapsed="0.000642"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.825597" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.825376" elapsed="0.000257"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.825911" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.825726" elapsed="0.000218"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.826235" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.826048" elapsed="0.000222"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.826553" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.826364" elapsed="0.000221"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.826858" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.826680" elapsed="0.000217"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.827157" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.826989" elapsed="0.000197"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.827441" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.827268" elapsed="0.000204"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.827735" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.827553" elapsed="0.000212"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.828039" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:11.827848" elapsed="0.000221"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:11.825245" elapsed="0.002852"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828206" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828309" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828445" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828539" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828633" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828724" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828817" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828908" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.828997" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:11.828121" elapsed="0.000917"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:11.824569" elapsed="0.004486"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.829275" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.829135" elapsed="0.000177"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:11.829675" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:11.829399" elapsed="0.000498"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:11.824151" elapsed="0.005810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.830116" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:11.830048" elapsed="0.000103"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:11.822526" elapsed="0.007667"/>
</kw>
<test id="s1-s1-s5-t1" name="申请验证码" line="7">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.831470" level="INFO">&amp;{params} = { type=2 }</msg>
<var>&amp;{params}</var>
<arg>type=2</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:11.831180" elapsed="0.000327"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:11.833351" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:11.832625" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:11.834096" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:11.833519" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:11.833498" elapsed="0.000689"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:11.834224" elapsed="0.000032"/>
</return>
<msg time="2026-05-28T20:27:11.834441" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:11.831754" elapsed="0.002716"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:12.233153" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/app/public/captcha/apply?type=2 
 path_url=/v1/app/public/captcha/apply?type=2 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:12.233521" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/app/public/captcha/apply?type=2 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:12 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'api-method': 'GET', 'api-path': '/public/captcha/apply', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'e5cfc2197c561ca67b018c86f16757da', 'X-Transparent': '00-e5cfc2197c561ca67b018c86f16757da-977ea515bf596f2c-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40894de9b1de-NRT'} 
 body={"code":0,"data":{"code":"","sdkKey":"6dd29db327aecc625f15c04748e6dcd3","enabled":true},"msg":"Success.","msgInfo":{"template":"Success."},"ts":1779971232217} 
 </msg>
<msg time="2026-05-28T20:27:12.233715" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:12.234210" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:11.835088" elapsed="0.399185"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:12.234508" elapsed="0.000142"/>
</return>
<msg time="2026-05-28T20:27:12.235031" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/app/public/captcha/apply</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:11.834627" elapsed="0.400460"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.238330" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:12.236609" elapsed="0.001864"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.239773" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.238747" elapsed="0.001080"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.240359" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.240080" elapsed="0.000367"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:12.235690" elapsed="0.004883"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.242455" level="INFO">${json_data} = {'code': 0, 'data': {'code': '', 'sdkKey': '6dd29db327aecc625f15c04748e6dcd3', 'enabled': True}, 'msg': 'Success.', 'msgInfo': {'template': 'Success.'}, 'ts': 1779971232217}</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.241536" elapsed="0.000964"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:12.242688" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.243338" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.243145" elapsed="0.000262"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:12.240912" elapsed="0.002579"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.244942" level="INFO">${json_data} = {'code': 0, 'data': {'code': '', 'sdkKey': '6dd29db327aecc625f15c04748e6dcd3', 'enabled': True}, 'msg': 'Success.', 'msgInfo': {'template': 'Success.'}, 'ts': 1779971232217}</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.244171" elapsed="0.000814"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.245832" level="INFO">${json_str} = {
  "code": 0,
  "data": {
    "code": "",
    "sdkKey": "6dd29db327aecc625f15c04748e6dcd3",
    "enabled": true
  },
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 177997...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:12.245158" elapsed="0.000716"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.246257" level="INFO">{
  "code": 0,
  "data": {
    "code": "",
    "sdkKey": "6dd29db327aecc625f15c04748e6dcd3",
    "enabled": true
  },
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971232217
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.246050" elapsed="0.000338"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:12.243730" elapsed="0.002730"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.247646" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.247072" elapsed="0.000604"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:12.248025" elapsed="0.000614"/>
</kw>
<msg time="2026-05-28T20:27:12.248748" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:12.247831" elapsed="0.000945"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.249108" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:12.248928" elapsed="0.000210"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.249515" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:12.249278" elapsed="0.000265"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.249874" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:12.249679" elapsed="0.000225"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.250370" level="INFO">${summary_content} = 🧪 测试过程: 请求验证码 | 📡 请求接口: /v1/app/public/captcha/apply | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.250039" elapsed="0.000367"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.250875" level="INFO">${final_summary} = 🧪 测试过程: 请求验证码 | 📡 请求接口: /v1/app/public/captcha/apply | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:12.250630" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.251162" level="INFO">🧪 测试过程: 请求验证码 | 📡 请求接口: /v1/app/public/captcha/apply | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.251030" elapsed="0.000179"/>
</kw>
<arg>请求验证码</arg>
<arg>/v1/app/public/captcha/apply</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:12.246680" elapsed="0.004592"/>
</kw>
<doc>验证验证码请求接口功能</doc>
<tag>app</tag>
<status status="PASS" start="2026-05-28T20:27:11.830275" elapsed="0.421229"/>
</test>
<doc>验证码申请接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:11.817975" elapsed="0.434074"/>
</suite>
<suite id="s1-s1-s6" name="Open Screen List" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app/open_screen_list.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.258352" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:12.258153" elapsed="0.000228"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.258698" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:12.258492" elapsed="0.000254"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.258989" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.258871" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:12.258786" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:12.258454" elapsed="0.000624"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.259663" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.259570" elapsed="0.000127"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.259879" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.259977" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.260080" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.260173" elapsed="0.000021"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.260274" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:12.259744" elapsed="0.000578"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.260653" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.260457" elapsed="0.000229"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.260947" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.260769" elapsed="0.000208"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.261233" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.261064" elapsed="0.000199"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.261525" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.261345" elapsed="0.000210"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.261806" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.261636" elapsed="0.000199"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.262123" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.261923" elapsed="0.000228"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.262429" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.262234" elapsed="0.000223"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.262718" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.262538" elapsed="0.000213"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.263022" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.262836" elapsed="0.000216"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:12.260342" elapsed="0.002737"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.263178" elapsed="0.000049"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.263315" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.263415" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.263507" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.263897" elapsed="0.000083"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.264130" elapsed="0.000024"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.264267" elapsed="0.000021"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.264396" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.264522" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:12.263100" elapsed="0.001481"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:12.259732" elapsed="0.004880"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.265065" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.264727" elapsed="0.000407"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:12.265639" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:12.265267" elapsed="0.000661"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:12.259361" elapsed="0.006661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.266259" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.266154" elapsed="0.000154"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:12.257923" elapsed="0.008448"/>
</kw>
<test id="s1-s1-s6-t1" name="获取开屏广告列表" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.269326" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:12.268663" elapsed="0.000693"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.269977" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:12.269477" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:12.269457" elapsed="0.000601"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:12.270090" elapsed="0.000035"/>
</return>
<msg time="2026-05-28T20:27:12.270288" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:12.267861" elapsed="0.002453"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:12.780816" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/app/public/open-screen/list 
 path_url=/v1/app/public/open-screen/list 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:12.781260" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/app/public/open-screen/list 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:12 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'api-method': 'GET', 'api-path': '/public/open-screen/list', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'cb0669f07242a7da18cdb75f7d8de082', 'X-Transparent': '00-cb0669f07242a7da18cdb75f7d8de082-d1154218aa81cabe-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d408c9ae98ec0-NRT'} 
 body={"code":0,"data":{"mn_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/mn/battle/newUser","domesticLink":"https://www.bitradex.com/mn/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/mn%403x-1778237534291.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"mn"},"ru_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/ru/battle/newUser","domesticLink":"https://www.bitradex.com/ru/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/ru%403x-1778237630225.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"ru"},"pt_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/pt/battle/newUser","domesticLink":"https://www.bitradex.com/pt/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/pt%403x-1775746996573.jpg","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"pt"},"tw_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/zh-TW/battle/newUser","domesticLink":"https://www.bitradex.com/zh-TW/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/tc%403x-1778237660800.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"tw"},"kk_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/kk/battle/newUser","domesticLink":"https://www.bitradex.com/kk/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/kz%403x-1778237511561.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"kk"},"ms_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/ms/battle/newUser","domesticLink":"https://www.bitradex.com/ms/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/my%403x-1778237545769.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"ms"},"ko_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/ko/battle/newUser","domesticLink":"https://www.bitradex.com/ko/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/kr%403x-1778237523457.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"ko"},"az_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/az/battle/newUser","domesticLink":"https://www.bitradex.com/az/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/az%403x-1778237482763.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"az"},"pt_br_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/pt-br/battle/newUser","domesticLink":"https://www.bitradex.com/pt-br/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/pt-br%403x-1778237617685.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"pt_br"},"es_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/es/battle/newUser","domesticLink":"https://www.bitradex.com/es/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/es%403x-1778237461748.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"es"},"cn_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/zh-CN/battle/newUser","domesticLink":"https://www.bitradex.com/zh-CN/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/sc%403x-1778237413593.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"cn"},"vi_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/vi/battle/newUser","domesticLink":"https://www.bitradex.com/vi/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/vi%403x-1778237675251.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"vi"},"th_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/th/battle/newUser","domesticLink":"https://www.bitradex.com/th/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/th%403x-1778237645620.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"th"},"en_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/en/battle/newUser","domesticLink":"https://www.bitradex.com/en/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/en%403x-1778237423630.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"en"},"ja_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/ja/battle/newUser","domesticLink":"https://www.bitradex.com/ja/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/jp%403x-1778237497764.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"ja"},"id_0":{"visibilityScope":"ALL","link":"https://www.bitradex.com/id/battle/newUser","domesticLink":"https://www.bitradex.com/id/battle/newUser","templateCode":"app_open_screen","type":0,"priority":100,"title":"","url":"https://static2.bitradex.mobi/app/id%403x-1778237472377.png","content":"","isNeedLogin":2,"deliveryId":20,"timeLimitEnabled":0,"id":153,"lang":"id"}},"msg":"Success.","msgInfo":{"template":"Success."},"ts":1779971232745} 
 </msg>
<msg time="2026-05-28T20:27:12.781664" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:12.782020" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:12.271110" elapsed="0.510989"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:12.782326" elapsed="0.000133"/>
</return>
<msg time="2026-05-28T20:27:12.782864" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/app/public/open-screen/list</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:12.270451" elapsed="0.512469"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.785518" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:12.784311" elapsed="0.001358"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.787087" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.786025" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.787686" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.787395" elapsed="0.000383"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:12.783485" elapsed="0.004417"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.790377" level="INFO">${json_data} = {'code': 0, 'data': {'mn_0': {'visibilityScope': 'ALL', 'link': 'https://www.bitradex.com/mn/battle/newUser', 'domesticLink': 'https://www.bitradex.com/mn/battle/newUser', 'templateCode': 'app_open_sc...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.788895" elapsed="0.001545"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:12.790692" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.791502" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.791304" elapsed="0.000264"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:12.788246" elapsed="0.003415"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.793366" level="INFO">${json_data} = {'code': 0, 'data': {'mn_0': {'visibilityScope': 'ALL', 'link': 'https://www.bitradex.com/mn/battle/newUser', 'domesticLink': 'https://www.bitradex.com/mn/battle/newUser', 'templateCode': 'app_open_sc...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.792363" elapsed="0.001047"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.794795" level="INFO">${json_str} = {
  "code": 0,
  "data": {
    "mn_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/mn/battle/newUser",
      "domesticLink": "https://www.bitradex.com/mn/battle/newUser",...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:12.793593" elapsed="0.001244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.795263" level="INFO">{
  "code": 0,
  "data": {
    "mn_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/mn/battle/newUser",
      "domesticLink": "https://www.bitradex.com/mn/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/mn%403x-1778237534291.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "mn"
    },
    "ru_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/ru/battle/newUser",
      "domesticLink": "https://www.bitradex.com/ru/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/ru%403x-1778237630225.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "ru"
    },
    "pt_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/pt/battle/newUser",
      "domesticLink": "https://www.bitradex.com/pt/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/pt%403x-1775746996573.jpg",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "pt"
    },
    "tw_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/zh-TW/battle/newUser",
      "domesticLink": "https://www.bitradex.com/zh-TW/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/tc%403x-1778237660800.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "tw"
    },
    "kk_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/kk/battle/newUser",
      "domesticLink": "https://www.bitradex.com/kk/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/kz%403x-1778237511561.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "kk"
    },
    "ms_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/ms/battle/newUser",
      "domesticLink": "https://www.bitradex.com/ms/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/my%403x-1778237545769.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "ms"
    },
    "ko_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/ko/battle/newUser",
      "domesticLink": "https://www.bitradex.com/ko/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/kr%403x-1778237523457.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "ko"
    },
    "az_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/az/battle/newUser",
      "domesticLink": "https://www.bitradex.com/az/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/az%403x-1778237482763.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "az"
    },
    "pt_br_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/pt-br/battle/newUser",
      "domesticLink": "https://www.bitradex.com/pt-br/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/pt-br%403x-1778237617685.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "pt_br"
    },
    "es_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/es/battle/newUser",
      "domesticLink": "https://www.bitradex.com/es/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/es%403x-1778237461748.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "es"
    },
    "cn_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/zh-CN/battle/newUser",
      "domesticLink": "https://www.bitradex.com/zh-CN/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/sc%403x-1778237413593.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "cn"
    },
    "vi_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/vi/battle/newUser",
      "domesticLink": "https://www.bitradex.com/vi/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/vi%403x-1778237675251.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "vi"
    },
    "th_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/th/battle/newUser",
      "domesticLink": "https://www.bitradex.com/th/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/th%403x-1778237645620.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "th"
    },
    "en_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/en/battle/newUser",
      "domesticLink": "https://www.bitradex.com/en/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/en%403x-1778237423630.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "en"
    },
    "ja_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/ja/battle/newUser",
      "domesticLink": "https://www.bitradex.com/ja/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/jp%403x-1778237497764.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "ja"
    },
    "id_0": {
      "visibilityScope": "ALL",
      "link": "https://www.bitradex.com/id/battle/newUser",
      "domesticLink": "https://www.bitradex.com/id/battle/newUser",
      "templateCode": "app_open_screen",
      "type": 0,
      "priority": 100,
      "title": "",
      "url": "https://static2.bitradex.mobi/app/id%403x-1778237472377.png",
      "content": "",
      "isNeedLogin": 2,
      "deliveryId": 20,
      "timeLimitEnabled": 0,
      "id": 153,
      "lang": "id"
    }
  },
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971232745
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.795017" elapsed="0.000481"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:12.791923" elapsed="0.003672"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.796824" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.796210" elapsed="0.000646"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:12.797248" elapsed="0.000617"/>
</kw>
<msg time="2026-05-28T20:27:12.797969" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:12.797019" elapsed="0.000978"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.798345" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:12.798155" elapsed="0.000219"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.798757" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:12.798515" elapsed="0.000270"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.799128" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:12.798924" elapsed="0.000233"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.799594" level="INFO">${summary_content} = 🧪 测试过程: 获取开屏广告列表 | 📡 请求接口: /v1/app/public/open-screen/list | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:12.799294" elapsed="0.000330"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.799941" level="INFO">${final_summary} = 🧪 测试过程: 获取开屏广告列表 | 📡 请求接口: /v1/app/public/open-screen/list | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:12.799744" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.800203" level="INFO">🧪 测试过程: 获取开屏广告列表 | 📡 请求接口: /v1/app/public/open-screen/list | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.800090" elapsed="0.000161"/>
</kw>
<arg>获取开屏广告列表</arg>
<arg>/v1/app/public/open-screen/list</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:12.795820" elapsed="0.004490"/>
</kw>
<doc>验证开屏广告列表接口功能</doc>
<tag>app</tag>
<status status="PASS" start="2026-05-28T20:27:12.266454" elapsed="0.534073"/>
</test>
<doc>开屏广告列表接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:12.253221" elapsed="0.547801"/>
</suite>
<suite id="s1-s1-s7" name="Open Screen List Lang" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app/open_screen_list_lang.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.807277" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:12.807082" elapsed="0.000221"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.807604" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:12.807415" elapsed="0.000234"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.807863" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.807755" elapsed="0.000148"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:12.807678" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:12.807377" elapsed="0.000578"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.808579" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.808485" elapsed="0.000129"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.808807" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.808909" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.809005" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.809098" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.809196" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:12.808667" elapsed="0.000572"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.809580" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.809376" elapsed="0.000238"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.809900" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.809735" elapsed="0.000195"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.810187" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.810018" elapsed="0.000198"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.810474" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.810296" elapsed="0.000207"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.810745" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.810586" elapsed="0.000188"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.811025" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.810856" elapsed="0.000198"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.811311" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.811137" elapsed="0.000203"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.811602" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.811425" elapsed="0.000295"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.812190" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:12.811884" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:12.809258" elapsed="0.003017"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.812430" elapsed="0.000021"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.812567" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.812694" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.812824" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.812948" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.813071" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.813192" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.813314" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.813435" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:12.812307" elapsed="0.001177"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:12.808652" elapsed="0.004854"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.813801" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.813612" elapsed="0.000241"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:12.814286" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:12.813973" elapsed="0.001976"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:12.808261" elapsed="0.007769"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.816220" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:12.816131" elapsed="0.000128"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:12.806857" elapsed="0.009452"/>
</kw>
<test id="s1-s1-s7-t1" name="获取开屏广告语言列表" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:12.819039" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:12.818402" elapsed="0.000665"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:12.819710" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:12.819217" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:12.819197" elapsed="0.000587"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:12.819813" elapsed="0.000031"/>
</return>
<msg time="2026-05-28T20:27:12.820001" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:12.817684" elapsed="0.002341"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:13.290009" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/app/public/open-screen/list/lang 
 path_url=/v1/app/public/open-screen/list/lang 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:13.290463" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/app/public/open-screen/list/lang 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:13 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'api-method': 'GET', 'api-path': '/public/open-screen/list/lang', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '8976f785cac1d7f4742cbab7d7cfa2df', 'X-Transparent': '00-8976f785cac1d7f4742cbab7d7cfa2df-02c0fe4703e55097-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d408fed8618ce-NRT'} 
 body={"code":0,"data":[],"msg":"Success.","msgInfo":{"template":"Success."},"ts":1779971233271} 
 </msg>
<msg time="2026-05-28T20:27:13.290670" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:13.291123" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:12.820796" elapsed="0.470392"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:13.291453" elapsed="0.000147"/>
</return>
<msg time="2026-05-28T20:27:13.292021" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/app/public/open-screen/list/lang</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:12.820158" elapsed="0.471922"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.294805" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:13.293554" elapsed="0.001402"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.296294" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:13.295232" elapsed="0.001120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.296882" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.296593" elapsed="0.000378"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:13.292677" elapsed="0.004419"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.299229" level="INFO">${json_data} = {'code': 0, 'data': [], 'msg': 'Success.', 'msgInfo': {'template': 'Success.'}, 'ts': 1779971233271}</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:13.298090" elapsed="0.001196"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:13.299530" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.300385" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.300155" elapsed="0.000294"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:13.297440" elapsed="0.003091"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.302003" level="INFO">${json_data} = {'code': 0, 'data': [], 'msg': 'Success.', 'msgInfo': {'template': 'Success.'}, 'ts': 1779971233271}</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:13.301203" elapsed="0.000845"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.302951" level="INFO">${json_str} = {
  "code": 0,
  "data": [],
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971233271
}</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:13.302229" elapsed="0.000767"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.303452" level="INFO">{
  "code": 0,
  "data": [],
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971233271
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.303175" elapsed="0.000418"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:13.300768" elapsed="0.002918"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:13.304744" level="INFO">${data} = []</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:13.303878" elapsed="0.000956"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:13.304987" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证语言列表结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($lang_list, list)</arg>
<arg>语言数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:13.306626" elapsed="0.000268"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.307196" level="INFO">Length is 0.</msg>
<msg time="2026-05-28T20:27:13.307283" level="INFO">${length} = 0</msg>
<var>${length}</var>
<arg>${lang_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:13.307046" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.307586" level="INFO">语言列表包含 0 个语言项</msg>
<arg>语言列表包含 ${length} 个语言项</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.307437" elapsed="0.000202"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${length} &gt; 0</arg>
<arg>验证语言项结构</arg>
<arg>${lang_list[0]}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:13.307772" elapsed="0.000165"/>
</kw>
<arg>${data}</arg>
<doc>验证语言列表的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:13.305908" elapsed="0.002107"/>
</kw>
<arg>isinstance($data, list)</arg>
<arg>验证语言列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:13.305507" elapsed="0.002563"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, dict)</arg>
<arg>验证语言字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:13.308213" elapsed="0.000192"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.309500" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:13.309024" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:13.309785" elapsed="0.000447"/>
</kw>
<msg time="2026-05-28T20:27:13.310306" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:13.309643" elapsed="0.000685"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.310580" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:13.310446" elapsed="0.000156"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.310889" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:13.310709" elapsed="0.000202"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.311170" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:13.311022" elapsed="0.000170"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.311550" level="INFO">${summary_content} = 🧪 测试过程: 获取开屏广告语言列表 | 📡 请求接口: /v1/app/public/open-screen/list/lang | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:13.311299" elapsed="0.000278"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.311863" level="INFO">${final_summary} = 🧪 测试过程: 获取开屏广告语言列表 | 📡 请求接口: /v1/app/public/open-screen/list/lang | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:13.311682" elapsed="0.000205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.312097" level="INFO">🧪 测试过程: 获取开屏广告语言列表 | 📡 请求接口: /v1/app/public/open-screen/list/lang | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.311992" elapsed="0.000149"/>
</kw>
<arg>获取开屏广告语言列表</arg>
<arg>/v1/app/public/open-screen/list/lang</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:13.308646" elapsed="0.003546"/>
</kw>
<doc>验证开屏广告语言列表接口功能</doc>
<tag>app</tag>
<status status="PASS" start="2026-05-28T20:27:12.816373" elapsed="0.496002"/>
</test>
<doc>开屏广告语言列表接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:12.802230" elapsed="0.510586"/>
</suite>
<suite id="s1-s1-s8" name="Vajra District" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/app/vajra_district.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.318252" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:13.318039" elapsed="0.000246"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.318591" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:13.318376" elapsed="0.000271"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.318918" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.318769" elapsed="0.000234"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:13.318671" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:13.318354" elapsed="0.000707"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.319967" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.319650" elapsed="0.000366"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.320265" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.320402" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.320535" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.320665" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.320788" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:13.320086" elapsed="0.000754"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.321263" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.321028" elapsed="0.000283"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.321655" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.321434" elapsed="0.000267"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.321994" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.321812" elapsed="0.000218"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.322321" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.322131" elapsed="0.000226"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.322643" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.322454" elapsed="0.000225"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.322969" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.322777" elapsed="0.000230"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.323299" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.323105" elapsed="0.000231"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.323633" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.323433" elapsed="0.000238"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.323973" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:13.323776" elapsed="0.000233"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:13.320862" elapsed="0.003177"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324150" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324268" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324374" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324475" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324579" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324680" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324779" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324880" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.324980" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:13.324060" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:13.320069" elapsed="0.004971"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.325264" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.325119" elapsed="0.000186"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:13.325697" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:13.325443" elapsed="0.000393"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:13.319382" elapsed="0.006516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.326083" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:13.325993" elapsed="0.000128"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:13.317757" elapsed="0.008413"/>
</kw>
<test id="s1-s1-s8-t1" name="获取Vajra District列表" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.328387" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:13.327754" elapsed="0.000662"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:13.328998" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:13.328529" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:13.328511" elapsed="0.000561"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:13.329102" elapsed="0.000031"/>
</return>
<msg time="2026-05-28T20:27:13.329328" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:13.327039" elapsed="0.002326"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:13.329634" level="INFO">&amp;{params} = { version=new }</msg>
<var>&amp;{params}</var>
<arg>version=new</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:13.329467" elapsed="0.000191"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:14.191053" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/app/public/vajra-district/list?version=new 
 path_url=/v1/app/public/vajra-district/list?version=new 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:14.191492" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/app/public/vajra-district/list?version=new 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:14 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'api-method': 'GET', 'api-path': '/public/vajra-district/list', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'bbfbd520778d6101928763d5ed0238f0', 'X-Transparent': '00-bbfbd520778d6101928763d5ed0238f0-5d6747ead06eb6a7-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40950c4fd546-NRT'} 
 body={"code":0,"data":[{"sonList":[{"isNeedLogin":1,"nightIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/843f13a43d5d4ffa94c6fde1f41031b0.png","dayIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/4c7ecb8041d542cc82cbf7b314eeadb0.png","nameAll":{"kk":"Айналдыру","mn":"Хүрд","ru":"Рулетка","tw":"大轉盤","ko":"룰렛","pt":"Roleta","ms":"Putar","en":"Spinner","cn":"大转盘","pt_br":"Roleta","es":"Ruleta","vi":"Vòng quay","th":"วงล้อ","ja":"ルーレット","az":"Çarx","id":"Putar"},"newLabel":"Hot","name":"大转盘","link":"/battle/spinnerPhase3","id":144,"label":1},{"isNeedLogin":1,"nightIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/078f399b66dc4fddabedaa3e4172c174.png","dayIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/a5228050408740eda9d4d711b76bc7c2.png","nameAll":{"kk":"Жаппай сатып алу","mn":"Шуурхай худалдан авалт","ru":"Срочная покупка","tw":"貼息秒殺","ko":"선착순 구매","pt":"Compra Relâmpago","ms":"Belian Pantas","en":"Flash Sale","cn":"贴息秒杀","pt_br":"Compra Relâmpago","es":"Compra Rápida","vi":"Mua nhanh","th":"ซื้อด่วน","ja":"先着購入","az":"Tez Satın Alma","id":"Beli Cepat"},"newLabel":"","name":"贴息秒杀","link":"/battle/seckill?activityId=GSXOHU5OCDSV","id":142,"label":0},{"isNeedLogin":1,"nightIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/3b0e03486b88473fbeb562f64e5812fd.png","dayIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/de478a19a64a4e28b8b9aaf69d389d5a.png","nameAll":{"kk":"Қаржы Басқаруы","hi":"AI Trading","mn":"Санхүүгийн Удирдлага","hk":"AI Trading","ru":"Управление Финансами","tw":"AI理財","ko":"AI 자산관리","pt":"AI Invest","ms":"Pengurusan Kewangan","en":"AI Invest","cn":"AI智投","pt_br":"Investimento IA","fr":"AI Trading","es":"Gestión Financiera","vi":"Quản lý Tài chính","th":"การจัดการการเงิน","ja":"AI資産運用","az":"AI Maliyyə İdarəetməsi","id":"Manajemen Keuangan","pt ":"Gestão Financeira","tr":"AI Trading"},"newLabel":"","name":"AI智投","link":"noahex://app.com/noah/ai/home","id":131,"label":0},{"isNeedLogin":0,"nightIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/e10cc2d42ff047a0a549dd2f6bd8cc08.png","dayIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/9d7511d379b54de58829cdaf3007fb58.png","nameAll":{"kk":"BXC","mn":"BXC","ru":"BXC","tw":"BXC","ko":"BXC","pt":"BXC","ms":"BXC","en":"BXC","cn":"BXC","pt_br":"BXC","es":"BXC","vi":"BXC","th":"BXC","ja":"BXC","az":"BXC","id":"BXC"},"newLabel":"","name":"BXC","link":"/token/bxc","id":143,"label":0},{"isNeedLogin":1,"nightIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/c87b8b7f0bb94a66a217eb33a7516084.png","dayIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/e19e1022c5fe4f2c85869c469967fbe7.png","nameAll":{"kk":"Әрекет Орталығы","mn":"Үйл Ажиллагааны Төв","ru":"Центр деятельности","tw":"活動中心","ko":"이벤트 센터","pt":"Centro de Atividades","ms":"Pusat Aktiviti","en":"Event Perks","cn":"福利中心","pt_br":"Eventos","es":"Centro de Actividades","vi":"Trung tâm Hoạt động","th":"ศูนย์กิจกรรม","ja":"イベント","az":"Fəaliyyət Mərkəzi","id":"Pusat Kegiatan","pt ":"Activity Center"},"newLabel":"","name":"福利中心","link":"/activitycenter/home","id":136,"label":0},{"isNeedLogin":1,"nightIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/40367cc8c4c64177a7891c7ff2acc77e.png","dayIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/cb903a594503490194ba055b73717efa.png","nameAll":{"kk":"Шақыру","hi":"Invite","mn":"Урих","hk":"Invite","ru":"Звать","tw":"邀請","ko":"초대","pt":"Natal","ms":"Jemput","en":"Referral","cn":"邀请","pt_br":"convidar","fr":"Invite","es":"Invitar","vi":"Mời","th":"เชิญ","ja":"招待","az":"Dəvət","id":"Undang","pt ":"Convidar","tr":"Invite"},"newLabel":"","name":"邀请","link":"noahex://app.com/home/newInvitePage","id":129,"label":0},{"isNeedLogin":1,"nightIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/84207ecdd4f2462f87b2a07aea9c664d.png","dayIcon":"https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/60163d3913e243f093f3abd647868935.png","nameAll":{"kk":"BTX Card","ptbr":"Christmas","hi":"AI Trading","mn":"BTX Card","hk":"AI Trading","ru":"BTX Card","tw":"BTX Card","ko":"BTX 카드","pt":"BTX Card","ms":"BTX Card","en":"BTX Card","cn":"BTX Card","pt_br":"Cartão BTX","fr":"AI Trading","es":"BTX Card","vi":"BTX Card","th":"BTX Card","ja":"BTX Card","az":"BTX Card","id":"BTX Card","pt ":"BTX Card","tr":"AI Trading"},"newLabel":"","name":"BTX Card","link":"/btxCard/home","id":135,"label":0}]}],"msg":"Success.","msgInfo":{"template":"Success."},"ts":1779971234094} 
 </msg>
<msg time="2026-05-28T20:27:14.191928" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:14.192349" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:13.330197" elapsed="0.862215"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:14.192676" elapsed="0.000156"/>
</return>
<msg time="2026-05-28T20:27:14.193270" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/app/public/vajra-district/list</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=&amp;{headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:13.329791" elapsed="0.863535"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.196137" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:14.194876" elapsed="0.001401"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.197606" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.196541" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.198202" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.197912" elapsed="0.000384"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:14.193988" elapsed="0.004533"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.201168" level="INFO">${json_data} = {'code': 0, 'data': [{'sonList': [{'isNeedLogin': 1, 'nightIcon': 'https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/843f13a43d5d4ffa94c6fde1f41031b0.png', 'dayIcon': 'https://s...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.199594" elapsed="0.001635"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.201440" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.202709" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.202496" elapsed="0.000281"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:14.198889" elapsed="0.003979"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.204701" level="INFO">${json_data} = {'code': 0, 'data': [{'sonList': [{'isNeedLogin': 1, 'nightIcon': 'https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/843f13a43d5d4ffa94c6fde1f41031b0.png', 'dayIcon': 'https://s...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.203581" elapsed="0.001164"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.206113" level="INFO">${json_str} = {
  "code": 0,
  "data": [
    {
      "sonList": [
        {
          "isNeedLogin": 1,
          "nightIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/843f13a43d5d4...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:14.204939" elapsed="0.001209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.206535" level="INFO">{
  "code": 0,
  "data": [
    {
      "sonList": [
        {
          "isNeedLogin": 1,
          "nightIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/843f13a43d5d4ffa94c6fde1f41031b0.png",
          "dayIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/4c7ecb8041d542cc82cbf7b314eeadb0.png",
          "nameAll": {
            "kk": "Айналдыру",
            "mn": "Хүрд",
            "ru": "Рулетка",
            "tw": "大轉盤",
            "ko": "룰렛",
            "pt": "Roleta",
            "ms": "Putar",
            "en": "Spinner",
            "cn": "大转盘",
            "pt_br": "Roleta",
            "es": "Ruleta",
            "vi": "Vòng quay",
            "th": "วงล้อ",
            "ja": "ルーレット",
            "az": "Çarx",
            "id": "Putar"
          },
          "newLabel": "Hot",
          "name": "大转盘",
          "link": "/battle/spinnerPhase3",
          "id": 144,
          "label": 1
        },
        {
          "isNeedLogin": 1,
          "nightIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/078f399b66dc4fddabedaa3e4172c174.png",
          "dayIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/a5228050408740eda9d4d711b76bc7c2.png",
          "nameAll": {
            "kk": "Жаппай сатып алу",
            "mn": "Шуурхай худалдан авалт",
            "ru": "Срочная покупка",
            "tw": "貼息秒殺",
            "ko": "선착순 구매",
            "pt": "Compra Relâmpago",
            "ms": "Belian Pantas",
            "en": "Flash Sale",
            "cn": "贴息秒杀",
            "pt_br": "Compra Relâmpago",
            "es": "Compra Rápida",
            "vi": "Mua nhanh",
            "th": "ซื้อด่วน",
            "ja": "先着購入",
            "az": "Tez Satın Alma",
            "id": "Beli Cepat"
          },
          "newLabel": "",
          "name": "贴息秒杀",
          "link": "/battle/seckill?activityId=GSXOHU5OCDSV",
          "id": 142,
          "label": 0
        },
        {
          "isNeedLogin": 1,
          "nightIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/3b0e03486b88473fbeb562f64e5812fd.png",
          "dayIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/de478a19a64a4e28b8b9aaf69d389d5a.png",
          "nameAll": {
            "kk": "Қаржы Басқаруы",
            "hi": "AI Trading",
            "mn": "Санхүүгийн Удирдлага",
            "hk": "AI Trading",
            "ru": "Управление Финансами",
            "tw": "AI理財",
            "ko": "AI 자산관리",
            "pt": "AI Invest",
            "ms": "Pengurusan Kewangan",
            "en": "AI Invest",
            "cn": "AI智投",
            "pt_br": "Investimento IA",
            "fr": "AI Trading",
            "es": "Gestión Financiera",
            "vi": "Quản lý Tài chính",
            "th": "การจัดการการเงิน",
            "ja": "AI資産運用",
            "az": "AI Maliyyə İdarəetməsi",
            "id": "Manajemen Keuangan",
            "pt ": "Gestão Financeira",
            "tr": "AI Trading"
          },
          "newLabel": "",
          "name": "AI智投",
          "link": "noahex://app.com/noah/ai/home",
          "id": 131,
          "label": 0
        },
        {
          "isNeedLogin": 0,
          "nightIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/e10cc2d42ff047a0a549dd2f6bd8cc08.png",
          "dayIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/9d7511d379b54de58829cdaf3007fb58.png",
          "nameAll": {
            "kk": "BXC",
            "mn": "BXC",
            "ru": "BXC",
            "tw": "BXC",
            "ko": "BXC",
            "pt": "BXC",
            "ms": "BXC",
            "en": "BXC",
            "cn": "BXC",
            "pt_br": "BXC",
            "es": "BXC",
            "vi": "BXC",
            "th": "BXC",
            "ja": "BXC",
            "az": "BXC",
            "id": "BXC"
          },
          "newLabel": "",
          "name": "BXC",
          "link": "/token/bxc",
          "id": 143,
          "label": 0
        },
        {
          "isNeedLogin": 1,
          "nightIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/c87b8b7f0bb94a66a217eb33a7516084.png",
          "dayIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/e19e1022c5fe4f2c85869c469967fbe7.png",
          "nameAll": {
            "kk": "Әрекет Орталығы",
            "mn": "Үйл Ажиллагааны Төв",
            "ru": "Центр деятельности",
            "tw": "活動中心",
            "ko": "이벤트 센터",
            "pt": "Centro de Atividades",
            "ms": "Pusat Aktiviti",
            "en": "Event Perks",
            "cn": "福利中心",
            "pt_br": "Eventos",
            "es": "Centro de Actividades",
            "vi": "Trung tâm Hoạt động",
            "th": "ศูนย์กิจกรรม",
            "ja": "イベント",
            "az": "Fəaliyyət Mərkəzi",
            "id": "Pusat Kegiatan",
            "pt ": "Activity Center"
          },
          "newLabel": "",
          "name": "福利中心",
          "link": "/activitycenter/home",
          "id": 136,
          "label": 0
        },
        {
          "isNeedLogin": 1,
          "nightIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/40367cc8c4c64177a7891c7ff2acc77e.png",
          "dayIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/cb903a594503490194ba055b73717efa.png",
          "nameAll": {
            "kk": "Шақыру",
            "hi": "Invite",
            "mn": "Урих",
            "hk": "Invite",
            "ru": "Звать",
            "tw": "邀請",
            "ko": "초대",
            "pt": "Natal",
            "ms": "Jemput",
            "en": "Referral",
            "cn": "邀请",
            "pt_br": "convidar",
            "fr": "Invite",
            "es": "Invitar",
            "vi": "Mời",
            "th": "เชิญ",
            "ja": "招待",
            "az": "Dəvət",
            "id": "Undang",
            "pt ": "Convidar",
            "tr": "Invite"
          },
          "newLabel": "",
          "name": "邀请",
          "link": "noahex://app.com/home/newInvitePage",
          "id": 129,
          "label": 0
        },
        {
          "isNeedLogin": 1,
          "nightIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/84207ecdd4f2462f87b2a07aea9c664d.png",
          "dayIcon": "https://static.bitradex.mobi/c4ca4238a0b923820dcc509a6f75849b/public/app/60163d3913e243f093f3abd647868935.png",
          "nameAll": {
            "kk": "BTX Card",
            "ptbr": "Christmas",
            "hi": "AI Trading",
            "mn": "BTX Card",
            "hk": "AI Trading",
            "ru": "BTX Card",
            "tw": "BTX Card",
            "ko": "BTX 카드",
            "pt": "BTX Card",
            "ms": "BTX Card",
            "en": "BTX Card",
            "cn": "BTX Card",
            "pt_br": "Cartão BTX",
            "fr": "AI Trading",
            "es": "BTX Card",
            "vi": "BTX Card",
            "th": "BTX Card",
            "ja": "BTX Card",
            "az": "BTX Card",
            "id": "BTX Card",
            "pt ": "BTX Card",
            "tr": "AI Trading"
          },
          "newLabel": "",
          "name": "BTX Card",
          "link": "/btxCard/home",
          "id": 135,
          "label": 0
        }
      ]
    }
  ],
  "msg": "Success.",
  "msgInfo": {
    "template": "Success."
  },
  "ts": 1779971234094
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.206294" elapsed="0.000558"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:14.203131" elapsed="0.003823"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.208210" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.207582" elapsed="0.000660"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:14.208629" elapsed="0.000637"/>
</kw>
<msg time="2026-05-28T20:27:14.209360" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:14.208412" elapsed="0.000972"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.209674" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.209520" elapsed="0.000179"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.210049" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.209829" elapsed="0.000245"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.210370" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.210200" elapsed="0.000195"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.210797" level="INFO">${summary_content} = 🧪 测试过程: 获取Vajra District列表 | 📡 请求接口: /v1/app/public/vajra-district/list | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.210520" elapsed="0.000309"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.211171" level="INFO">${final_summary} = 🧪 测试过程: 获取Vajra District列表 | 📡 请求接口: /v1/app/public/vajra-district/list | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.210948" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.211443" level="INFO">🧪 测试过程: 获取Vajra District列表 | 📡 请求接口: /v1/app/public/vajra-district/list | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.211320" elapsed="0.000169"/>
</kw>
<arg>获取Vajra District列表</arg>
<arg>/v1/app/public/vajra-district/list</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:14.207185" elapsed="0.004360"/>
</kw>
<doc>验证Vajra District列表接口功能</doc>
<tag>app</tag>
<status status="PASS" start="2026-05-28T20:27:13.326226" elapsed="0.885526"/>
</test>
<doc>Vajra District 接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:13.313867" elapsed="0.898377"/>
</suite>
<status status="PASS" start="2026-05-28T20:27:09.318414" elapsed="4.894974"/>
</suite>
<suite id="s1-s2" name="Future-U" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u">
<suite id="s1-s2-s1" name="Market" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/market">
<suite id="s1-s2-s1-s1" name="Future U Symbol Detail" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/market/future_u_symbol_detail.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.221773" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:14.221541" elapsed="0.000268"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.222149" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.221915" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.222483" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.222336" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:14.222233" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:14.221889" elapsed="0.000685"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.223201" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.223081" elapsed="0.000159"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.223448" elapsed="0.000030"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.223575" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.223681" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.223786" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.223897" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.223297" elapsed="0.000647"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.224362" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.224143" elapsed="0.000258"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.224699" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.224501" elapsed="0.000234"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.225031" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.224839" elapsed="0.000229"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.225367" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.225165" elapsed="0.000241"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.225701" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.225504" elapsed="0.000232"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.226034" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.225835" elapsed="0.000242"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.226386" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.226176" elapsed="0.000247"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.226725" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.226521" elapsed="0.000240"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.227076" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.226863" elapsed="0.000249"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:14.223995" elapsed="0.003151"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.227258" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.227372" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.227481" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.227587" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.227690" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.227792" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.227894" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.227995" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.228094" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.227167" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:14.223283" elapsed="0.004871"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.228376" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.228232" elapsed="0.000184"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:14.228791" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:14.228514" elapsed="0.000450"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:14.222839" elapsed="0.006187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.229206" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.229123" elapsed="0.000122"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:14.221255" elapsed="0.008041"/>
</kw>
<test id="s1-s2-s1-s1-t1" name="获取期货U本位交易对详情" line="7">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.230830" level="INFO">&amp;{params} = { symbol=btc_usdt }</msg>
<var>&amp;{params}</var>
<arg>symbol=btc_usdt</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.230636" elapsed="0.000219"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.232322" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.231680" elapsed="0.000665"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.232881" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.232465" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:14.232450" elapsed="0.000497"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:14.232977" elapsed="0.000028"/>
</return>
<msg time="2026-05-28T20:27:14.233145" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:14.231034" elapsed="0.002132"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:14.651214" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/symbol/detail?symbol=btc_usdt 
 path_url=/v1/future-u/market/public/symbol/detail?symbol=btc_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:14.651588" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/symbol/detail?symbol=btc_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:14 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '43379d6d4af64c66e62c762fea028593', 'X-Transparent': '00-43379d6d4af64c66e62c762fea028593-a3d22ef2fd17b1d5-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40986ddaeacd-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"id":1,"symbol":"btc_usdt","symbolGroupId":1,"pair":"btc_usdt","contractType":"PERPETUAL","productType":"perpetual","predictEventType":null,"predictEventParam":null,"predictEventSort":null,"underlyingType":"U_BASED","contractSize":"0.0001","tradeSwitch":true,"openSwitch":true,"isDisplay":true,"isOpenApi":true,"state":0,"initLeverage":20,"initPositionType":"CROSSED","baseCoin":"btc","quoteCoin":"usdt","baseCoinPrecision":8,"baseCoinDisplayPrecision":4,"quoteCoinPrecision":8,"quoteCoinDisplayPrecision":4,"quantityPrecision":0,"pricePrecision":1,"supportOrderType":"LIMIT,MARKET","supportTimeInForce":"GTC,FOK,IOC,GTX","supportEntrustType":"TAKE_PROFIT,STOP,TAKE_PROFIT_MARKET,STOP_MARKET,TRAILING_STOP_MARKET","supportPositionType":"CROSSED,ISOLATED","minQty":"1","minNotional":"10","maxNotional":"25000000","multiplierDown":"0.5","multiplierUp":"0.5","maxOpenOrders":200,"maxEntrusts":200,"makerFee":"0.0002","takerFee":"0.00065","liquidationFee":"0.0125","marketTakeBound":"0.03","depthPrecisionMerge":6,"labels":["HOT","NEW"],"onboardDate":1651327201000,"enName":"BTCUSDT","cnName":"BTCUSDT ","minStepPrice":"0.1","minPrice":null,"maxPrice":null,"deliveryDate":1667819989000,"deliveryPrice":null,"deliveryCompletion":false,"cnDesc":"","enDesc":"","cnRemark":null,"enRemark":null,"plates":[1]},"ts":1779971234630} 
 </msg>
<msg time="2026-05-28T20:27:14.651796" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:14.652205" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:14.233612" elapsed="0.418656"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:14.652492" elapsed="0.000120"/>
</return>
<msg time="2026-05-28T20:27:14.653006" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/symbol/detail</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:14.233281" elapsed="0.419784"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.655736" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:14.654521" elapsed="0.001366"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.657276" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.656186" elapsed="0.001143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.657889" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.657595" elapsed="0.000387"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:14.653640" elapsed="0.004465"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.660360" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': None, 'data': {'id': 1, 'symbol': 'btc_usdt', 'symbolGroupId': 1, 'pair': 'btc_usdt', 'contractType': 'PERPETUAL', 'productType': 'perpetual', 'predictEventTyp...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.659100" elapsed="0.001323"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.660672" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.661623" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.661394" elapsed="0.000294"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:14.658460" elapsed="0.003313"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.663319" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': None, 'data': {'id': 1, 'symbol': 'btc_usdt', 'symbolGroupId': 1, 'pair': 'btc_usdt', 'contractType': 'PERPETUAL', 'productType': 'perpetual', 'predictEventTyp...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.662438" elapsed="0.000924"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.664397" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": null,
  "data": {
    "id": 1,
    "symbol": "btc_usdt",
    "symbolGroupId": 1,
    "pair": "btc_usdt",
    "contractType": "PERPETUAL",
    "productTy...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:14.663547" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.664884" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": null,
  "data": {
    "id": 1,
    "symbol": "btc_usdt",
    "symbolGroupId": 1,
    "pair": "btc_usdt",
    "contractType": "PERPETUAL",
    "productType": "perpetual",
    "predictEventType": null,
    "predictEventParam": null,
    "predictEventSort": null,
    "underlyingType": "U_BASED",
    "contractSize": "0.0001",
    "tradeSwitch": true,
    "openSwitch": true,
    "isDisplay": true,
    "isOpenApi": true,
    "state": 0,
    "initLeverage": 20,
    "initPositionType": "CROSSED",
    "baseCoin": "btc",
    "quoteCoin": "usdt",
    "baseCoinPrecision": 8,
    "baseCoinDisplayPrecision": 4,
    "quoteCoinPrecision": 8,
    "quoteCoinDisplayPrecision": 4,
    "quantityPrecision": 0,
    "pricePrecision": 1,
    "supportOrderType": "LIMIT,MARKET",
    "supportTimeInForce": "GTC,FOK,IOC,GTX",
    "supportEntrustType": "TAKE_PROFIT,STOP,TAKE_PROFIT_MARKET,STOP_MARKET,TRAILING_STOP_MARKET",
    "supportPositionType": "CROSSED,ISOLATED",
    "minQty": "1",
    "minNotional": "10",
    "maxNotional": "25000000",
    "multiplierDown": "0.5",
    "multiplierUp": "0.5",
    "maxOpenOrders": 200,
    "maxEntrusts": 200,
    "makerFee": "0.0002",
    "takerFee": "0.00065",
    "liquidationFee": "0.0125",
    "marketTakeBound": "0.03",
    "depthPrecisionMerge": 6,
    "labels": [
      "HOT",
      "NEW"
    ],
    "onboardDate": 1651327201000,
    "enName": "BTCUSDT",
    "cnName": "BTCUSDT ",
    "minStepPrice": "0.1",
    "minPrice": null,
    "maxPrice": null,
    "deliveryDate": 1667819989000,
    "deliveryPrice": null,
    "deliveryCompletion": false,
    "cnDesc": "",
    "enDesc": "",
    "cnRemark": null,
    "enRemark": null,
    "plates": [
      1
    ]
  },
  "ts": 1779971234630
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.664614" elapsed="0.000416"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:14.662013" elapsed="0.003111"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:14.666128" level="INFO">${data} = {'id': 1, 'symbol': 'btc_usdt', 'symbolGroupId': 1, 'pair': 'btc_usdt', 'contractType': 'PERPETUAL', 'productType': 'perpetual', 'predictEventType': None, 'predictEventParam': None, 'predictEventSort'...</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.665309" elapsed="0.000853"/>
</kw>
<kw name="Should Not Be Equal" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.666533" level="INFO">Argument types are:
&lt;class 'dict'&gt;
&lt;class 'NoneType'&gt;</msg>
<arg>${data}</arg>
<arg>${None}</arg>
<arg>响应数据不应该为空</arg>
<doc>Fails if the given objects are equal.</doc>
<status status="PASS" start="2026-05-28T20:27:14.666310" elapsed="0.000290"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.666750" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, list)</arg>
<arg>验证期货交易对详情列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.667247" elapsed="0.000212"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证期货交易对详情项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($symbol_detail, dict)</arg>
<arg>交易对详情项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.668494" elapsed="0.000601"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${symbol_detail}</arg>
<arg>symbol</arg>
<arg>交易对详情应包含symbol字段</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.669232" elapsed="0.000206"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:14.669765" level="INFO">${symbol} = btc_usdt</msg>
<var>${symbol}</var>
<arg>${symbol_detail}</arg>
<arg>symbol</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.669573" elapsed="0.000226"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:14.670238" elapsed="0.000165"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.670680" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:14.670522" elapsed="0.000202"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:14.670839" elapsed="0.000475"/>
</kw>
<arg>${symbol}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:14.669972" elapsed="0.001414"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'baseAsset' in $symbol_detail</arg>
<arg>验证基础资产</arg>
<arg>${symbol_detail['baseAsset']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.671508" elapsed="0.000176"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'quoteAsset' in $symbol_detail</arg>
<arg>验证计价资产</arg>
<arg>${symbol_detail['quoteAsset']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.671806" elapsed="0.000146"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'status' in $symbol_detail</arg>
<arg>验证交易对状态</arg>
<arg>${symbol_detail['status']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.672113" elapsed="0.000145"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'baseAssetPrecision' in $symbol_detail</arg>
<arg>验证基础资产精度</arg>
<arg>${symbol_detail['baseAssetPrecision']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.672376" elapsed="0.000139"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'quotePrecision' in $symbol_detail</arg>
<arg>验证计价精度</arg>
<arg>${symbol_detail['quotePrecision']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.672634" elapsed="0.000142"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'orderTypes' in $symbol_detail</arg>
<arg>验证订单类型</arg>
<arg>${symbol_detail['orderTypes']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.672902" elapsed="0.000142"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'icebergAllowed' in $symbol_detail</arg>
<arg>验证冰山订单允许</arg>
<arg>${symbol_detail['icebergAllowed']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.673158" elapsed="0.000143"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'ocoAllowed' in $symbol_detail</arg>
<arg>验证OCO订单允许</arg>
<arg>${symbol_detail['ocoAllowed']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.673422" elapsed="0.000141"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'isSpotTradingAllowed' in $symbol_detail</arg>
<arg>验证现货交易允许</arg>
<arg>${symbol_detail['isSpotTradingAllowed']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.673684" elapsed="0.000142"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'isMarginTradingAllowed' in $symbol_detail</arg>
<arg>验证保证金交易允许</arg>
<arg>${symbol_detail['isMarginTradingAllowed']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.673940" elapsed="0.000141"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'filters' in $symbol_detail</arg>
<arg>验证过滤器</arg>
<arg>${symbol_detail['filters']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.674203" elapsed="0.000123"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'permissions' in $symbol_detail</arg>
<arg>验证权限</arg>
<arg>${symbol_detail['permissions']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.674425" elapsed="0.000128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.674773" level="INFO">✅ 期货交易对详情项验证通过: btc_usdt</msg>
<arg>✅ 期货交易对详情项验证通过: ${symbol}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.674651" elapsed="0.000162"/>
</kw>
<arg>${data}</arg>
<doc>验证单个期货交易对详情项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:14.668143" elapsed="0.006719"/>
</kw>
<arg>isinstance($data, dict)</arg>
<arg>验证期货交易对详情项结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.667609" elapsed="0.007304"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.675839" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.675383" elapsed="0.000480"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:14.676121" elapsed="0.000462"/>
</kw>
<msg time="2026-05-28T20:27:14.676659" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:14.675974" elapsed="0.000705"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.676938" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.676801" elapsed="0.000160"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.677256" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.677081" elapsed="0.000200"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.677536" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.677388" elapsed="0.000170"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.677910" level="INFO">${summary_content} = 🧪 测试过程: 获取期货U本位交易对详情 | 📡 请求接口: /v1/future-u/market/public/symbol/detail | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.677659" elapsed="0.000279"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.678233" level="INFO">${final_summary} = 🧪 测试过程: 获取期货U本位交易对详情 | 📡 请求接口: /v1/future-u/market/public/symbol/detail | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.678047" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.678441" level="INFO">🧪 测试过程: 获取期货U本位交易对详情 | 📡 请求接口: /v1/future-u/market/public/symbol/detail | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.678354" elapsed="0.000121"/>
</kw>
<arg>获取期货U本位交易对详情</arg>
<arg>/v1/future-u/market/public/symbol/detail</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:14.675098" elapsed="0.003449"/>
</kw>
<doc>验证期货U本位交易对详情接口功能</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:14.229364" elapsed="0.449353"/>
</test>
<test id="s1-s2-s1-s1-t2" name="获取期货U本位其他交易对详情" line="35">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.680635" level="INFO">&amp;{params} = { symbol=eth_usdt }</msg>
<var>&amp;{params}</var>
<arg>symbol=eth_usdt</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.680414" elapsed="0.000242"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.682064" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.681503" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.682876" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.682236" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:14.682197" elapsed="0.000784"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:14.683022" elapsed="0.000035"/>
</return>
<msg time="2026-05-28T20:27:14.683272" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:14.680858" elapsed="0.002445"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:14.814212" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/symbol/detail?symbol=eth_usdt 
 path_url=/v1/future-u/market/public/symbol/detail?symbol=eth_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:14.814547" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/symbol/detail?symbol=eth_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:14 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'e471eed0c35515a0fbab09b8fd5b4d90', 'X-Transparent': '00-e471eed0c35515a0fbab09b8fd5b4d90-f4da9cbeb151a776-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d409969c7eacd-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"id":2,"symbol":"eth_usdt","symbolGroupId":2,"pair":"eth_usdt","contractType":"PERPETUAL","productType":"perpetual","predictEventType":null,"predictEventParam":null,"predictEventSort":null,"underlyingType":"U_BASED","contractSize":"0.01","tradeSwitch":true,"openSwitch":true,"isDisplay":true,"isOpenApi":false,"state":0,"initLeverage":20,"initPositionType":"CROSSED","baseCoin":"eth","quoteCoin":"usdt","baseCoinPrecision":8,"baseCoinDisplayPrecision":4,"quoteCoinPrecision":8,"quoteCoinDisplayPrecision":4,"quantityPrecision":0,"pricePrecision":2,"supportOrderType":"LIMIT,MARKET","supportTimeInForce":"GTC,FOK,IOC,GTX","supportEntrustType":"TAKE_PROFIT,STOP,TAKE_PROFIT_MARKET,STOP_MARKET,TRAILING_STOP_MARKET","supportPositionType":"CROSSED,ISOLATED","minQty":"2","minNotional":"5","maxNotional":"25000000","multiplierDown":"0.05","multiplierUp":"0.05","maxOpenOrders":200,"maxEntrusts":120,"makerFee":"0.0002","takerFee":"0.0065","liquidationFee":"0.0125","marketTakeBound":"0.03","depthPrecisionMerge":5,"labels":["NEW","HOT"],"onboardDate":1651327319000,"enName":"ETHUSDT","cnName":"ETHUSDT ","minStepPrice":"0.01","minPrice":null,"maxPrice":null,"deliveryDate":null,"deliveryPrice":null,"deliveryCompletion":false,"cnDesc":"","enDesc":"","cnRemark":null,"enRemark":null,"plates":[2,1]},"ts":1779971234793} 
 </msg>
<msg time="2026-05-28T20:27:14.814727" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:14.815062" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:14.683966" elapsed="0.131158"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:14.815321" elapsed="0.000115"/>
</return>
<msg time="2026-05-28T20:27:14.815814" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/symbol/detail</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:14.683479" elapsed="0.132392"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.818349" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:14.817192" elapsed="0.001294"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.819891" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.818740" elapsed="0.001204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.820465" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.820184" elapsed="0.000976"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:14.816371" elapsed="0.004913"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.823474" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': None, 'data': {'id': 2, 'symbol': 'eth_usdt', 'symbolGroupId': 2, 'pair': 'eth_usdt', 'contractType': 'PERPETUAL', 'productType': 'perpetual', 'predictEventTyp...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.822267" elapsed="0.001268"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.823772" elapsed="0.000376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.824583" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.824374" elapsed="0.000276"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:14.821621" elapsed="0.003114"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.826234" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': None, 'data': {'id': 2, 'symbol': 'eth_usdt', 'symbolGroupId': 2, 'pair': 'eth_usdt', 'contractType': 'PERPETUAL', 'productType': 'perpetual', 'predictEventTyp...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.825392" elapsed="0.000888"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.827224" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": null,
  "data": {
    "id": 2,
    "symbol": "eth_usdt",
    "symbolGroupId": 2,
    "pair": "eth_usdt",
    "contractType": "PERPETUAL",
    "productTy...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:14.826475" elapsed="0.000791"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.827707" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": null,
  "data": {
    "id": 2,
    "symbol": "eth_usdt",
    "symbolGroupId": 2,
    "pair": "eth_usdt",
    "contractType": "PERPETUAL",
    "productType": "perpetual",
    "predictEventType": null,
    "predictEventParam": null,
    "predictEventSort": null,
    "underlyingType": "U_BASED",
    "contractSize": "0.01",
    "tradeSwitch": true,
    "openSwitch": true,
    "isDisplay": true,
    "isOpenApi": false,
    "state": 0,
    "initLeverage": 20,
    "initPositionType": "CROSSED",
    "baseCoin": "eth",
    "quoteCoin": "usdt",
    "baseCoinPrecision": 8,
    "baseCoinDisplayPrecision": 4,
    "quoteCoinPrecision": 8,
    "quoteCoinDisplayPrecision": 4,
    "quantityPrecision": 0,
    "pricePrecision": 2,
    "supportOrderType": "LIMIT,MARKET",
    "supportTimeInForce": "GTC,FOK,IOC,GTX",
    "supportEntrustType": "TAKE_PROFIT,STOP,TAKE_PROFIT_MARKET,STOP_MARKET,TRAILING_STOP_MARKET",
    "supportPositionType": "CROSSED,ISOLATED",
    "minQty": "2",
    "minNotional": "5",
    "maxNotional": "25000000",
    "multiplierDown": "0.05",
    "multiplierUp": "0.05",
    "maxOpenOrders": 200,
    "maxEntrusts": 120,
    "makerFee": "0.0002",
    "takerFee": "0.0065",
    "liquidationFee": "0.0125",
    "marketTakeBound": "0.03",
    "depthPrecisionMerge": 5,
    "labels": [
      "NEW",
      "HOT"
    ],
    "onboardDate": 1651327319000,
    "enName": "ETHUSDT",
    "cnName": "ETHUSDT ",
    "minStepPrice": "0.01",
    "minPrice": null,
    "maxPrice": null,
    "deliveryDate": null,
    "deliveryPrice": null,
    "deliveryCompletion": false,
    "cnDesc": "",
    "enDesc": "",
    "cnRemark": null,
    "enRemark": null,
    "plates": [
      2,
      1
    ]
  },
  "ts": 1779971234793
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.827444" elapsed="0.000417"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:14.824981" elapsed="0.003011"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:14.829044" level="INFO">${data} = {'id': 2, 'symbol': 'eth_usdt', 'symbolGroupId': 2, 'pair': 'eth_usdt', 'contractType': 'PERPETUAL', 'productType': 'perpetual', 'predictEventType': None, 'predictEventParam': None, 'predictEventSort'...</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.828179" elapsed="0.000900"/>
</kw>
<kw name="Should Not Be Equal" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.829442" level="INFO">Argument types are:
&lt;class 'dict'&gt;
&lt;class 'NoneType'&gt;</msg>
<arg>${data}</arg>
<arg>${None}</arg>
<arg>响应数据不应该为空</arg>
<doc>Fails if the given objects are equal.</doc>
<status status="PASS" start="2026-05-28T20:27:14.829223" elapsed="0.000281"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.829651" elapsed="0.000311"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, list)</arg>
<arg>验证期货交易对详情列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.830129" elapsed="0.000207"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证期货交易对详情项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($symbol_detail, dict)</arg>
<arg>交易对详情项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.831277" elapsed="0.000262"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${symbol_detail}</arg>
<arg>symbol</arg>
<arg>交易对详情应包含symbol字段</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.831675" elapsed="0.000208"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:14.832223" level="INFO">${symbol} = eth_usdt</msg>
<var>${symbol}</var>
<arg>${symbol_detail}</arg>
<arg>symbol</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.832020" elapsed="0.000236"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:14.832789" elapsed="0.000174"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.833300" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:14.833145" elapsed="0.000198"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:14.833460" elapsed="0.000166"/>
</kw>
<arg>${symbol}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:14.832445" elapsed="0.001246"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'baseAsset' in $symbol_detail</arg>
<arg>验证基础资产</arg>
<arg>${symbol_detail['baseAsset']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.833819" elapsed="0.000173"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'quoteAsset' in $symbol_detail</arg>
<arg>验证计价资产</arg>
<arg>${symbol_detail['quoteAsset']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.834112" elapsed="0.000143"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'status' in $symbol_detail</arg>
<arg>验证交易对状态</arg>
<arg>${symbol_detail['status']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.834380" elapsed="0.000143"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'baseAssetPrecision' in $symbol_detail</arg>
<arg>验证基础资产精度</arg>
<arg>${symbol_detail['baseAssetPrecision']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.834648" elapsed="0.000140"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'quotePrecision' in $symbol_detail</arg>
<arg>验证计价精度</arg>
<arg>${symbol_detail['quotePrecision']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.834917" elapsed="0.000153"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'orderTypes' in $symbol_detail</arg>
<arg>验证订单类型</arg>
<arg>${symbol_detail['orderTypes']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.835186" elapsed="0.000137"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'icebergAllowed' in $symbol_detail</arg>
<arg>验证冰山订单允许</arg>
<arg>${symbol_detail['icebergAllowed']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.835441" elapsed="0.000145"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'ocoAllowed' in $symbol_detail</arg>
<arg>验证OCO订单允许</arg>
<arg>${symbol_detail['ocoAllowed']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.835702" elapsed="0.000145"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'isSpotTradingAllowed' in $symbol_detail</arg>
<arg>验证现货交易允许</arg>
<arg>${symbol_detail['isSpotTradingAllowed']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.835966" elapsed="0.000145"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'isMarginTradingAllowed' in $symbol_detail</arg>
<arg>验证保证金交易允许</arg>
<arg>${symbol_detail['isMarginTradingAllowed']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.836231" elapsed="0.000138"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'filters' in $symbol_detail</arg>
<arg>验证过滤器</arg>
<arg>${symbol_detail['filters']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.836485" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'permissions' in $symbol_detail</arg>
<arg>验证权限</arg>
<arg>${symbol_detail['permissions']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.836734" elapsed="0.000136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.837117" level="INFO">✅ 期货交易对详情项验证通过: eth_usdt</msg>
<arg>✅ 期货交易对详情项验证通过: ${symbol}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.836980" elapsed="0.000180"/>
</kw>
<arg>${data}</arg>
<doc>验证单个期货交易对详情项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:14.830909" elapsed="0.006308"/>
</kw>
<arg>isinstance($data, dict)</arg>
<arg>验证期货交易对详情项结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:14.830480" elapsed="0.006789"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.838233" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.837774" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:14.838654" elapsed="0.000454"/>
</kw>
<msg time="2026-05-28T20:27:14.839186" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:14.838369" elapsed="0.000838"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.839467" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.839323" elapsed="0.000166"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.839775" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.839601" elapsed="0.000196"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.840050" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.839904" elapsed="0.000168"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.840413" level="INFO">${summary_content} = 🧪 测试过程: 获取期货U本位其他交易对详情 | 📡 请求接口: /v1/future-u/market/public/symbol/detail | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:14.840168" elapsed="0.000304"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.840749" level="INFO">${final_summary} = 🧪 测试过程: 获取期货U本位其他交易对详情 | 📡 请求接口: /v1/future-u/market/public/symbol/detail | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:14.840572" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.840976" level="INFO">🧪 测试过程: 获取期货U本位其他交易对详情 | 📡 请求接口: /v1/future-u/market/public/symbol/detail | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.840876" elapsed="0.000138"/>
</kw>
<arg>获取期货U本位其他交易对详情</arg>
<arg>/v1/future-u/market/public/symbol/detail</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:14.837464" elapsed="0.003598"/>
</kw>
<doc>验证期货U本位其他交易对详情接口功能</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:14.678977" elapsed="0.162268"/>
</test>
<doc>期货U本位交易对详情接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:14.216853" elapsed="0.624824"/>
</suite>
<status status="PASS" start="2026-05-28T20:27:14.215858" elapsed="0.627342"/>
</suite>
<suite id="s1-s2-s2" name="Q" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/q">
<suite id="s1-s2-s2-s1" name="Future U Depth" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/q/future_u_depth.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.849361" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:14.849137" elapsed="0.000257"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.849696" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.849482" elapsed="0.000274"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.850037" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.849885" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:14.849784" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:14.849458" elapsed="0.000827"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.850932" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.850817" elapsed="0.000161"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.851184" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.851304" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.851411" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.851514" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.851621" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.851035" elapsed="0.000630"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.852036" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.851836" elapsed="0.000246"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.852374" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.852182" elapsed="0.000229"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.852709" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.852517" elapsed="0.000229"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.853045" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.852843" elapsed="0.000237"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.853375" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.853180" elapsed="0.000230"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.853707" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.853507" elapsed="0.000235"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.854063" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.853840" elapsed="0.000258"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.854430" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.854199" elapsed="0.000270"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.854782" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:14.854570" elapsed="0.000257"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:14.851688" elapsed="0.003171"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.854970" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.855079" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.855192" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.855296" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.855384" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.855474" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.855560" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.855647" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.855734" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.854879" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:14.851020" elapsed="0.004767"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.855983" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.855858" elapsed="0.000160"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:14.856340" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:14.856111" elapsed="0.000366"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:14.850589" elapsed="0.005941"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.856686" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:14.856617" elapsed="0.000102"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:14.848885" elapsed="0.007875"/>
</kw>
<test id="s1-s2-s2-s1-t1" name="获取期货U本位深度数据_BTC" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:14.859104" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:14.858555" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:14.859645" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:14.859223" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:14.859209" elapsed="0.000501"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:14.859737" elapsed="0.000029"/>
</return>
<msg time="2026-05-28T20:27:14.859905" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:14.857928" elapsed="0.001997"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:15.280501" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=btc_usdt&amp;level=100 
 path_url=/v1/future-u/market/public/q/depth?symbol=btc_usdt&amp;level=100 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:15.280959" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=btc_usdt&amp;level=100 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:15 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '349c8d04861371470ca1b6858e8e61fb', 'X-Transparent': '00-349c8d04861371470ca1b6858e8e61fb-a66651672d747b45-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d409c5ac3756c-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"t":1779971235262,"s":"btc_usdt","u":1452600958535,"b":[["73279.4","21784"],["73279.3","23700"],["73279","32444"],["73278.9","27852"],["73278.6","26960"],["73278.5","20980"],["73278.4","5525"],["73278.2","147940"],["73278","1762"],["73277.9","172180"],["73277.8","155460"],["73277.5","37644"],["73277.4","22680"],["73277.3","11692"],["73276.8","3133"],["73275.9","31813"],["73275.7","34322"],["73274.5","27256"],["73274.4","4013"],["73274.1","13186"],["73273.7","18982"],["73272.9","4958"],["73272","2173"],["73271.9","10369"],["73269.8","20491"],["73269.7","3278"],["73269.1","26708"],["73268.6","22858"],["73267","2602"],["73266.9","2007"],["73265.1","3200"],["73264.7","3388"],["73264","28648"],["73262.7","9320"],["73262.1","4465"],["73261.4","25271"],["73260.2","22134"],["73260","3485"],["73258.3","17301"],["73257.8","25406"],["73257.2","3106"],["73255.6","5402"],["73255.2","16393"],["73254.5","22227"],["73253.4","4552"],["73252.9","30106"],["73252.4","19690"],["73248.2","5318"],["73246.6","5117"],["73244.6","5230"],["73241.9","1590"],["73241.2","27076"],["73241","28075"],["73240","21272"],["73239.5","3606"],["73237","4074"],["73236.6","2523"],["73234.9","5643"],["73233.7","16360"],["73233.3","3946"],["73232.4","5917"],["73232.1","3046"],["73230.5","25411"],["73229","4052"],["73227","5310"],["73223.6","3848"],["73221.6","21340"],["73217.9","24504"],["73216.8","3460"],["73216","59683"],["73215.4","3109"],["73214.7","3109"],["73213.5","4523"],["73212.7","3338"],["73212.5","2963"],["73211.5","2611"],["73207.5","3153"],["73205.5","4065"],["73203.6","2987"],["73203.5","39194"],["73202.7","4640"],["73201.1","17635"],["73200.9","3063"],["73197.3","3984"],["73192.1","3870"],["73190.1","4460"],["73188.6","4017"],["73185.4","17500"],["73184.2","4054"],["73184.1","3422"],["73182.8","17468"],["73181","3321"],["73177.2","13076"],["73174.1","48380"],["73172.8","29946"],["73170","44374"],["73169.9","2578"],["73169.8","4073"],["73168.7","27866"],["73167.9","3843"]],"a":[["73279.5","24396"],["73279.6","16583"],["73279.9","13262"],["73280","24072"],["73280.2","2770"],["73280.5","193036"],["73280.9","131935"],["73281","165443"],["73281.6","3008"],["73281.8","18688"],["73282.3","5528"],["73282.7","4453"],["73283.5","26128"],["73284","5135"],["73284.2","28584"],["73284.5","31088"],["73285.1","30902"],["73285.3","4370"],["73286.1","5835"],["73286.7","9945"],["73287.2","15828"],["73288.1","5146"],["73289.2","5591"],["73290.4","4147"],["73291.1","11225"],["73291.3","2330"],["73291.8","3779"],["73292.9","22994"],["73294.5","1711"],["73294.7","9654"],["73295.1","10526"],["73295.5","7505"],["73295.8","16522"],["73295.9","23492"],["73296.4","4337"],["73300.2","13780"],["73301.2","12475"],["73301.4","12790"],["73301.7","23433"],["73301.9","6124"],["73305","3846"],["73305.6","2"],["73305.7","4515"],["73305.8","4306"],["73306.4","5051"],["73307.6","19734"],["73309","4148"],["73309.9","4405"],["73310.7","6808"],["73312.8","31371"],["73313.4","23120"],["73315","13944"],["73315.5","16979"],["73316.4","6949"],["73316.7","4497"],["73318","18030"],["73321.7","4928"],["73324.4","3814"],["73324.6","4493"],["73325.9","3621"],["73326.9","24435"],["73331.5","10152"],["73332.4","4150"],["73333.4","9776"],["73334.9","13261"],["73335.4","11760"],["73337.4","2825"],["73341","2775"],["73342.3","31978"],["73342.4","21238"],["73347.5","26689"],["73348","2942"],["73349.9","4348"],["73352.3","12676"],["73355.1","2973"],["73355.6","11907"],["73356.1","25093"],["73358.8","2601"],["73362","6658"],["73362.2","5983"],["73363.8","5600"],["73364.9","3956"],["73366.7","23665"],["73367.5","16046"],["73370.4","33767"],["73375.9","3475"],["73376.3","29653"],["73378.2","33340"],["73380.7","2063"],["73381.8","3294"],["73383.4","41671"],["73385.2","26789"],["73388.8","6179"],["73391","4975"],["73394.7","4905"],["73396.5","4446"],["73397","5281"],["73403.9","17925"],["73407.1","17286"],["73407.8","5776"]]},"ts":1779971235262} 
 </msg>
<msg time="2026-05-28T20:27:15.281140" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:15.281427" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:14.860341" elapsed="0.421125"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:15.281656" elapsed="0.000111"/>
</return>
<msg time="2026-05-28T20:27:15.282166" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/depth</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=btc_usdt&amp;level=100</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:14.860042" elapsed="0.422193"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.284982" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:15.283384" elapsed="0.001756"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.286520" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:15.285440" elapsed="0.001139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.287134" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:15.286821" elapsed="0.000401"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:15.282724" elapsed="0.004623"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.288823" level="INFO">Length is 5.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:15.287596" elapsed="0.001349"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.290474" level="INFO">${data} = {'t': 1779971235262, 's': 'btc_usdt', 'u': 1452600958535, 'b': [['73279.4', '21784'], ['73279.3', '23700'], ['73279', '32444'], ['73278.9', '27852'], ['73278.6', '26960'], ['73278.5', '20980'], ['7327...</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:15.289181" elapsed="0.001352"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.290801" elapsed="0.000292"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.291271" elapsed="0.000211"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>u</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.291647" elapsed="0.000201"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>b</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.292025" elapsed="0.000215"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.292422" elapsed="0.000199"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data['s']}</arg>
<arg>btc_usdt</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:15.292800" elapsed="0.000861"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${data['t']}, int)</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:15.293845" elapsed="0.000844"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${data['t']} &gt; 0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:15.294866" elapsed="0.000756"/>
</kw>
<doc>验证期货U本位深度数据接口功能（BTC/USDT）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:14.856811" elapsed="0.439032"/>
</test>
<test id="s1-s2-s2-s1-t2" name="获取期货U本位深度数据_ETH" line="27">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.300283" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:15.299407" elapsed="0.000913"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:15.301126" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:15.300500" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:15.300465" elapsed="0.000769"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:15.301284" elapsed="0.000045"/>
</return>
<msg time="2026-05-28T20:27:15.301530" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:15.298348" elapsed="0.003213"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:15.431723" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=eth_usdt&amp;level=100 
 path_url=/v1/future-u/market/public/q/depth?symbol=eth_usdt&amp;level=100 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:15.432087" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=eth_usdt&amp;level=100 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:15 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'aa72820c1fb1cee613bc3a4eeffda9dd', 'X-Transparent': '00-aa72820c1fb1cee613bc3a4eeffda9dd-a1eff8fa4d252ab4-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d409d4d75756c-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"t":1779971235412,"s":"eth_usdt","u":1452582985302,"b":[["1982.83","12720"],["1982.82","13252"],["1982.8","13025"],["1982.77","2399"],["1982.75","14636"],["1982.74","14752"],["1982.73","64280"],["1982.72","91800"],["1982.69","80020"],["1982.68","13148"],["1982.67","15908"],["1982.63","2461"],["1982.57","11920"],["1982.56","15688"],["1982.54","1885"],["1982.43","12904"],["1982.4","2113"],["1982.37","2261"],["1982.34","11428"],["1982.33","1811"],["1982.23","1315"],["1982.12","10992"],["1982.06","1956"],["1981.97","4529"],["1981.96","19116"],["1981.88","9728"],["1981.83","12292"],["1981.8","14972"],["1981.76","14768"],["1981.58","17997"],["1981.51","22313"],["1981.47","3420"],["1981.44","2495"],["1981.4","11149"],["1981.39","12424"],["1981.27","15984"],["1981.09","3585"],["1981.07","15708"],["1981","9002"],["1980.47","2198"],["1980.4","14474"],["1980.34","2844"],["1980.3","9618"],["1980.29","1852"],["1980.18","25130"],["1980.17","3902"],["1980.1","18774"],["1980.09","3281"],["1980","14906"],["1979.86","1161"],["1979.76","16907"],["1979.64","3198"],["1979.55","1008"],["1979.22","2409"],["1978.9","1852"],["1978.74","9531"],["1978.59","2362"],["1978.49","1036"],["1978.4","753"],["1978.36","16294"],["1978.17","18145"],["1977.94","9086"],["1977.8","4115"],["1977.79","19147"],["1977.66","1531"],["1977.65","1004"],["1977.53","17744"],["1977.41","1729"],["1977.37","2639"],["1977.08","6078"],["1977.02","2540"],["1976.91","6147"],["1976.84","2078"],["1976.81","2660"],["1976.49","2204"],["1976.45","10169"],["1976.31","1667"],["1976.05","8927"],["1975.88","16663"],["1975.8","1455"],["1975.65","19043"],["1975.31","17479"],["1975.01","984"],["1974.75","9211"],["1974.33","14199"],["1974.21","1122"],["1974.11","1961"],["1973.65","7582"],["1973.51","1045"],["1973.47","2536"],["1973.28","6236"],["1972.96","2355"],["1972.73","1969"],["1972.59","9575"],["1972.38","12016"],["1972.32","1149"],["1972.24","1942"],["1971.74","12573"],["1971.64","2849"],["1971.45","3437"]],"a":[["1982.84","18849"],["1982.85","11532"],["1982.86","19214"],["1982.87","23493"],["1982.89","3539"],["1982.91","5589"],["1982.92","3329"],["1982.95","9902"],["1982.96","81260"],["1982.97","89000"],["1982.99","95816"],["1983.01","85"],["1983.05","2474"],["1983.09","643"],["1983.12","15907"],["1983.19","7099"],["1983.21","8646"],["1983.22","12617"],["1983.26","4690"],["1983.32","6701"],["1983.39","2877"],["1983.54","17713"],["1983.64","2011"],["1983.7","22720"],["1983.71","17324"],["1983.72","3873"],["1983.86","3216"],["1983.9","11341"],["1983.93","1460"],["1984.11","10725"],["1984.15","6788"],["1984.24","15971"],["1984.47","25285"],["1984.58","2422"],["1984.77","9740"],["1984.82","13967"],["1984.84","16907"],["1984.85","2486"],["1984.88","22653"],["1984.92","7132"],["1985.03","9079"],["1985.07","6534"],["1985.1","1746"],["1985.35","15736"],["1985.49","842"],["1985.6","1609"],["1985.76","3311"],["1985.86","12561"],["1985.91","26042"],["1986.08","16196"],["1986.12","3930"],["1986.21","3783"],["1986.29","6746"],["1986.37","15920"],["1986.52","1637"],["1986.76","10539"],["1987.02","1206"],["1987.09","14455"],["1987.43","1540"],["1987.61","2020"],["1987.64","8446"],["1987.68","8783"],["1987.7","8781"],["1987.95","8232"],["1988.26","11138"],["1988.28","3014"],["1988.29","29751"],["1988.6","10303"],["1988.8","1594"],["1989.26","4386"],["1989.41","7480"],["1989.44","1552"],["1989.68","2445"],["1989.72","18387"],["1990.01","1330"],["1990.02","2494"],["1990.03","5366"],["1990.32","10873"],["1990.49","930"],["1990.7","2419"],["1990.87","23205"],["1991.19","8576"],["1991.58","3155"],["1991.59","2985"],["1991.67","2095"],["1991.72","1485"],["1991.74","3405"],["1991.77","1290"],["1992.09","1935"],["1992.46","15688"],["1992.57","15928"],["1992.64","12695"],["1992.98","1942"],["1993.1","4402"],["1993.41","20071"],["1993.92","5962"],["1994.11","1823"],["1994.13","1782"],["1994.35","1844"],["1994.49","2491"]]},"ts":1779971235412} 
 </msg>
<msg time="2026-05-28T20:27:15.432428" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:15.432782" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:15.302205" elapsed="0.130638"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:15.433062" elapsed="0.000127"/>
</return>
<msg time="2026-05-28T20:27:15.433560" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/depth</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=eth_usdt&amp;level=100</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:15.301742" elapsed="0.131879"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.436216" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:15.435050" elapsed="0.001302"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.437624" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:15.436621" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.438189" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:15.437916" elapsed="0.000362"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:15.434226" elapsed="0.004167"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.439660" level="INFO">Length is 5.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:15.438626" elapsed="0.001118"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.440847" level="INFO">${data} = {'t': 1779971235412, 's': 'eth_usdt', 'u': 1452582985302, 'b': [['1982.83', '12720'], ['1982.82', '13252'], ['1982.8', '13025'], ['1982.77', '2399'], ['1982.75', '14636'], ['1982.74', '14752'], ['1982...</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:15.439914" elapsed="0.000974"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.441066" elapsed="0.000211"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.441484" elapsed="0.000217"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>u</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.441868" elapsed="0.000188"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>b</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.442219" elapsed="0.000185"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.442566" elapsed="0.000192"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data['s']}</arg>
<arg>eth_usdt</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:15.442930" elapsed="0.000801"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${data['t']}, int)</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:15.443880" elapsed="0.000667"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${data['t']} &gt; 0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:15.444680" elapsed="0.000603"/>
</kw>
<doc>验证期货U本位深度数据接口功能（ETH/USDT）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:15.296185" elapsed="0.149328"/>
</test>
<test id="s1-s2-s2-s1-t3" name="获取期货U本位深度数据_SOL" line="47">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.449705" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:15.448894" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:15.450536" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:15.449924" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:15.449886" elapsed="0.000746"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:15.450682" elapsed="0.000036"/>
</return>
<msg time="2026-05-28T20:27:15.450898" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:15.448003" elapsed="0.002923"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:15.581831" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=sol_usdt&amp;level=100 
 path_url=/v1/future-u/market/public/q/depth?symbol=sol_usdt&amp;level=100 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:15.582169" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=sol_usdt&amp;level=100 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:15 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9997', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '3eca5e0903bca0cfd9235b0b6d4fa71d', 'X-Transparent': '00-3eca5e0903bca0cfd9235b0b6d4fa71d-b52d662d78b220ee-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d409e385c756c-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"t":1779971235562,"s":"sol_usdt","u":1452490947374,"b":[["80.64","39212"],["80.63","45896"],["80.62","32596"],["80.61","48256"],["80.6","51332"],["80.58","5635"],["80.52","11054"],["80.51","38461"],["80.49","231780"],["80.48","546618"],["80.45","4777"],["80.44","37845"],["80.42","8323"],["80.35","64563"],["80.27","67340"],["80.22","9489"],["80.14","40005"],["80.13","3777"],["80.11","7024"],["80.02","58451"],["80","41526"],["79.99","31855"],["79.9","43049"],["79.82","5409"],["79.76","25908"],["79.66","28328"],["79.55","6901"],["79.53","22670"],["79.51","5534"],["79.23","53551"],["79.12","51196"],["78.89","6642"],["78.76","37907"],["78.73","9487"],["78.7","40383"],["78.63","78760"],["78.57","39686"],["78.52","13511"],["78.46","8632"],["78.44","7624"],["78.38","13819"],["78.27","12034"],["78.2","59689"],["77.68","15502"],["77.57","3240"],["77.54","3839"],["77.19","45278"],["77.11","57323"],["77.03","9556"],["77.02","21345"],["76.86","11857"],["76.6","37521"],["76.54","39160"],["76.44","12366"],["76.41","54949"],["76.34","13196"],["76.24","45431"],["76.23","81099"],["76.19","9302"],["75.89","23519"],["75.8","87237"],["75.71","7738"],["75.6","37695"],["75.42","10223"],["75.13","6671"],["75.12","11757"],["75.09","59837"],["74.81","4619"],["74.71","52564"],["74.66","25289"],["74.6","56009"],["74.5","10365"],["74.49","10151"],["74.34","11224"],["74.19","31936"],["74.02","19463"],["73.96","29613"],["73.94","60130"],["73.59","23893"],["73.52","8631"],["73.08","97996"],["73.03","31665"],["72.77","12202"],["72.4","4089"],["72.26","13606"],["72.09","3833"],["72.05","44750"],["71.9","59397"],["71.74","54142"],["71.61","47814"],["71.47","62879"],["71.29","7680"]],"a":[["80.65","8408"],["80.66","7188"],["80.67","7187"],["80.68","10343"],["80.71","9634"],["80.72","11267"],["80.74","262580"],["80.75","679219"],["80.77","46351"],["80.81","46757"],["80.82","12544"],["80.91","17272"],["80.92","22120"],["80.94","10104"],["81","5653"],["81.09","5891"],["81.13","8520"],["81.18","20213"],["81.2","60227"],["81.27","10556"],["81.33","7418"],["81.38","5444"],["81.43","5227"],["81.44","7299"],["81.54","64644"],["81.58","4328"],["81.67","93126"],["81.77","4825"],["81.85","35174"],["81.97","8658"],["82.26","6334"],["82.32","10509"],["82.42","3148"],["82.43","37574"],["82.46","7219"],["82.48","8263"],["82.49","60625"],["82.52","6476"],["82.58","1883"],["82.78","29290"],["82.83","4403"],["82.84","5204"],["82.86","7156"],["83.36","8096"],["83.64","98094"],["83.84","26560"],["83.9","7249"],["83.95","4302"],["84.08","47129"],["84.37","18439"],["84.55","52759"],["84.64","12199"],["84.95","56613"],["84.96","43819"],["85.02","7293"],["85.38","110600"],["85.42","9761"],["85.49","19597"],["85.55","5778"],["85.63","33398"],["85.65","9445"],["85.68","35900"],["85.72","37111"],["85.81","50003"],["85.99","9874"],["86.26","55682"],["86.44","34435"],["86.45","7730"],["86.48","18186"],["86.62","40357"],["86.69","47344"],["86.74","12839"],["87.08","59808"],["87.23","8900"],["87.36","6433"],["87.61","12518"],["88","40719"],["88.04","11321"],["88.32","50963"],["88.45","58891"],["88.68","36207"],["89.06","8304"],["89.22","4919"],["89.25","3136"],["89.51","6837"],["89.8","46513"],["89.98","56663"],["90","6642"],["90.02","5907"],["90.05","13335"],["90.29","22555"],["90.35","9619"]]},"ts":1779971235562} 
 </msg>
<msg time="2026-05-28T20:27:15.582538" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:15.582863" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:15.451539" elapsed="0.131380"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:15.583129" elapsed="0.000126"/>
</return>
<msg time="2026-05-28T20:27:15.583619" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/depth</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=sol_usdt&amp;level=100</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:15.451089" elapsed="0.132584"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.586248" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:15.585076" elapsed="0.001308"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.587638" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:15.586641" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.588198" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:15.587930" elapsed="0.000363"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:15.584252" elapsed="0.004164"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.589706" level="INFO">Length is 5.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:15.588649" elapsed="0.001170"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.591266" level="INFO">${data} = {'t': 1779971235562, 's': 'sol_usdt', 'u': 1452490947374, 'b': [['80.64', '39212'], ['80.63', '45896'], ['80.62', '32596'], ['80.61', '48256'], ['80.6', '51332'], ['80.58', '5635'], ['80.52', '11054']...</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:15.590038" elapsed="0.001285"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.591558" elapsed="0.000280"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.592064" elapsed="0.000257"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>u</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.592549" elapsed="0.000262"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>b</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.593131" elapsed="0.000250"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.593543" elapsed="0.000188"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data['s']}</arg>
<arg>sol_usdt</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:15.593896" elapsed="0.000826"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${data['t']}, int)</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:15.594900" elapsed="0.000827"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${data['t']} &gt; 0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:15.595885" elapsed="0.000773"/>
</kw>
<doc>验证期货U本位深度数据接口功能（SOL/USDT）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:15.445843" elapsed="0.151088"/>
</test>
<test id="s1-s2-s2-s1-t4" name="获取期货U本位深度数据_不同深度级别" line="67">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.602091" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:15.601142" elapsed="0.000990"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:15.602947" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:15.602305" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:15.602274" elapsed="0.000779"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:15.603101" elapsed="0.000041"/>
</return>
<msg time="2026-05-28T20:27:15.603336" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:15.600125" elapsed="0.003240"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:15.803093" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=btc_usdt&amp;level=1000 
 path_url=/v1/future-u/market/public/q/depth?symbol=btc_usdt&amp;level=1000 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:15.803543" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=btc_usdt&amp;level=1000 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:15 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9996', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '5d2e036cc7e88abb5466aa2b5da36bcc', 'X-Transparent': '00-5d2e036cc7e88abb5466aa2b5da36bcc-6eab9b02d87f1cfb-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d409f8c0b756c-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"t":1779971235777,"s":"btc_usdt","u":1452600958535,"b":[["73279.4","21784"],["73279.3","23700"],["73279","32444"],["73278.9","27852"],["73278.6","26960"],["73278.5","20980"],["73278.4","5525"],["73278.2","147940"],["73278","1762"],["73277.9","172180"],["73277.8","155460"],["73277.5","37644"],["73277.4","22680"],["73277.3","11692"],["73276.8","3133"],["73275.9","31813"],["73275.7","34322"],["73274.5","27256"],["73274.4","4013"],["73274.1","13186"],["73273.7","18982"],["73272.9","4958"],["73272","2173"],["73271.9","10369"],["73269.8","20491"],["73269.7","3278"],["73269.1","26708"],["73268.6","22858"],["73267","2602"],["73266.9","2007"],["73265.1","3200"],["73264.7","3388"],["73264","28648"],["73262.7","9320"],["73262.1","4465"],["73261.4","25271"],["73260.2","22134"],["73260","3485"],["73258.3","17301"],["73257.8","25406"],["73257.2","3106"],["73255.6","5402"],["73255.2","16393"],["73254.5","22227"],["73253.4","4552"],["73252.9","30106"],["73252.4","19690"],["73248.2","5318"],["73246.6","5117"],["73244.6","5230"],["73241.9","1590"],["73241.2","27076"],["73241","28075"],["73240","21272"],["73239.5","3606"],["73237","4074"],["73236.6","2523"],["73234.9","5643"],["73233.7","16360"],["73233.3","3946"],["73232.4","5917"],["73232.1","3046"],["73230.5","25411"],["73229","4052"],["73227","5310"],["73223.6","3848"],["73221.6","21340"],["73217.9","24504"],["73216.8","3460"],["73216","59683"],["73215.4","3109"],["73214.7","3109"],["73213.5","4523"],["73212.7","3338"],["73212.5","2963"],["73211.5","2611"],["73207.5","3153"],["73205.5","4065"],["73203.6","2987"],["73203.5","39194"],["73202.7","4640"],["73201.1","17635"],["73200.9","3063"],["73197.3","3984"],["73192.1","3870"],["73190.1","4460"],["73188.6","4017"],["73185.4","17500"],["73184.2","4054"],["73184.1","3422"],["73182.8","17468"],["73181","3321"],["73177.2","13076"],["73174.1","48380"],["73172.8","29946"],["73170","44374"],["73169.9","2578"],["73169.8","4073"],["73168.7","27866"],["73167.9","3843"],["73167.5","30535"],["73166.9","41322"],["73165","5983"],["73163.6","40703"],["73162.9","30021"],["73158.1","5682"],["73149.2","4179"],["73147.4","37516"],["73147","3135"],["73146.3","2540"],["73144.4","4956"],["73144.2","27360"],["73144","29804"],["73143.8","2033"],["73141.8","24632"],["73140.9","3873"],["73139.5","35124"],["73137.3","25219"],["73129.9","5774"],["73116.8","5279"],["73116.7","4499"],["73114.3","4638"],["73113","24691"],["73108.5","39980"],["73103.2","27904"],["73100.1","5941"],["73099.3","29533"],["73092.5","20327"],["73092","3601"],["73089.5","4177"],["73089.4","3554"],["73089.3","5044"],["73086.4","4268"],["73079.6","9825"],["73077.9","8583"],["73072.6","1433"],["73068.7","27047"],["73067","35035"],["73066.4","12941"],["73062.1","5272"],["73058.3","6406"],["73057.1","3438"],["73055.8","42736"],["73052.8","19306"],["73046.9","4374"],["73045.7","7155"],["73045.3","24632"],["73043.5","41012"],["73040.5","3832"],["73038.7","18694"],["73036.3","7695"],["73035.1","45595"],["73033.7","29589"],["73033.1","3777"],["73030.8","15895"],["73026.8","5166"],["73023.8","1883"],["73019.8","35270"],["73019.7","4718"],["73018","17195"],["73017.4","34582"],["73008.7","21063"],["73007.1","8994"],["73002.8","17768"],["73000.4","11"],["72996.8","22088"],["72996.5","5855"],["72991.4","10033"],["72990.9","4178"],["72984.5","5373"],["72983.2","2588"],["72982.2","14010"],["72979.4","17613"],["72979.3","34948"],["72978.2","6322"],["72974.4","3443"],["72969.6","6605"],["72969","30879"],["72968.2","2343"],["72961.9","18870"],["72961.4","3471"],["72958.7","2878"],["72955.6","44901"],["72952.1","25040"],["72942.5","1531"],["72940.9","8612"],["72940.8","13077"],["72940.4","5010"],["72938.7","3014"],["72933.4","3615"],["72928.8","17137"],["72924","20649"],["72906.6","26423"],["72906.2","17503"],["72892.6","3018"],["72888","11808"],["72886.4","25775"],["72868.1","5110"],["72866.7","17173"],["72861","30628"],["72860.4","2418"],["72859.9","40855"],["72857.3","5115"],["72853.4","16861"],["72848.5","13408"],["72848.1","16266"],["72840","14706"],["72838.4","2050"],["72838.1","19388"],["72829.4","31467"],["72828.3","34310"],["72820.2","24293"],["72815.7","21124"],["72812.2","4167"],["72810","31941"],["72809.9","3620"],["72791.2","4632"],["72791.1","11135"],["72789.4","4244"],["72788.1","42171"],["72783","4044"],["72776.9","10432"],["72773.7","9127"],["72772.9","2064"],["72766.8","36687"],["72765.4","18993"],["72765.3","2919"],["72762.8","23224"],["72750.8","2971"],["72749.3","51373"],["72746.4","3403"],["72739","2549"],["72738.6","19807"],["72736.5","35597"],["72731.5","5456"],["72730.1","34017"],["72724.3","43185"],["72723.4","4018"],["72719.9","3704"],["72718.8","2858"],["72717.8","23411"],["72713.7","31445"],["72711","2284"],["72709.6","16105"],["72705.6","4594"],["72703.7","3845"],["72696.7","28610"],["72690.1","4608"],["72685.6","2820"],["72685.4","1862"],["72683.7","4855"],["72680.8","12601"],["72677.4","14725"],["72676.3","2402"],["72671.5","16487"],["72670.1","4010"],["72669.6","6418"],["72665.1","6029"],["72661.9","4263"],["72661.2","15431"],["72650.7","29133"],["72640.3","2684"],["72639","29383"],["72633.5","30804"],["72624.3","2933"],["72621.2","4405"],["72614.2","16983"],["72610.1","1772"],["72600.6","44357"],["72588.3","4217"],["72585.8","600"],["72584.9","3097"],["72579","1912"],["72577.8","12086"],["72571","39982"],["72548","24382"],["72535.2","14331"],["72510.5","3693"],["72506.9","5036"],["72502.3","36779"],["72498.7","17850"],["72496.3","23723"],["72494","3365"],["72488.1","9592"],["72468.2","6725"],["72300","182"],["72276","28"],["70000","79"],["69111","76"],["61300","3352"],["60000","20000"]],"a":[["73279.5","24396"],["73279.6","16583"],["73279.9","13262"],["73280","24072"],["73280.2","2770"],["73280.5","193036"],["73280.9","131935"],["73281","165443"],["73281.6","3008"],["73281.8","18688"],["73282.3","5528"],["73282.7","4453"],["73283.5","26128"],["73284","5135"],["73284.2","28584"],["73284.5","31088"],["73285.1","30902"],["73285.3","4370"],["73286.1","5835"],["73286.7","9945"],["73287.2","15828"],["73288.1","5146"],["73289.2","5591"],["73290.4","4147"],["73291.1","11225"],["73291.3","2330"],["73291.8","3779"],["73292.9","22994"],["73294.5","1711"],["73294.7","9654"],["73295.1","10526"],["73295.5","7505"],["73295.8","16522"],["73295.9","23492"],["73296.4","4337"],["73300.2","13780"],["73301.2","12475"],["73301.4","12790"],["73301.7","23433"],["73301.9","6124"],["73305","3846"],["73305.6","2"],["73305.7","4515"],["73305.8","4306"],["73306.4","5051"],["73307.6","19734"],["73309","4148"],["73309.9","4405"],["73310.7","6808"],["73312.8","31371"],["73313.4","23120"],["73315","13944"],["73315.5","16979"],["73316.4","6949"],["73316.7","4497"],["73318","18030"],["73321.7","4928"],["73324.4","3814"],["73324.6","4493"],["73325.9","3621"],["73326.9","24435"],["73331.5","10152"],["73332.4","4150"],["73333.4","9776"],["73334.9","13261"],["73335.4","11760"],["73337.4","2825"],["73341","2775"],["73342.3","31978"],["73342.4","21238"],["73347.5","26689"],["73348","2942"],["73349.9","4348"],["73352.3","12676"],["73355.1","2973"],["73355.6","11907"],["73356.1","25093"],["73358.8","2601"],["73362","6658"],["73362.2","5983"],["73363.8","5600"],["73364.9","3956"],["73366.7","23665"],["73367.5","16046"],["73370.4","33767"],["73375.9","3475"],["73376.3","29653"],["73378.2","33340"],["73380.7","2063"],["73381.8","3294"],["73383.4","41671"],["73385.2","26789"],["73388.8","6179"],["73391","4975"],["73394.7","4905"],["73396.5","4446"],["73397","5281"],["73403.9","17925"],["73407.1","17286"],["73407.8","5776"],["73408.9","4295"],["73413.7","4459"],["73414","5482"],["73414.7","4319"],["73415.4","2345"],["73417.7","14438"],["73420.4","5943"],["73420.9","4141"],["73427.7","49013"],["73429.6","4595"],["73429.8","5667"],["73432.3","22128"],["73434.2","89"],["73434.4","23555"],["73436.6","59622"],["73436.7","5217"],["73440","15883"],["73443.1","10105"],["73443.4","2343"],["73445.5","28582"],["73447.6","4490"],["73449.3","2921"],["73451.5","11518"],["73454.5","44814"],["73460.6","1427"],["73463","30719"],["73463.5","8351"],["73467","4495"],["73470.3","11258"],["73470.7","16476"],["73476.3","27051"],["73478.4","9242"],["73487.5","2836"],["73487.7","3362"],["73488.1","10637"],["73492.4","3235"],["73493.1","21684"],["73493.4","29776"],["73498.3","21241"],["73501.1","3727"],["73503.1","17365"],["73504.7","19880"],["73508.4","30867"],["73513.8","31600"],["73517.3","31268"],["73519.8","11436"],["73520.4","4197"],["73520.7","19415"],["73521.2","14809"],["73526","12094"],["73530","15191"],["73530.2","24025"],["73531.7","5757"],["73538.5","2429"],["73541","17880"],["73542.9","4198"],["73545.8","2625"],["73546.7","21552"],["73553.1","4472"],["73554.1","3072"],["73567.4","41965"],["73567.8","24979"],["73568.1","4980"],["73568.7","4774"],["73570.1","26941"],["73576.3","41648"],["73577.9","3396"],["73579.7","29901"],["73585.5","3880"],["73591.9","22839"],["73598.3","5455"],["73607.8","2550"],["73617.4","11987"],["73618.4","4910"],["73619.3","46969"],["73624.1","15847"],["73624.2","4058"],["73634","6931"],["73634.1","16873"],["73642.2","29506"],["73643.6","35098"],["73644.1","2795"],["73654.6","4251"],["73655.6","3648"],["73656.5","38067"],["73665.1","22264"],["73667.2","3229"],["73667.9","22998"],["73673.3","5607"],["73680","13625"],["73680.1","6755"],["73681.9","23130"],["73682.1","28855"],["73690.5","28141"],["73693.9","36102"],["73694.2","24540"],["73696.7","2722"],["73697.6","30396"],["73700.8","2347"],["73702.2","2956"],["73703","20221"],["73703.4","11836"],["73710","4051"],["73710.4","1840"],["73712.9","6105"],["73720.6","9203"],["73721.1","12462"],["73725","28637"],["73733.7","15226"],["73737","2836"],["73742.4","29837"],["73744.5","2039"],["73745.3","22843"],["73748.7","15174"],["73748.8","4513"],["73750.7","5553"],["73751.2","15670"],["73753.5","18048"],["73758.9","8865"],["73760.4","23541"],["73764.7","4494"],["73767","25625"],["73771.7","4035"],["73775","4907"... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-05-28T20:27:15.804043" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:15.804429" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:15.603998" elapsed="0.200497"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:15.804748" elapsed="0.000148"/>
</return>
<msg time="2026-05-28T20:27:15.805310" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/depth</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=btc_usdt&amp;level=1000</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:15.603539" elapsed="0.201827"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.808123" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:15.806897" elapsed="0.001368"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.809578" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:15.808535" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.810165" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:15.809881" elapsed="0.000377"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:15.805967" elapsed="0.004415"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.811739" level="INFO">Length is 5.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:15.810614" elapsed="0.001252"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.813505" level="INFO">${data} = {'t': 1779971235777, 's': 'btc_usdt', 'u': 1452600958535, 'b': [['73279.4', '21784'], ['73279.3', '23700'], ['73279', '32444'], ['73278.9', '27852'], ['73278.6', '26960'], ['73278.5', '20980'], ['7327...</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:15.812047" elapsed="0.001506"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.813749" elapsed="0.000239"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.814158" elapsed="0.000417"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>u</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.814740" elapsed="0.000189"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>b</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.815061" elapsed="0.000153"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:15.815341" elapsed="0.000156"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data['s']}</arg>
<arg>btc_usdt</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:15.815636" elapsed="0.000700"/>
</kw>
<doc>验证期货U本位深度数据接口不同深度级别功能</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:15.597346" elapsed="0.219232"/>
</test>
<test id="s1-s2-s2-s1-t5" name="获取期货U本位深度数据_无效交易对" line="84">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.821546" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:15.820695" elapsed="0.000884"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:15.822419" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:15.821760" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:15.821725" elapsed="0.000799"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:15.822572" elapsed="0.000042"/>
</return>
<msg time="2026-05-28T20:27:15.822812" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:15.819766" elapsed="0.003081"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:15.953986" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=invalid_pair&amp;level=100 
 path_url=/v1/future-u/market/public/q/depth?symbol=invalid_pair&amp;level=100 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:15.954452" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?symbol=invalid_pair&amp;level=100 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:15 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9995', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '78259d14234dec91f9554a7207316914', 'X-Transparent': '00-78259d14234dec91f9554a7207316914-c37559ac1f10d5ad-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40a08f2a756c-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":[]},"data":null,"ts":1779971235936} 
 </msg>
<msg time="2026-05-28T20:27:15.954616" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:15.954923" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:15.823469" elapsed="0.131514"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:15.955174" elapsed="0.000107"/>
</return>
<msg time="2026-05-28T20:27:15.955630" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/depth</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=invalid_pair&amp;level=100</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:15.823010" elapsed="0.132672"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${response.status_code} &gt;= 400 or ${response.json()['code']} != 0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:15.956047" elapsed="0.001899"/>
</kw>
<doc>验证期货U本位深度数据接口错误处理（无效交易对）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:15.816966" elapsed="0.141206"/>
</test>
<test id="s1-s2-s2-s1-t6" name="获取期货U本位深度数据_缺少参数" line="92">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:15.962881" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:15.962019" elapsed="0.000903"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:15.963780" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:15.963115" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:15.963080" elapsed="0.000805"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:15.963930" elapsed="0.000046"/>
</return>
<msg time="2026-05-28T20:27:15.964178" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:15.961002" elapsed="0.003205"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:16.090981" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?level=100 
 path_url=/v1/future-u/market/public/q/depth?level=100 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:16.091388" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/depth?level=100 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:16 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'cf2c0c3d603da4d27c7cfbf953b0d981', 'X-Transparent': '00-cf2c0c3d603da4d27c7cfbf953b0d981-94c4b4fb067f44d4-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40a169f5756c-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":["symbol"]},"data":null,"ts":1779971236072} 
 </msg>
<msg time="2026-05-28T20:27:16.091567" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:16.092177" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:15.964873" elapsed="0.127372"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:16.092488" elapsed="0.000151"/>
</return>
<msg time="2026-05-28T20:27:16.093069" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/depth</arg>
<arg>headers=${headers}</arg>
<arg>params=level=100</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:15.964395" elapsed="0.128729"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${response.status_code} &gt;= 400 or ${response.json()['code']} != 0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:16.093620" elapsed="0.003109"/>
</kw>
<doc>验证期货U本位深度数据接口参数验证（缺少symbol参数）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:15.958486" elapsed="0.138614"/>
</test>
<doc>期货U本位深度数据接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:14.845206" elapsed="1.252741"/>
</suite>
<suite id="s1-s2-s2-s2" name="Future U Funding Rate" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/q/future_u_funding_rate.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.107995" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:16.107715" elapsed="0.000318"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.108451" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:16.108165" elapsed="0.000356"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.108848" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:16.108668" elapsed="0.000240"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:16.108555" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:16.108131" elapsed="0.000848"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.109846" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:16.109712" elapsed="0.000185"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.110174" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.110306" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.110431" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.110554" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.110674" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:16.109974" elapsed="0.000753"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.111190" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.110919" elapsed="0.000316"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.111576" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.111347" elapsed="0.000271"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.111951" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.111727" elapsed="0.000264"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.112329" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.112101" elapsed="0.000268"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.112704" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.112479" elapsed="0.000266"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.113089" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.112855" elapsed="0.000275"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.113474" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.113245" elapsed="0.000268"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.113840" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.113621" elapsed="0.000254"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.114192" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:16.113977" elapsed="0.000250"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:16.110754" elapsed="0.003505"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.114725" elapsed="0.000032"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.114876" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.114989" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.115095" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.115201" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.115306" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.115410" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.115527" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.115635" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:16.114539" elapsed="0.001148"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:16.109954" elapsed="0.005757"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.116209" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:16.115807" elapsed="0.000455"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:16.116732" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:16.116375" elapsed="0.000605"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:16.109404" elapsed="0.007648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.117360" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:16.117223" elapsed="0.000193"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:16.107327" elapsed="0.010158"/>
</kw>
<test id="s1-s2-s2-s2-t1" name="获取期货U本位资金费率_BTC" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.120827" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:16.120071" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.121574" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:16.121000" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:16.120979" elapsed="0.000670"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:16.121679" elapsed="0.000031"/>
</return>
<msg time="2026-05-28T20:27:16.121865" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:16.119194" elapsed="0.002695"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:16.608871" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate?symbol=btc_usdt 
 path_url=/v1/future-u/market/public/q/funding-rate?symbol=btc_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:16.609266" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate?symbol=btc_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:16 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '0b4a239eb3f2f0e1283fa4adbaf97f43', 'X-Transparent': '00-0b4a239eb3f2f0e1283fa4adbaf97f43-6915f4e33c2a1fcc-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40a4a89df526-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"symbol":"btc_usdt","fundingRate":0.0001,"nextCollectionTime":1779984000000,"collectionInternal":8},"ts":1779971236591} 
 </msg>
<msg time="2026-05-28T20:27:16.609604" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:16.610010" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:16.122364" elapsed="0.487712"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:16.610302" elapsed="0.000131"/>
</return>
<msg time="2026-05-28T20:27:16.610837" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/funding-rate</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=btc_usdt</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:16.122020" elapsed="0.488877"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.613728" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:16.612455" elapsed="0.001422"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.615240" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:16.614158" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.615826" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:16.615539" elapsed="0.000379"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:16.611525" elapsed="0.004514"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.617367" level="INFO">Length is 4.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:16.616286" elapsed="0.001179"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.618718" level="INFO">${data} = {'symbol': 'btc_usdt', 'fundingRate': 0.0001, 'nextCollectionTime': 1779984000000, 'collectionInternal': 8}</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:16.617703" elapsed="0.001072"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>symbol</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.619027" elapsed="0.000294"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>fundingRate</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.619557" elapsed="0.000267"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>nextCollectionTime</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.620049" elapsed="0.000276"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>collectionInternal</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.620559" elapsed="0.000278"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data['symbol']}</arg>
<arg>btc_usdt</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:16.621076" elapsed="0.000858"/>
</kw>
<doc>验证期货U本位资金费率接口功能（BTC/USDT）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:16.117556" elapsed="0.504655"/>
</test>
<test id="s1-s2-s2-s2-t2" name="获取期货U本位资金费率_ETH" line="21">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.627322" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:16.626333" elapsed="0.001030"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.628264" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:16.627562" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:16.627523" elapsed="0.000859"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:16.628431" elapsed="0.000047"/>
</return>
<msg time="2026-05-28T20:27:16.628704" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:16.625296" elapsed="0.003440"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:16.760176" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate?symbol=eth_usdt 
 path_url=/v1/future-u/market/public/q/funding-rate?symbol=eth_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:16.760684" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate?symbol=eth_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:16 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9997', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '37b4c4bf5c66727822b958dfec442c28', 'X-Transparent': '00-37b4c4bf5c66727822b958dfec442c28-ffc74cac10ccab48-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40a59ba6f526-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"symbol":"eth_usdt","fundingRate":0.000160000000000000,"nextCollectionTime":1779984000000,"collectionInternal":8},"ts":1779971236740} 
 </msg>
<msg time="2026-05-28T20:27:16.760904" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:16.761275" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:16.629471" elapsed="0.131871"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:16.761576" elapsed="0.000148"/>
</return>
<msg time="2026-05-28T20:27:16.762104" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/funding-rate</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=eth_usdt</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:16.628936" elapsed="0.133223"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.764809" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:16.763590" elapsed="0.001361"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.766237" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:16.765215" elapsed="0.001078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.766828" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:16.766533" elapsed="0.000384"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:16.762746" elapsed="0.004291"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.768282" level="INFO">Length is 4.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:16.767264" elapsed="0.001114"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.769609" level="INFO">${data} = {'symbol': 'eth_usdt', 'fundingRate': 0.00016, 'nextCollectionTime': 1779984000000, 'collectionInternal': 8}</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:16.768607" elapsed="0.001055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>symbol</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.769891" elapsed="0.000214"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>fundingRate</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.770278" elapsed="0.000191"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>nextCollectionTime</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.770638" elapsed="0.000197"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>collectionInternal</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.770999" elapsed="0.000198"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data['symbol']}</arg>
<arg>eth_usdt</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:16.771365" elapsed="0.000835"/>
</kw>
<doc>验证期货U本位资金费率接口功能（ETH/USDT）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:16.622661" elapsed="0.149815"/>
</test>
<test id="s1-s2-s2-s2-t3" name="获取期货U本位资金费率_SOL" line="35">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.777298" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:16.776352" elapsed="0.000988"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.778282" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:16.777533" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:16.777494" elapsed="0.000970"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:16.778514" elapsed="0.000045"/>
</return>
<msg time="2026-05-28T20:27:16.778757" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:16.775313" elapsed="0.003473"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:16.906579" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate?symbol=sol_usdt 
 path_url=/v1/future-u/market/public/q/funding-rate?symbol=sol_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:16.906963" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate?symbol=sol_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:16 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9996', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'd50cdb33b5ac710c4c26b28753b17ba9', 'X-Transparent': '00-d50cdb33b5ac710c4c26b28753b17ba9-c8e40ac68cc05a14-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40a67eb8f526-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"symbol":"sol_usdt","fundingRate":0.0001,"nextCollectionTime":1779984000000,"collectionInternal":8},"ts":1779971236889} 
 </msg>
<msg time="2026-05-28T20:27:16.907149" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:16.907582" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:16.779413" elapsed="0.128240"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:16.907922" elapsed="0.000157"/>
</return>
<msg time="2026-05-28T20:27:16.908500" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/funding-rate</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=sol_usdt</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:16.778954" elapsed="0.129606"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.911348" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:16.910107" elapsed="0.001383"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.912828" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:16.911778" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.913422" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:16.913139" elapsed="0.000378"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:16.909216" elapsed="0.004422"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.914889" level="INFO">Length is 4.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:16.913870" elapsed="0.001128"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.916244" level="INFO">${data} = {'symbol': 'sol_usdt', 'fundingRate': 0.0001, 'nextCollectionTime': 1779984000000, 'collectionInternal': 8}</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:16.915239" elapsed="0.001057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>symbol</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.916475" elapsed="0.000217"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>fundingRate</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.916857" elapsed="0.000196"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>nextCollectionTime</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.917218" elapsed="0.000191"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>collectionInternal</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:16.917569" elapsed="0.000197"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${data['symbol']}</arg>
<arg>sol_usdt</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:16.917948" elapsed="0.001390"/>
</kw>
<doc>验证期货U本位资金费率接口功能（SOL/USDT）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:16.772896" elapsed="0.146713"/>
</test>
<test id="s1-s2-s2-s2-t4" name="获取期货U本位资金费率_无效交易对" line="49">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:16.924921" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:16.923976" elapsed="0.000986"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:16.925815" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:16.925212" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:16.925178" elapsed="0.000723"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:16.925939" elapsed="0.000040"/>
</return>
<msg time="2026-05-28T20:27:16.926148" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:16.922958" elapsed="0.003213"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:17.053634" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate?symbol=invalid_symbol 
 path_url=/v1/future-u/market/public/q/funding-rate?symbol=invalid_symbol 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:17.054025" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate?symbol=invalid_symbol 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:17 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '808ee3decb1b3b9c6da5ea7684273ae4', 'X-Transparent': '00-808ee3decb1b3b9c6da5ea7684273ae4-9bda1e67c8483b9c-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40a769a4f526-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":[]},"data":null,"ts":1779971237036} 
 </msg>
<msg time="2026-05-28T20:27:17.054213" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:17.054664" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:16.926725" elapsed="0.128010"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:17.054992" elapsed="0.000140"/>
</return>
<msg time="2026-05-28T20:27:17.055540" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/funding-rate</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=invalid_symbol</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:16.926328" elapsed="0.129270"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${response.status_code} &gt;= 400 or ${response.json()['code']} != 0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:17.056072" elapsed="0.003111"/>
</kw>
<doc>验证期货U本位资金费率接口错误处理（无效交易对）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:16.920052" elapsed="0.139487"/>
</test>
<test id="s1-s2-s2-s2-t5" name="获取期货U本位资金费率_缺少参数" line="56">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.067445" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:17.066260" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.068658" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:17.067745" elapsed="0.000999"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:17.067704" elapsed="0.001078"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:17.068834" elapsed="0.000047"/>
</return>
<msg time="2026-05-28T20:27:17.069143" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:17.064780" elapsed="0.004400"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:17.252910" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate 
 path_url=/v1/future-u/market/public/q/funding-rate 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:17.253398" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/funding-rate 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:17 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '9a82f1e8a2bddd2376057c053cc1bd43', 'X-Transparent': '00-9a82f1e8a2bddd2376057c053cc1bd43-8cdb8850c730a843-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40a85c9bf526-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":["symbol"]},"data":null,"ts":1779971237178} 
 </msg>
<msg time="2026-05-28T20:27:17.253583" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:17.253986" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:17.070425" elapsed="0.183628"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:17.254281" elapsed="0.000141"/>
</return>
<msg time="2026-05-28T20:27:17.254838" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/funding-rate</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:17.069416" elapsed="0.185478"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${response.status_code} &gt;= 400 or ${response.json()['code']} != 0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:17.255372" elapsed="0.002744"/>
</kw>
<doc>验证期货U本位资金费率接口参数验证（缺少symbol参数）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:17.060094" elapsed="0.198298"/>
</test>
<doc>期货U本位资金费率接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:16.100580" elapsed="1.158453"/>
</suite>
<suite id="s1-s2-s2-s3" name="Future U Index Price" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/q/future_u_index_price.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.269084" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:17.268808" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.269527" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:17.269253" elapsed="0.000334"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.269895" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:17.269724" elapsed="0.000224"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:17.269623" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:17.269218" elapsed="0.000791"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.270829" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:17.270700" elapsed="0.000176"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.271154" elapsed="0.000023"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.271291" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.271416" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.271539" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.271663" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:17.270956" elapsed="0.000762"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.272218" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.271907" elapsed="0.000359"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.272614" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.272373" elapsed="0.000280"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.272983" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.272768" elapsed="0.000253"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.273354" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.273130" elapsed="0.000264"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.273787" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.273500" elapsed="0.000326"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.274169" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.273934" elapsed="0.000274"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.274546" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.274316" elapsed="0.000263"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.274880" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.274673" elapsed="0.000242"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.275239" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:17.275011" elapsed="0.000262"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:17.271747" elapsed="0.003558"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.275417" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.275531" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.275644" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.275752" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.275875" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.275983" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.276095" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.276201" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.276313" elapsed="0.000014"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:17.275329" elapsed="0.001034"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:17.270933" elapsed="0.005449"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.276623" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:17.276476" elapsed="0.000191"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:17.277151" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:17.276768" elapsed="0.000836"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:17.270394" elapsed="0.007282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.277859" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:17.277779" elapsed="0.000117"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:17.268378" elapsed="0.009567"/>
</kw>
<test id="s1-s2-s2-s3-t1" name="获取期货U本位所有指数价格" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:17.281445" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:17.280683" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:17.282212" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:17.281636" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:17.281614" elapsed="0.000688"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:17.282340" elapsed="0.000038"/>
</return>
<msg time="2026-05-28T20:27:17.282571" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:17.279747" elapsed="0.002854"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:18.824583" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/index-price 
 path_url=/v1/future-u/market/public/q/index-price 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:18.824975" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/index-price 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:18 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '63b764a6caaabf8e662b490f77230588', 'X-Transparent': '00-63b764a6caaabf8e662b490f77230588-a9890cc74a2c57a4-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40b1b855d763-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":[{"s":"arc_usdt","p":"0.06399","t":1778704067252},{"s":"act_usdt","p":"0.01151","t":1779971238487},{"s":"spell_usdt","p":"0.0001467","t":1779971238486},{"s":"eth_usdt","p":"1983.76","t":1779971238484},{"s":"fil_usdt","p":"0.944","t":1779971238486},{"s":"ban_usdt","p":"0.0782","t":1779971238485},{"s":"rune_usdt","p":"0.41","t":1779971238487},{"s":"dot_usdt","p":"1.188","t":1779971238485},{"s":"sol_usdt","p":"80.66","t":1779971238484},{"s":"dydx_usdt","p":"0.145","t":1779971238486},{"s":"doge_usdt","p":"0.09752","t":1779971238485},{"s":"ai16z_usdt","p":"0.0577","t":1762421515048},{"s":"trb_usdt","p":"16.095","t":1779971238485},{"s":"avaai_usdt","p":"0.04424","t":1753145237277},{"s":"aixbt_usdt","p":"0.02672","t":1779971238485},{"s":"trx_usdt","p":"0.34942","t":1779971238485},{"s":"dogs_usdt","p":"0.0000464","t":1779971238485},{"s":"sui_usdt","p":"0.9097","t":1779971238485},{"s":"ton_usdt","p":"1.7619","t":1779971238485},{"s":"arb_usdt","p":"0.1016","t":1779971238486},{"s":"ordi_usdt","p":"3.399","t":1779971238485},{"s":"ondo_usdt","p":"0.3555","t":1779971238487},{"s":"bera_usdt","p":"0.337","t":1779971238487},{"s":"wld_usdt","p":"0.2934","t":1779971238486},{"s":"xmr_usdt","p":"368.98","t":1779971238487},{"s":"not_usdt","p":"0.000429","t":1779971238486},{"s":"jto_usdt","p":"0.4718","t":1779971238487},{"s":"wif_usdt","p":"0.1753","t":1779971238486},{"s":"grass_usdt","p":"0.4865","t":1779971238485},{"s":"uni_usdt","p":"3.006","t":1779971238486},{"s":"op_usdt","p":"0.116","t":1779971238486},{"s":"xlm_usdt","p":"0.18222","t":1779971238487},{"s":"jup_usdt","p":"0.1755","t":1779971238487},{"s":"trump_usdt","p":"1.856","t":1779971238486},{"s":"xrp_usdt","p":"1.2847","t":1779971238484},{"s":"pol_usdt","p":"0.08713","t":1779971238486},{"s":"hbar_usdt","p":"0.0835","t":1779971238487},{"s":"bnb_usdt","p":"630.88","t":1779971238485},{"s":"1000sats_usdt","p":"0.0001173","t":1742977970874},{"s":"btc_usdt","p":"73317.6","t":1779971238484},{"s":"melania_usdt","p":"0.086","t":1779971238485},{"s":"pengu_usdt","p":"0.007796","t":1779971238486},{"s":"1000shib_usdt","p":"0.005274","t":1779971238485},{"s":"vine_usdt","p":"0.01526","t":1777535337359},{"s":"link_usdt","p":"8.819","t":1779971238487},{"s":"people_usdt","p":"0.0061","t":1779971238485},{"s":"turbo_usdt","p":"0.0010173","t":1779971238487},{"s":"ldo_usdt","p":"0.3124","t":1779971238487},{"s":"cookie_usdt","p":"0.0115","t":1779971238487},{"s":"usual_usdt","p":"0.0135","t":1779824684690},{"s":"vvv_usdt","p":"15.502","t":1779971238487},{"s":"atom_usdt","p":"2.016","t":1779971238487},{"s":"ada_usdt","p":"0.2295","t":1779971238488},{"s":"avax_usdt","p":"8.78","t":1779971238488},{"s":"strk_usdt","p":"0.0401","t":1779822824279},{"s":"aave_usdt","p":"80.36","t":1779971238488},{"s":"inj_usdt","p":"5.329","t":1779971238488},{"s":"crv_usdt","p":"0.2103","t":1779971238488},{"s":"paxg_usdt","p":"4387.12","t":1779971238488},{"s":"xaut_usdt","p":"4380.87","t":1779971238488}],"ts":1779971238687} 
 </msg>
<msg time="2026-05-28T20:27:18.825239" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:18.825670" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:17.283428" elapsed="1.542307"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:18.826014" elapsed="0.000129"/>
</return>
<msg time="2026-05-28T20:27:18.826593" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/index-price</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:17.282792" elapsed="1.543859"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.829538" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:18.828250" elapsed="0.001436"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.831011" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:18.829966" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.831606" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:18.831316" elapsed="0.000384"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:18.827311" elapsed="0.004517"/>
</kw>
<kw name="验证指数价格数据不为空">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.834533" level="INFO">Length is 60.</msg>
<arg>${response_data['data']}</arg>
<arg>指数价格数据不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.833653" elapsed="0.000959"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($response_data['data'], list)</arg>
<arg>指数价格数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.834804" elapsed="0.000514"/>
</kw>
<arg>${response.json()}</arg>
<status status="PASS" start="2026-05-28T20:27:18.832181" elapsed="0.003233"/>
</kw>
<kw name="验证指数价格列表格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($index_price_list, list)</arg>
<arg>指数价格列表应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.836717" elapsed="0.000408"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.837505" level="INFO">Length is 60.</msg>
<arg>${index_price_list}</arg>
<arg>指数价格列表不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.837291" elapsed="0.000277"/>
</kw>
<for flavor="IN">
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.839062" elapsed="0.000206"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.839402" elapsed="0.000175"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.839705" elapsed="0.000176"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.840978" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.840811" elapsed="0.000219"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.841177" elapsed="0.000181"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.841492" elapsed="0.000464"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.840061" elapsed="0.001973"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.843120" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.842950" elapsed="0.000220"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.843276" elapsed="0.000146"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.843530" elapsed="0.000314"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.842192" elapsed="0.001719"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.844721" elapsed="0.000256"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.845090" elapsed="0.000195"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.845605" level="INFO">${timestamp_str} = 1778704067252</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.845405" elapsed="0.000228"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.845875" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.845949" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.845764" elapsed="0.000209"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.846084" elapsed="0.000253"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.844057" elapsed="0.002344"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.838690" elapsed="0.007765"/>
</kw>
<var name="${index_price}">{'s': 'arc_usdt', 'p': '0.06399', 't': 1778704067252}</var>
<status status="PASS" start="2026-05-28T20:27:18.838030" elapsed="0.008458"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.847046" elapsed="0.000165"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.847324" elapsed="0.000152"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.847570" elapsed="0.000116"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.848418" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.848303" elapsed="0.000150"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.848535" elapsed="0.000114"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.848731" elapsed="0.000122"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.847793" elapsed="0.001106"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.849695" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.849590" elapsed="0.000139"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.849809" elapsed="0.000106"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.850054" elapsed="0.000128"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.848999" elapsed="0.001229"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.850814" elapsed="0.000168"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.851065" elapsed="0.000132"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.851415" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.851284" elapsed="0.000153"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.851601" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.851654" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.851520" elapsed="0.000152"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.851753" elapsed="0.000358"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.850329" elapsed="0.001870"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.846761" elapsed="0.005497"/>
</kw>
<var name="${index_price}">{'s': 'act_usdt', 'p': '0.01151', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.846611" elapsed="0.005681"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.852910" elapsed="0.000185"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.853226" elapsed="0.000175"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.853526" elapsed="0.000170"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.854703" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.854539" elapsed="0.000219"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.854875" elapsed="0.000162"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.855167" elapsed="0.000179"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.853847" elapsed="0.001570"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.856280" level="INFO">Length is 9.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.856153" elapsed="0.000169"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.856418" elapsed="0.000133"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.856649" elapsed="0.000148"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.855556" elapsed="0.001298"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.857514" elapsed="0.000213"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.857826" elapsed="0.000158"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.858243" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.858085" elapsed="0.000182"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.858469" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.858534" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.858364" elapsed="0.000190"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.858653" elapsed="0.000203"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.856975" elapsed="0.001935"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.852575" elapsed="0.006377"/>
</kw>
<var name="${index_price}">{'s': 'spell_usdt', 'p': '0.0001467', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.852408" elapsed="0.006567"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.859412" elapsed="0.000143"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.859658" elapsed="0.000138"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.859896" elapsed="0.000144"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.860980" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.860853" elapsed="0.000168"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.861115" elapsed="0.000140"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.861353" elapsed="0.000140"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.860192" elapsed="0.001360"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.862317" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.862191" elapsed="0.000166"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.862452" elapsed="0.000130"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.862684" elapsed="0.000146"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.861663" elapsed="0.001223"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.863542" elapsed="0.000192"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.863834" elapsed="0.000162"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.864253" level="INFO">${timestamp_str} = 1779971238484</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.864097" elapsed="0.000179"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.864449" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.864503" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.864362" elapsed="0.000159"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.864602" elapsed="0.000174"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.863010" elapsed="0.001814"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.859166" elapsed="0.005695"/>
</kw>
<var name="${index_price}">{'s': 'eth_usdt', 'p': '1983.76', 't': 1779971238484}</var>
<status status="PASS" start="2026-05-28T20:27:18.859055" elapsed="0.005828"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.865256" elapsed="0.000120"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.865463" elapsed="0.000119"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.865670" elapsed="0.000120"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.866454" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.866347" elapsed="0.000143"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.866572" elapsed="0.000114"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.866770" elapsed="0.000119"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.865892" elapsed="0.001044"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.867613" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.867504" elapsed="0.000143"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.867729" elapsed="0.000114"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.867933" elapsed="0.000126"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.867030" elapsed="0.001075"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.868666" elapsed="0.000161"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.868910" elapsed="0.000134"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.870420" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.869127" elapsed="0.001314"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.870653" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.870708" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.870559" elapsed="0.000166"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.870809" elapsed="0.000171"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.868206" elapsed="0.002823"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.865046" elapsed="0.006018"/>
</kw>
<var name="${index_price}">{'s': 'fil_usdt', 'p': '0.944', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.864952" elapsed="0.006133"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.871455" elapsed="0.000121"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.871663" elapsed="0.000120"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.871877" elapsed="0.000121"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.872657" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.872550" elapsed="0.000142"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.872769" elapsed="0.000104"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.872948" elapsed="0.000106"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.872098" elapsed="0.000998"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.873672" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.873577" elapsed="0.000126"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.873774" elapsed="0.000104"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.873954" elapsed="0.000111"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.873178" elapsed="0.000930"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.874601" elapsed="0.000147"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.874823" elapsed="0.000123"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.875140" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.875021" elapsed="0.000137"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.875310" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.875359" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.875230" elapsed="0.000146"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.875449" elapsed="0.000151"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.874198" elapsed="0.001442"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.871248" elapsed="0.004423"/>
</kw>
<var name="${index_price}">{'s': 'ban_usdt', 'p': '0.0782', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.871153" elapsed="0.004536"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.876032" elapsed="0.000107"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.876216" elapsed="0.000106"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.876398" elapsed="0.000105"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.877089" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.876993" elapsed="0.000127"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.877187" elapsed="0.000091"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.877345" elapsed="0.000095"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.876594" elapsed="0.000884"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.878100" level="INFO">Length is 4.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.877998" elapsed="0.000131"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.878194" elapsed="0.000093"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.878355" elapsed="0.000103"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.877553" elapsed="0.000943"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.878942" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.879136" elapsed="0.000107"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.879419" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.879312" elapsed="0.000123"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.879571" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.879615" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.879501" elapsed="0.000128"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.879695" elapsed="0.000138"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.878578" elapsed="0.001296"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.875834" elapsed="0.004069"/>
</kw>
<var name="${index_price}">{'s': 'rune_usdt', 'p': '0.41', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.875748" elapsed="0.004171"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.880212" elapsed="0.000096"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.880376" elapsed="0.000096"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.880540" elapsed="0.000095"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.881161" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.881075" elapsed="0.000114"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.881253" elapsed="0.000091"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.881411" elapsed="0.000096"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.880717" elapsed="0.000828"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.882062" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.881976" elapsed="0.000113"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.882154" elapsed="0.000091"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.882310" elapsed="0.000099"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.881619" elapsed="0.000828"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.882890" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.883084" elapsed="0.000107"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.883366" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.883260" elapsed="0.000122"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.883519" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.883562" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.883449" elapsed="0.000128"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.883641" elapsed="0.000139"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.882529" elapsed="0.001288"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.880045" elapsed="0.003800"/>
</kw>
<var name="${index_price}">{'s': 'dot_usdt', 'p': '1.188', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.879970" elapsed="0.003897"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.884165" elapsed="0.000095"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.884344" elapsed="0.000097"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.884509" elapsed="0.000173"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.885217" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.885130" elapsed="0.000114"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.885308" elapsed="0.000096"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.885470" elapsed="0.000094"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.884767" elapsed="0.000835"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.886104" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.886026" elapsed="0.000104"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.886189" elapsed="0.000083"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.886334" elapsed="0.000089"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.885677" elapsed="0.000781"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.886860" elapsed="0.000118"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.887040" elapsed="0.000101"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.887298" level="INFO">${timestamp_str} = 1779971238484</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.887203" elapsed="0.000109"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.887435" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.887476" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.887373" elapsed="0.000115"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.887547" elapsed="0.000123"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.886532" elapsed="0.001171"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.883998" elapsed="0.003731"/>
</kw>
<var name="${index_price}">{'s': 'sol_usdt', 'p': '80.66', 't': 1779971238484}</var>
<status status="PASS" start="2026-05-28T20:27:18.883919" elapsed="0.003826"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.888018" elapsed="0.000087"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.888169" elapsed="0.000085"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.888317" elapsed="0.000092"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.888887" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.888810" elapsed="0.000103"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.888972" elapsed="0.000082"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.889115" elapsed="0.000084"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.888483" elapsed="0.000751"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.889703" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.889627" elapsed="0.000101"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.889787" elapsed="0.000082"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.889928" elapsed="0.000094"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.889302" elapsed="0.000754"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.890447" elapsed="0.000169"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.890675" elapsed="0.000104"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.890926" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.890836" elapsed="0.000104"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.891055" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.891091" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.890995" elapsed="0.000108"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.891158" elapsed="0.000114"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.890130" elapsed="0.001173"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.887864" elapsed="0.003463"/>
</kw>
<var name="${index_price}">{'s': 'dydx_usdt', 'p': '0.145', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.887791" elapsed="0.003552"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.891591" elapsed="0.000082"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.891732" elapsed="0.000080"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.891875" elapsed="0.000081"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.892399" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.892326" elapsed="0.000096"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.892477" elapsed="0.000079"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.892613" elapsed="0.000081"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.892026" elapsed="0.000700"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.893161" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.893089" elapsed="0.000095"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.893238" elapsed="0.000075"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.893370" elapsed="0.000080"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.892789" elapsed="0.000693"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.893852" elapsed="0.000106"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.894015" elapsed="0.000090"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.894251" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.894162" elapsed="0.000102"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.894381" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.894418" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.894320" elapsed="0.000110"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.894485" elapsed="0.000115"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.893550" elapsed="0.001080"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.891449" elapsed="0.003203"/>
</kw>
<var name="${index_price}">{'s': 'doge_usdt', 'p': '0.09752', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.891386" elapsed="0.003279"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.894900" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.895030" elapsed="0.000077"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.895159" elapsed="0.000075"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.895647" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.895580" elapsed="0.000089"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.895720" elapsed="0.000071"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.895857" elapsed="0.000143"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.895297" elapsed="0.000734"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.896447" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.896380" elapsed="0.000089"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.896521" elapsed="0.000072"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.896647" elapsed="0.000080"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.896091" elapsed="0.000666"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.897112" elapsed="0.000100"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.897265" elapsed="0.000086"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.897489" level="INFO">${timestamp_str} = 1762421515048</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.897405" elapsed="0.000096"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.897610" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.897645" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.897554" elapsed="0.000103"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.897709" elapsed="0.000108"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.896822" elapsed="0.001023"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.894767" elapsed="0.003101"/>
</kw>
<var name="${index_price}">{'s': 'ai16z_usdt', 'p': '0.0577', 't': 1762421515048}</var>
<status status="PASS" start="2026-05-28T20:27:18.894706" elapsed="0.003174"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.898110" elapsed="0.000077"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.898241" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.898370" elapsed="0.000076"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.898864" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.898793" elapsed="0.000093"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.898936" elapsed="0.000071"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.899058" elapsed="0.000073"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.898509" elapsed="0.000650"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.899553" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.899488" elapsed="0.000086"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.899622" elapsed="0.000068"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.899740" elapsed="0.000074"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.899220" elapsed="0.000623"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.900182" elapsed="0.000096"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.900328" elapsed="0.000081"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.900538" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.900459" elapsed="0.000091"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.900652" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.900685" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.900599" elapsed="0.000097"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.900744" elapsed="0.000102"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.899913" elapsed="0.000961"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.897979" elapsed="0.002929"/>
</kw>
<var name="${index_price}">{'s': 'trb_usdt', 'p': '16.095', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.897921" elapsed="0.003000"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.901145" elapsed="0.000130"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.901328" elapsed="0.000073"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.901452" elapsed="0.000073"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.901923" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.901857" elapsed="0.000087"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.901992" elapsed="0.000069"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.902112" elapsed="0.000072"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.901587" elapsed="0.000626"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.902610" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.902545" elapsed="0.000086"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.902679" elapsed="0.000068"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.902799" elapsed="0.000073"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.902269" elapsed="0.000632"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.903231" elapsed="0.000096"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.903380" elapsed="0.000077"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.903580" level="INFO">${timestamp_str} = 1753145237277</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.903505" elapsed="0.000087"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.903688" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.903719" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.903640" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.903777" elapsed="0.000101"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.902961" elapsed="0.000944"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.901017" elapsed="0.002909"/>
</kw>
<var name="${index_price}">{'s': 'avaai_usdt', 'p': '0.04424', 't': 1753145237277}</var>
<status status="PASS" start="2026-05-28T20:27:18.900960" elapsed="0.002978"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.904149" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.904270" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.904387" elapsed="0.000070"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.904840" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.904774" elapsed="0.000085"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.904906" elapsed="0.000066"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.905020" elapsed="0.000069"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.904517" elapsed="0.000599"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.905486" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.905425" elapsed="0.000081"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.905553" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.905665" elapsed="0.000069"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.905170" elapsed="0.000600"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.906143" elapsed="0.000094"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.906287" elapsed="0.000078"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.906493" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.906415" elapsed="0.000090"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.906602" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.906633" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.906553" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.906689" elapsed="0.000099"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.905829" elapsed="0.000986"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.904028" elapsed="0.002807"/>
</kw>
<var name="${index_price}">{'s': 'aixbt_usdt', 'p': '0.02672', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.903974" elapsed="0.002873"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.907057" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.907176" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.907295" elapsed="0.000068"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.907740" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.907680" elapsed="0.000080"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.907807" elapsed="0.000070"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.907925" elapsed="0.000068"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.907423" elapsed="0.000598"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.908379" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.908321" elapsed="0.000078"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.908444" elapsed="0.000063"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.908552" elapsed="0.000070"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.908075" elapsed="0.000573"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.908957" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.909091" elapsed="0.000073"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.909284" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.909211" elapsed="0.000084"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.909388" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.909417" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.909341" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.909472" elapsed="0.000093"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.908704" elapsed="0.000887"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.906937" elapsed="0.002675"/>
</kw>
<var name="${index_price}">{'s': 'trx_usdt', 'p': '0.34942', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.906884" elapsed="0.002740"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.909826" elapsed="0.000068"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.909942" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.910055" elapsed="0.000071"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.910509" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.910448" elapsed="0.000081"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.910573" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.910684" elapsed="0.000116"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.910182" elapsed="0.000645"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.911193" level="INFO">Length is 9.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.911132" elapsed="0.000080"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.911258" elapsed="0.000063"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.911367" elapsed="0.000069"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.910880" elapsed="0.000583"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.911768" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.911908" elapsed="0.000074"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.912104" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.912029" elapsed="0.000086"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.912209" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.912240" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.912160" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.912294" elapsed="0.000095"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.911519" elapsed="0.000895"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.909711" elapsed="0.002723"/>
</kw>
<var name="${index_price}">{'s': 'dogs_usdt', 'p': '0.0000464', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.909659" elapsed="0.002786"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.912637" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.912745" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.912852" elapsed="0.000062"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.913256" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.913200" elapsed="0.000074"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.913316" elapsed="0.000057"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.913417" elapsed="0.000062"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.912967" elapsed="0.000536"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.913847" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.913786" elapsed="0.000079"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.913907" elapsed="0.000059"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.914009" elapsed="0.000065"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.913552" elapsed="0.000548"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.914389" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.914516" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.914696" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.914629" elapsed="0.000078"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.914794" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.914823" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.914750" elapsed="0.000095"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.914889" elapsed="0.000090"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.914152" elapsed="0.000851"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.912527" elapsed="0.002496"/>
</kw>
<var name="${index_price}">{'s': 'sui_usdt', 'p': '0.9097', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.912479" elapsed="0.002555"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.915277" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.915388" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.915495" elapsed="0.000063"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.915914" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.915847" elapsed="0.000085"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.915976" elapsed="0.000057"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.916078" elapsed="0.000061"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.915611" elapsed="0.000552"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.916502" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.916445" elapsed="0.000075"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.916562" elapsed="0.000058"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.916665" elapsed="0.000061"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.916211" elapsed="0.000539"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.917028" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.917150" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.917327" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.917260" elapsed="0.000077"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.917422" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.917451" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.917379" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.917501" elapsed="0.000085"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.916801" elapsed="0.000809"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.915115" elapsed="0.002514"/>
</kw>
<var name="${index_price}">{'s': 'ton_usdt', 'p': '1.7619', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.915067" elapsed="0.002572"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.917823" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.917927" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.918030" elapsed="0.000061"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.918435" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.918380" elapsed="0.000073"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.918494" elapsed="0.000057"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.918594" elapsed="0.000061"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.918145" elapsed="0.000534"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.919011" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.918956" elapsed="0.000072"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.919080" elapsed="0.000059"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.919181" elapsed="0.000063"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.918729" elapsed="0.000540"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.919598" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.919722" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.919909" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.919834" elapsed="0.000086"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.920005" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.920033" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.919961" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.920082" elapsed="0.000088"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.919321" elapsed="0.000872"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.917718" elapsed="0.002494"/>
</kw>
<var name="${index_price}">{'s': 'arb_usdt', 'p': '0.1016', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.917671" elapsed="0.002551"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.920407" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.920512" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.920616" elapsed="0.000061"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.921004" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.920953" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.921058" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.921151" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.920729" elapsed="0.000500"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.921540" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.921489" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.921594" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.921687" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.921273" elapsed="0.000494"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.922024" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.922137" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.922302" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.922240" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.922391" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.922417" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.922350" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.922463" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.921814" elapsed="0.000750"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.920302" elapsed="0.002279"/>
</kw>
<var name="${index_price}">{'s': 'ordi_usdt', 'p': '3.399', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.920255" elapsed="0.002335"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.922765" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.922864" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.922968" elapsed="0.000057"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.923378" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.923287" elapsed="0.000107"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.923433" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.923526" elapsed="0.000058"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.923074" elapsed="0.000531"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.923921" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.923861" elapsed="0.000077"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.923976" elapsed="0.000057"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.924072" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.923649" elapsed="0.000505"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.924414" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.924528" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.924692" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.924631" elapsed="0.000070"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.924782" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.924807" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.924742" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.924852" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.924202" elapsed="0.000751"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.922664" elapsed="0.002306"/>
</kw>
<var name="${index_price}">{'s': 'ondo_usdt', 'p': '0.3555', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.922621" elapsed="0.002359"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.925150" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.925245" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.925339" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.925700" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.925650" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.925753" elapsed="0.000058"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.925849" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.925441" elapsed="0.000486"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.926228" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.926179" elapsed="0.000065"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.926281" elapsed="0.000052"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.926372" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.925970" elapsed="0.000481"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.926708" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.926823" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.926997" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.926933" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.927088" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.927114" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.927045" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.927161" elapsed="0.000124"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.926498" elapsed="0.000809"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.925052" elapsed="0.002272"/>
</kw>
<var name="${index_price}">{'s': 'bera_usdt', 'p': '0.337', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.925010" elapsed="0.002324"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.927505" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.927600" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.927695" elapsed="0.000055"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.928064" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.928015" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.928119" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.928212" elapsed="0.000054"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.927798" elapsed="0.000490"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.928590" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.928542" elapsed="0.000064"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.928643" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.928735" elapsed="0.000058"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.928332" elapsed="0.000482"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.929072" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.929184" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.929347" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.929285" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.929434" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.929459" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.929394" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.929504" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.928864" elapsed="0.000741"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.927407" elapsed="0.002215"/>
</kw>
<var name="${index_price}">{'s': 'wld_usdt', 'p': '0.2934', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.927364" elapsed="0.002267"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.929804" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.929900" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.929995" elapsed="0.000055"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.930358" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.930307" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.930411" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.930503" elapsed="0.000055"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.930098" elapsed="0.000493"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.931124" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.931074" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.931178" elapsed="0.000052"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.931270" elapsed="0.000060"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.930635" elapsed="0.000717"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.931613" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.931725" elapsed="0.000061"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.931892" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.931827" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.931980" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.932006" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.931940" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.932052" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.931400" elapsed="0.000752"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.929704" elapsed="0.002465"/>
</kw>
<var name="${index_price}">{'s': 'xmr_usdt', 'p': '368.98', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.929661" elapsed="0.002517"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.932347" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.932444" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.932539" elapsed="0.000055"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.932901" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.932851" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.932954" elapsed="0.000052"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.933046" elapsed="0.000054"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.932642" elapsed="0.000480"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.933424" level="INFO">Length is 8.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.933375" elapsed="0.000065"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.933478" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.933570" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.933165" elapsed="0.000484"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.933909" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.934022" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.934186" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.934124" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.934274" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.934300" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.934234" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.934347" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.933696" elapsed="0.000752"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.932251" elapsed="0.002214"/>
</kw>
<var name="${index_price}">{'s': 'not_usdt', 'p': '0.000429', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.932208" elapsed="0.002266"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.934655" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.934752" elapsed="0.000099"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.934891" elapsed="0.000057"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.935263" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.935212" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.935321" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.935412" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.934995" elapsed="0.000495"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.935794" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.935744" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.935848" elapsed="0.000058"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.935945" elapsed="0.000056"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.935534" elapsed="0.000489"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.936281" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.936395" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.936560" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.936497" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.936648" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.936674" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.936607" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.936719" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.936070" elapsed="0.000751"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.934557" elapsed="0.002280"/>
</kw>
<var name="${index_price}">{'s': 'jto_usdt', 'p': '0.4718', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.934514" elapsed="0.002333"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.937017" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.937113" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.937208" elapsed="0.000058"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.937577" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.937527" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.937630" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.937723" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.937314" elapsed="0.000487"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.938103" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.938053" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.938156" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.938248" elapsed="0.000058"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.937845" elapsed="0.000483"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.938584" elapsed="0.000137"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.938762" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.938929" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.938866" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.939019" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.939045" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.938977" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.939091" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.938375" elapsed="0.000818"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.936919" elapsed="0.002291"/>
</kw>
<var name="${index_price}">{'s': 'wif_usdt', 'p': '0.1753', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.936876" elapsed="0.002343"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.939393" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.939493" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.939590" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.939960" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.939909" elapsed="0.000068"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.940014" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.940108" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.939694" elapsed="0.000493"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.940491" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.940441" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.940545" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.940638" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.940230" elapsed="0.000488"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.940980" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.941094" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.941259" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.941197" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.941350" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.941377" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.941308" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.941424" elapsed="0.000083"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.940765" elapsed="0.000764"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.939294" elapsed="0.002252"/>
</kw>
<var name="${index_price}">{'s': 'grass_usdt', 'p': '0.4865', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.939249" elapsed="0.002307"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.941728" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.941825" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.941922" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.942289" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.942238" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.942354" elapsed="0.000055"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.942449" elapsed="0.000099"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.942027" elapsed="0.000544"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.942883" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.942833" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.942939" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.943032" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.942616" elapsed="0.000497"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.943374" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.943489" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.943657" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.943595" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.943748" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.943775" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.943707" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.943823" elapsed="0.000085"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.943161" elapsed="0.000769"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.941630" elapsed="0.002317"/>
</kw>
<var name="${index_price}">{'s': 'uni_usdt', 'p': '3.006', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.941586" elapsed="0.002370"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.944130" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.944228" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.944325" elapsed="0.000057"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.944700" level="INFO">Length is 7.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.944644" elapsed="0.000072"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.944755" elapsed="0.000051"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.944846" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.944430" elapsed="0.000494"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.945227" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.945177" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.945282" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.945375" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.944967" elapsed="0.000488"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.945716" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.945829" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.945995" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.945932" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.946086" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.946112" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.946043" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.946157" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.945503" elapsed="0.000769"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.944030" elapsed="0.002259"/>
</kw>
<var name="${index_price}">{'s': 'op_usdt', 'p': '0.116', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.943986" elapsed="0.002313"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.946471" elapsed="0.000100"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.946612" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.946709" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.947079" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.947028" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.947134" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.947227" elapsed="0.000055"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.946813" elapsed="0.000492"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.947610" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.947560" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.947664" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.947758" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.947348" elapsed="0.000491"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.948105" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.948221" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.948386" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.948324" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.948476" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.948502" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.948435" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.948549" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.947892" elapsed="0.000759"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.946373" elapsed="0.002296"/>
</kw>
<var name="${index_price}">{'s': 'xlm_usdt', 'p': '0.18222', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.946329" elapsed="0.002349"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.948850" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.948947" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.949043" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.949408" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.949358" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.949466" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.949559" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.949147" elapsed="0.000489"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.949943" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.949890" elapsed="0.000069"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.949997" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.950102" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.949680" elapsed="0.000503"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.950485" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.950600" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.950768" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.950705" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.950858" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.950884" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.950816" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.950933" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.950231" elapsed="0.000804"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.948751" elapsed="0.002300"/>
</kw>
<var name="${index_price}">{'s': 'jup_usdt', 'p': '0.1755', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.948708" elapsed="0.002353"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.951234" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.951331" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.951428" elapsed="0.000057"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.951796" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.951745" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.951850" elapsed="0.000056"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.951946" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.951533" elapsed="0.000490"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.952328" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.952278" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.952383" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.952475" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.952067" elapsed="0.000489"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.952818" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.952931" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.953096" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.953034" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.953183" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.953209" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.953143" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.953254" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.952604" elapsed="0.000751"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.951135" elapsed="0.002237"/>
</kw>
<var name="${index_price}">{'s': 'trump_usdt', 'p': '1.856', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.951092" elapsed="0.002290"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.953557" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.953653" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.953748" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.954135" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.954080" elapsed="0.000072"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.954190" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.954283" elapsed="0.000099"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.953863" elapsed="0.000542"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.954712" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.954661" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.954766" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.954859" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.954449" elapsed="0.000491"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.955200" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.955314" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.955480" level="INFO">${timestamp_str} = 1779971238484</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.955417" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.955570" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.955596" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.955528" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.955643" elapsed="0.000081"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.954988" elapsed="0.000757"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.953459" elapsed="0.002302"/>
</kw>
<var name="${index_price}">{'s': 'xrp_usdt', 'p': '1.2847', 't': 1779971238484}</var>
<status status="PASS" start="2026-05-28T20:27:18.953412" elapsed="0.002358"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.955944" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.956042" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.956138" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.956506" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.956456" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.956560" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.956652" elapsed="0.000055"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.956242" elapsed="0.000487"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.957037" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.956987" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.957091" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.957184" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.956773" elapsed="0.000492"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.957525" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.957637" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.957800" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.957739" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.957898" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.957924" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.957857" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.957971" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.957313" elapsed="0.000760"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.955843" elapsed="0.002247"/>
</kw>
<var name="${index_price}">{'s': 'pol_usdt', 'p': '0.08713', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.955800" elapsed="0.002299"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.958313" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.958413" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.958509" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.958875" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.958824" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.958930" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.959023" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.958614" elapsed="0.000489"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.959412" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.959357" elapsed="0.000072"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.959467" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.959560" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.959147" elapsed="0.000492"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.959911" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.960025" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.960189" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.960127" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.960281" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.960307" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.960241" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.960354" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.959687" elapsed="0.000768"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.958173" elapsed="0.002299"/>
</kw>
<var name="${index_price}">{'s': 'hbar_usdt', 'p': '0.0835', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.958129" elapsed="0.002353"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.960655" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.960753" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.960849" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.961214" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.961164" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.961268" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.961363" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.960953" elapsed="0.000489"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.961758" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.961696" elapsed="0.000079"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.961813" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.961907" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.961486" elapsed="0.000503"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.962301" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.962417" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.962585" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.962520" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.962673" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.962699" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.962632" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.962745" elapsed="0.000081"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.962037" elapsed="0.000811"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.960557" elapsed="0.002308"/>
</kw>
<var name="${index_price}">{'s': 'bnb_usdt', 'p': '630.88', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.960512" elapsed="0.002362"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.963047" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.963143" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.963239" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.963605" level="INFO">Length is 13.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.963555" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.963660" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.963752" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.963343" elapsed="0.000487"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.964136" level="INFO">Length is 9.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.964085" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.964190" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.964283" elapsed="0.000058"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.963875" elapsed="0.000489"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.964622" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.964736" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.964901" level="INFO">${timestamp_str} = 1742977970874</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.964838" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.964992" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.965018" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.964950" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.965064" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.964412" elapsed="0.000753"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.962949" elapsed="0.002233"/>
</kw>
<var name="${index_price}">{'s': '1000sats_usdt', 'p': '0.0001173', 't': 1742977970874}</var>
<status status="PASS" start="2026-05-28T20:27:18.962905" elapsed="0.002286"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.965365" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.965478" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.965575" elapsed="0.000057"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.965994" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.965899" elapsed="0.000111"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.966049" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.966141" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.965679" elapsed="0.000540"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.966530" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.966480" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.966585" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.966677" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.966263" elapsed="0.000495"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.967021" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.967135" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.967301" level="INFO">${timestamp_str} = 1779971238484</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.967239" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.967391" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.967417" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.967350" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.967464" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.966805" elapsed="0.000760"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.965265" elapsed="0.002317"/>
</kw>
<var name="${index_price}">{'s': 'btc_usdt', 'p': '73317.6', 't': 1779971238484}</var>
<status status="PASS" start="2026-05-28T20:27:18.965221" elapsed="0.002370"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.967763" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.967860" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.967961" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.968325" level="INFO">Length is 12.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.968276" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.968381" elapsed="0.000051"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.968471" elapsed="0.000055"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.968065" elapsed="0.000483"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.968854" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.968805" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.968912" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.969003" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.968592" elapsed="0.000492"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.969353" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.969468" elapsed="0.000070"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.969642" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.969578" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.969732" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.969759" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.969691" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.969805" elapsed="0.000122"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.969132" elapsed="0.000818"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.967665" elapsed="0.002302"/>
</kw>
<var name="${index_price}">{'s': 'melania_usdt', 'p': '0.086', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.967622" elapsed="0.002355"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.970150" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.970247" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.970342" elapsed="0.000059"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.970711" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.970661" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.970766" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.970860" elapsed="0.000060"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.970450" elapsed="0.000492"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.971246" level="INFO">Length is 8.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.971197" elapsed="0.000065"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.971300" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.971395" elapsed="0.000060"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.970986" elapsed="0.000490"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.971734" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.971847" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.972019" level="INFO">${timestamp_str} = 1779971238486</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.971956" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.972109" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.972135" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.972068" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.972181" elapsed="0.000082"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.971524" elapsed="0.000760"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.970051" elapsed="0.002249"/>
</kw>
<var name="${index_price}">{'s': 'pengu_usdt', 'p': '0.007796', 't': 1779971238486}</var>
<status status="PASS" start="2026-05-28T20:27:18.970008" elapsed="0.002302"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.972482" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.972579" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.972674" elapsed="0.000057"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.973047" level="INFO">Length is 13.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.972997" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.973101" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.973203" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.972778" elapsed="0.000504"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.973628" level="INFO">Length is 8.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.973579" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.973683" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.973775" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.973326" elapsed="0.000531"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.974115" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.974229" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.974394" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.974332" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.974483" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.974508" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.974443" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.974556" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.973904" elapsed="0.000752"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.972384" elapsed="0.002289"/>
</kw>
<var name="${index_price}">{'s': '1000shib_usdt', 'p': '0.005274', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.972340" elapsed="0.002343"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.974856" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.974956" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.975050" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.975424" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.975373" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.975478" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.975570" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.975153" elapsed="0.000495"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.975962" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.975912" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.976016" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.976109" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.975692" elapsed="0.000498"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.976462" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.976575" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.976739" level="INFO">${timestamp_str} = 1777535337359</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.976676" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.976828" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.976854" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.976787" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.976911" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.976238" elapsed="0.000774"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.974756" elapsed="0.002282"/>
</kw>
<var name="${index_price}">{'s': 'vine_usdt', 'p': '0.01526', 't': 1777535337359}</var>
<status status="PASS" start="2026-05-28T20:27:18.974713" elapsed="0.002335"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.977222" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.977319" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.977419" elapsed="0.000326"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.978060" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.978010" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.978115" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.978209" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.977795" elapsed="0.000491"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.978595" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.978544" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.978649" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.978741" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.978330" elapsed="0.000490"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.979084" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.979198" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.979363" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.979301" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.979452" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.979478" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.979411" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.979525" elapsed="0.000081"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.978869" elapsed="0.000758"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.977123" elapsed="0.002521"/>
</kw>
<var name="${index_price}">{'s': 'link_usdt', 'p': '8.819', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.977079" elapsed="0.002574"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.979842" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.979945" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.980041" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.980416" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.980362" elapsed="0.000070"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.980470" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.980564" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.980146" elapsed="0.000497"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.980962" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.980913" elapsed="0.000065"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.981017" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.981109" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.980686" elapsed="0.000514"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.981465" elapsed="0.000118"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.981624" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.981790" level="INFO">${timestamp_str} = 1779971238485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.981727" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.981879" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.981906" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.981838" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.981951" elapsed="0.000081"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.981248" elapsed="0.000805"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.979738" elapsed="0.002332"/>
</kw>
<var name="${index_price}">{'s': 'people_usdt', 'p': '0.0061', 't': 1779971238485}</var>
<status status="PASS" start="2026-05-28T20:27:18.979683" elapsed="0.002397"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.982255" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.982352" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.982448" elapsed="0.000057"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.982823" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.982768" elapsed="0.000072"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.982882" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.982975" elapsed="0.000055"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.982555" elapsed="0.000497"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.983355" level="INFO">Length is 9.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.983306" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.983414" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.983506" elapsed="0.000058"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.983096" elapsed="0.000490"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.983858" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.983980" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.984144" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.984082" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.984233" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.984259" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.984192" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.984306" elapsed="0.000082"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.983634" elapsed="0.000776"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.982154" elapsed="0.002273"/>
</kw>
<var name="${index_price}">{'s': 'turbo_usdt', 'p': '0.0010173', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.982110" elapsed="0.002327"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.984608" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.984706" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.984802" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.985183" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.985132" elapsed="0.000068"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.985238" elapsed="0.000055"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.985333" elapsed="0.000104"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.984918" elapsed="0.000542"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.985770" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.985720" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.985825" elapsed="0.000057"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.985923" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.985505" elapsed="0.000498"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.986268" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.986396" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.986562" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.986501" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.986651" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.986677" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.986611" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.986724" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.986051" elapsed="0.000774"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.984510" elapsed="0.002332"/>
</kw>
<var name="${index_price}">{'s': 'ldo_usdt', 'p': '0.3124', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.984466" elapsed="0.002386"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.987025" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.987123" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.987221" elapsed="0.000058"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.987591" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.987539" elapsed="0.000068"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.987646" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.987740" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.987328" elapsed="0.000491"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.988132" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.988082" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.988187" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.988279" elapsed="0.000058"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.987864" elapsed="0.000496"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.988621" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.988735" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.988903" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.988840" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.988992" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.989018" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.988950" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.989077" elapsed="0.000081"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.988408" elapsed="0.000772"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.986927" elapsed="0.002270"/>
</kw>
<var name="${index_price}">{'s': 'cookie_usdt', 'p': '0.0115', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.986883" elapsed="0.002324"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.989380" elapsed="0.000102"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.989524" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.989620" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.989998" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.989947" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.990053" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.990146" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.989724" elapsed="0.000501"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.990540" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.990490" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.990595" elapsed="0.000055"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.990689" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.990269" elapsed="0.000500"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.991036" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.991150" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.991316" level="INFO">${timestamp_str} = 1779824684690</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.991253" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.991406" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.991432" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.991364" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.991484" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.990817" elapsed="0.000769"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.989281" elapsed="0.002322"/>
</kw>
<var name="${index_price}">{'s': 'usual_usdt', 'p': '0.0135', 't': 1779824684690}</var>
<status status="PASS" start="2026-05-28T20:27:18.989237" elapsed="0.002375"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.991784" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.991888" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.991986" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.992362" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.992307" elapsed="0.000073"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.992418" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.992510" elapsed="0.000056"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.992090" elapsed="0.000498"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.992896" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.992843" elapsed="0.000071"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.992962" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.993056" elapsed="0.000058"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.992632" elapsed="0.000505"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.993451" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.993566" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.993731" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.993668" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.993820" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.993846" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.993779" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.993893" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.993185" elapsed="0.000811"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.991686" elapsed="0.002327"/>
</kw>
<var name="${index_price}">{'s': 'vvv_usdt', 'p': '15.502', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.991642" elapsed="0.002380"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.994193" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.994292" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.994395" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.994765" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.994715" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.994820" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.994913" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.994500" elapsed="0.000492"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.995302" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.995247" elapsed="0.000073"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.995361" elapsed="0.000058"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.995458" elapsed="0.000056"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.995036" elapsed="0.000500"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.995797" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.995920" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.996085" level="INFO">${timestamp_str} = 1779971238487</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.996021" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.996174" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.996200" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.996133" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.996247" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.995584" elapsed="0.000764"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.994096" elapsed="0.002269"/>
</kw>
<var name="${index_price}">{'s': 'atom_usdt', 'p': '2.016', 't': 1779971238487}</var>
<status status="PASS" start="2026-05-28T20:27:18.994052" elapsed="0.002322"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.996545" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.996644" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.996754" elapsed="0.000058"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.997126" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.997076" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.997180" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.997272" elapsed="0.000100"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.996860" elapsed="0.000535"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.997705" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.997654" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.997760" elapsed="0.000052"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.997852" elapsed="0.000061"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.997439" elapsed="0.000496"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.998195" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.998312" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.998479" level="INFO">${timestamp_str} = 1779971238488</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.998416" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.998569" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:18.998595" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:18.998527" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:18.998641" elapsed="0.000081"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.997983" elapsed="0.000760"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.996447" elapsed="0.002313"/>
</kw>
<var name="${index_price}">{'s': 'ada_usdt', 'p': '0.2295', 't': 1779971238488}</var>
<status status="PASS" start="2026-05-28T20:27:18.996404" elapsed="0.002365"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.998946" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.999043" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:18.999139" elapsed="0.000055"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:18.999512" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:18.999462" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:18.999565" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:18.999662" elapsed="0.000055"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.999242" elapsed="0.000497"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.000054" level="INFO">Length is 4.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.000005" elapsed="0.000065"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.000109" elapsed="0.000051"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.000200" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.999786" elapsed="0.000493"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.000541" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.000656" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.000831" level="INFO">${timestamp_str} = 1779971238488</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.000768" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.000921" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:19.000946" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.000879" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.000993" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.000327" elapsed="0.000768"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:18.998843" elapsed="0.002269"/>
</kw>
<var name="${index_price}">{'s': 'avax_usdt', 'p': '8.78', 't': 1779971238488}</var>
<status status="PASS" start="2026-05-28T20:27:18.998799" elapsed="0.002323"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.001293" elapsed="0.000099"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.001434" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.001530" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.001909" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.001857" elapsed="0.000068"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.001963" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.002055" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.001634" elapsed="0.000500"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.002443" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.002391" elapsed="0.000069"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.002498" elapsed="0.000054"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.002592" elapsed="0.000057"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.002178" elapsed="0.000494"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.002942" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.003056" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.003221" level="INFO">${timestamp_str} = 1779822824279</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.003158" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.003310" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:19.003335" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.003269" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.003381" elapsed="0.000080"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.002720" elapsed="0.000763"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:19.001196" elapsed="0.002303"/>
</kw>
<var name="${index_price}">{'s': 'strk_usdt', 'p': '0.0401', 't': 1779822824279}</var>
<status status="PASS" start="2026-05-28T20:27:19.001152" elapsed="0.002356"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.003682" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.003779" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.003876" elapsed="0.000060"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.004252" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.004202" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.004307" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.004400" elapsed="0.000055"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.003984" elapsed="0.000501"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.004796" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.004747" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.004851" elapsed="0.000058"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.004947" elapsed="0.000060"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.004530" elapsed="0.000499"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.005347" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.005463" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.005628" level="INFO">${timestamp_str} = 1779971238488</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.005565" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.005720" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:19.005747" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.005676" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.005793" elapsed="0.000081"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.005076" elapsed="0.000819"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:19.003582" elapsed="0.002330"/>
</kw>
<var name="${index_price}">{'s': 'aave_usdt', 'p': '80.36', 't': 1779971238488}</var>
<status status="PASS" start="2026-05-28T20:27:19.003538" elapsed="0.002384"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.006097" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.006193" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.006288" elapsed="0.000060"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.006662" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.006612" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.006717" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.006809" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.006402" elapsed="0.000488"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.007194" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.007144" elapsed="0.000066"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.007248" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.007341" elapsed="0.000062"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.006935" elapsed="0.000491"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.007686" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.007798" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.007969" level="INFO">${timestamp_str} = 1779971238488</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.007908" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.008057" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:19.008083" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.008017" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.008129" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.007473" elapsed="0.000756"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:19.005996" elapsed="0.002250"/>
</kw>
<var name="${index_price}">{'s': 'inj_usdt', 'p': '5.329', 't': 1779971238488}</var>
<status status="PASS" start="2026-05-28T20:27:19.005952" elapsed="0.002304"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.008440" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.008542" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.008637" elapsed="0.000057"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.009010" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.008959" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.009065" elapsed="0.000096"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.009207" elapsed="0.000062"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.008742" elapsed="0.000551"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.009605" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.009554" elapsed="0.000067"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.009659" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.009751" elapsed="0.000063"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.009341" elapsed="0.000495"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.010097" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.010211" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.010376" level="INFO">${timestamp_str} = 1779971238488</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.010314" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.010463" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:19.010489" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.010424" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.010536" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.009884" elapsed="0.000753"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:19.008339" elapsed="0.002315"/>
</kw>
<var name="${index_price}">{'s': 'crv_usdt', 'p': '0.2103', 't': 1779971238488}</var>
<status status="PASS" start="2026-05-28T20:27:19.008296" elapsed="0.002368"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.010837" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.010936" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.011030" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.011411" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.011357" elapsed="0.000070"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.011464" elapsed="0.000051"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.011555" elapsed="0.000055"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.011134" elapsed="0.000498"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.011950" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.011897" elapsed="0.000069"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.012005" elapsed="0.000053"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.012097" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.011676" elapsed="0.000502"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.012448" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.012575" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.012740" level="INFO">${timestamp_str} = 1779971238488</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.012678" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.012829" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:19.012855" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.012788" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.012901" elapsed="0.000082"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.012226" elapsed="0.000779"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:19.010737" elapsed="0.002284"/>
</kw>
<var name="${index_price}">{'s': 'paxg_usdt', 'p': '4387.12', 't': 1779971238488}</var>
<status status="PASS" start="2026-05-28T20:27:19.010694" elapsed="0.002336"/>
</iter>
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.013245" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.013342" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.013438" elapsed="0.000056"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.013810" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.013756" elapsed="0.000072"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.013869" elapsed="0.000055"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.013963" elapsed="0.000057"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.013542" elapsed="0.000500"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.014342" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.014293" elapsed="0.000065"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.014399" elapsed="0.000056"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.014494" elapsed="0.000059"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.014085" elapsed="0.000490"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.014842" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.014958" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.015122" level="INFO">${timestamp_str} = 1779971238488</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.015060" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.015211" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:19.015237" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.015170" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.015284" elapsed="0.000079"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.014622" elapsed="0.000763"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:19.013104" elapsed="0.002297"/>
</kw>
<var name="${index_price}">{'s': 'xaut_usdt', 'p': '4380.87', 't': 1779971238488}</var>
<status status="PASS" start="2026-05-28T20:27:19.013060" elapsed="0.002351"/>
</iter>
<var>${index_price}</var>
<value>@{index_price_list}</value>
<status status="PASS" start="2026-05-28T20:27:18.837723" elapsed="0.177698"/>
</for>
<arg>${response.json()['data']}</arg>
<status status="PASS" start="2026-05-28T20:27:18.835710" elapsed="0.179734"/>
</kw>
<doc>测试获取所有期货U本位指数价格</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:17.278040" elapsed="1.737456"/>
</test>
<test id="s1-s2-s2-s3-t2" name="获取期货U本位单个指数价格" line="16">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.016169" level="INFO">${params} = {'symbol': 'btc_usdt'}</msg>
<var>${params}</var>
<arg>symbol=btc_usdt</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.016100" elapsed="0.000078"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.016785" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.016534" elapsed="0.000263"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:19.017053" elapsed="0.000008"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:19.016859" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:19.016850" elapsed="0.000234"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:19.017097" elapsed="0.000013"/>
</return>
<msg time="2026-05-28T20:27:19.017172" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:19.016254" elapsed="0.000928"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:19.222322" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/index-price?symbol=btc_usdt 
 path_url=/v1/future-u/market/public/q/index-price?symbol=btc_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:19.222731" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/index-price?symbol=btc_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:19 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '8022652cec663e8be25660606eab2712', 'X-Transparent': '00-8022652cec663e8be25660606eab2712-7dc9f0b06c773fa7-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40b47a76d763-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":[{"s":"btc_usdt","p":"73317.6","t":1779971238484}],"ts":1779971239126} 
 </msg>
<msg time="2026-05-28T20:27:19.222934" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:19.223368" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:19.017389" elapsed="0.206047"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:19.223682" elapsed="0.000143"/>
</return>
<msg time="2026-05-28T20:27:19.224254" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/index-price</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:19.017233" elapsed="0.207080"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.227165" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:19.225909" elapsed="0.001407"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.228545" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:19.227588" elapsed="0.000995"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.229524" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:19.228767" elapsed="0.000826"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:19.224952" elapsed="0.004739"/>
</kw>
<kw name="验证指数价格数据不为空">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.231884" level="INFO">Length is 1.</msg>
<arg>${response_data['data']}</arg>
<arg>指数价格数据不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.231073" elapsed="0.000890"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($response_data['data'], list)</arg>
<arg>指数价格数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.232142" elapsed="0.000504"/>
</kw>
<arg>${response.json()}</arg>
<status status="PASS" start="2026-05-28T20:27:19.229955" elapsed="0.002774"/>
</kw>
<kw name="验证指数价格列表格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($index_price_list, list)</arg>
<arg>指数价格列表应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.233737" elapsed="0.000268"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.234302" level="INFO">Length is 1.</msg>
<arg>${index_price_list}</arg>
<arg>指数价格列表不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.234135" elapsed="0.000219"/>
</kw>
<for flavor="IN">
<iter>
<kw name="验证指数价格项格式">
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>s</arg>
<arg>指数价格项应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.235219" elapsed="0.000211"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>p</arg>
<arg>指数价格项应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.235566" elapsed="0.000209"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${index_price}</arg>
<arg>t</arg>
<arg>指数价格项应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.235990" elapsed="0.000187"/>
</kw>
<kw name="验证指数价格符号格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.237222" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.237078" elapsed="0.000190"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.237382" elapsed="0.000154"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.237660" elapsed="0.000181"/>
</kw>
<arg>${index_price['s']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.236354" elapsed="0.001552"/>
</kw>
<kw name="验证指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.238793" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.238661" elapsed="0.000176"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.238943" elapsed="0.000137"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.239196" elapsed="0.000170"/>
</kw>
<arg>${index_price['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.238044" elapsed="0.001386"/>
</kw>
<kw name="验证指数价格时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>指数价格时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.240188" elapsed="0.000231"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>指数价格时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.240529" elapsed="0.000185"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.241010" level="INFO">${timestamp_str} = 1779971238484</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.240828" elapsed="0.000214"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.241241" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:19.241305" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.241146" elapsed="0.000179"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>指数价格时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.241415" elapsed="0.000365"/>
</kw>
<arg>${index_price['t']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.239580" elapsed="0.002254"/>
</kw>
<arg>${index_price}</arg>
<status status="PASS" start="2026-05-28T20:27:19.234846" elapsed="0.007032"/>
</kw>
<var name="${index_price}">{'s': 'btc_usdt', 'p': '73317.6', 't': 1779971238484}</var>
<status status="PASS" start="2026-05-28T20:27:19.234680" elapsed="0.007226"/>
</iter>
<var>${index_price}</var>
<value>@{index_price_list}</value>
<status status="PASS" start="2026-05-28T20:27:19.234455" elapsed="0.007505"/>
</for>
<arg>${response.json()['data']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.232975" elapsed="0.009045"/>
</kw>
<kw name="验证单个指数价格符号">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.242832" level="INFO">Length is 1.</msg>
<msg time="2026-05-28T20:27:19.242897" level="INFO">${list_length} = 1</msg>
<var>${list_length}</var>
<arg>${index_price_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:19.242734" elapsed="0.000183"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.243146" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${list_length}</arg>
<arg>1</arg>
<arg>单个指数价格查询应该只返回一个结果</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:19.243015" elapsed="0.000179"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${index_price_list[0]['s']}</arg>
<arg>${expected_symbol}</arg>
<arg>返回的指数价格符号应该匹配查询参数</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:19.243319" elapsed="0.000492"/>
</kw>
<arg>${response.json()['data']}</arg>
<arg>btc_usdt</arg>
<status status="PASS" start="2026-05-28T20:27:19.242147" elapsed="0.001720"/>
</kw>
<doc>测试获取单个期货U本位指数价格</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:19.015584" elapsed="0.228478"/>
</test>
<test id="s1-s2-s2-s3-t3" name="获取期货U本位符号指数价格_BTC" line="27">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.246072" level="INFO">${params} = {'symbol': 'btc_usdt'}</msg>
<var>${params}</var>
<arg>symbol=btc_usdt</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.245863" elapsed="0.000229"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.247552" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.246974" elapsed="0.000600"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:19.248187" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:19.247712" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:19.247683" elapsed="0.000609"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:19.248336" elapsed="0.000032"/>
</return>
<msg time="2026-05-28T20:27:19.248515" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:19.246322" elapsed="0.002214"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:19.380527" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price?symbol=btc_usdt 
 path_url=/v1/future-u/market/public/q/symbol-index-price?symbol=btc_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:19.380849" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price?symbol=btc_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:19 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '21da2b4477226087da66883f856c490b', 'X-Transparent': '00-21da2b4477226087da66883f856c490b-05abf12ed1eabe23-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40b5ef4ad763-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"s":"btc_usdt","p":"73317.6","t":1779971238484},"ts":1779971239361} 
 </msg>
<msg time="2026-05-28T20:27:19.380990" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:19.381334" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:19.249036" elapsed="0.132346"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:19.381587" elapsed="0.000135"/>
</return>
<msg time="2026-05-28T20:27:19.382025" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-index-price</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:19.248662" elapsed="0.133400"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.383900" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:19.383165" elapsed="0.000815"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.384671" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:19.384126" elapsed="0.000573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.384988" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:19.384831" elapsed="0.000204"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:19.382554" elapsed="0.002546"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.385839" level="INFO">${data} = {'s': 'btc_usdt', 'p': '73317.6', 't': 1779971238484}</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:19.385228" elapsed="0.000638"/>
</kw>
<kw name="验证符号指数价格数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>s</arg>
<arg>符号指数价格数据应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.386412" elapsed="0.000221"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>p</arg>
<arg>符号指数价格数据应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.386748" elapsed="0.000154"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>t</arg>
<arg>符号指数价格数据应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.387017" elapsed="0.000148"/>
</kw>
<arg>${data}</arg>
<status status="PASS" start="2026-05-28T20:27:19.386079" elapsed="0.001150"/>
</kw>
<kw name="验证符号指数价格符号">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.388150" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>符号指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.388012" elapsed="0.000181"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>符号指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.388307" elapsed="0.000156"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>${expected_symbol}</arg>
<arg>返回的符号应该匹配查询参数</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:19.388572" elapsed="0.002234"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>符号指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.390946" elapsed="0.000182"/>
</kw>
<arg>${data['s']}</arg>
<arg>btc_usdt</arg>
<status status="PASS" start="2026-05-28T20:27:19.387386" elapsed="0.003801"/>
</kw>
<kw name="验证符号指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.392149" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>符号指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.391962" elapsed="0.000230"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>符号指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.392296" elapsed="0.000125"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>符号指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.392511" elapsed="0.000135"/>
</kw>
<arg>${data['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.391337" elapsed="0.001362"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${data['t']} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.392785" elapsed="0.000674"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data['t'], int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.393610" elapsed="0.000288"/>
</kw>
<doc>测试获取BTC期货U本位符号指数价格</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:19.244387" elapsed="0.149684"/>
</test>
<test id="s1-s2-s2-s3-t4" name="获取期货U本位符号指数价格_ETH" line="41">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.395967" level="INFO">${params} = {'symbol': 'eth_usdt'}</msg>
<var>${params}</var>
<arg>symbol=eth_usdt</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.395731" elapsed="0.000262"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.397930" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.397189" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:19.398693" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:19.398116" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:19.398093" elapsed="0.000691"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:19.398820" elapsed="0.000036"/>
</return>
<msg time="2026-05-28T20:27:19.399039" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:19.396300" elapsed="0.002767"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:19.526904" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price?symbol=eth_usdt 
 path_url=/v1/future-u/market/public/q/symbol-index-price?symbol=eth_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:19.527267" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price?symbol=eth_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:19 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9997', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'b220690769f7af8e8583a25ae307ddf6', 'X-Transparent': '00-b220690769f7af8e8583a25ae307ddf6-5014350a29d84d64-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40b6daa0d763-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"s":"eth_usdt","p":"1983.73","t":1779971239492},"ts":1779971239508} 
 </msg>
<msg time="2026-05-28T20:27:19.527446" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:19.527833" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:19.399677" elapsed="0.128216"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:19.528104" elapsed="0.000127"/>
</return>
<msg time="2026-05-28T20:27:19.528608" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-index-price</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:19.399226" elapsed="0.129447"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.531272" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:19.530074" elapsed="0.001344"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.532743" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:19.531684" elapsed="0.001113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.533415" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:19.533125" elapsed="0.000384"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:19.529233" elapsed="0.004396"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.535028" level="INFO">${data} = {'s': 'eth_usdt', 'p': '1983.73', 't': 1779971239492}</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:19.533861" elapsed="0.001221"/>
</kw>
<kw name="验证符号指数价格数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>s</arg>
<arg>符号指数价格数据应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.536065" elapsed="0.000406"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>p</arg>
<arg>符号指数价格数据应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.536707" elapsed="0.000317"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>t</arg>
<arg>符号指数价格数据应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.537261" elapsed="0.000300"/>
</kw>
<arg>${data}</arg>
<status status="PASS" start="2026-05-28T20:27:19.535453" elapsed="0.002240"/>
</kw>
<kw name="验证符号指数价格符号">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.539686" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>符号指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.539447" elapsed="0.000310"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>符号指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.539934" elapsed="0.000641"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>${expected_symbol}</arg>
<arg>返回的符号应该匹配查询参数</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:19.540759" elapsed="0.000325"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>符号指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.541262" elapsed="0.000251"/>
</kw>
<arg>${data['s']}</arg>
<arg>eth_usdt</arg>
<status status="PASS" start="2026-05-28T20:27:19.537978" elapsed="0.003628"/>
</kw>
<kw name="验证符号指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.542995" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>符号指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.542796" elapsed="0.000263"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>符号指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.543214" elapsed="0.000206"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>符号指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.543582" elapsed="0.000241"/>
</kw>
<arg>${data['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.541826" elapsed="0.002086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${data['t']} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.544050" elapsed="0.000670"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data['t'], int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.544857" elapsed="0.000353"/>
</kw>
<doc>测试获取ETH期货U本位符号指数价格</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:19.394333" elapsed="0.151116"/>
</test>
<test id="s1-s2-s2-s3-t5" name="获取期货U本位符号指数价格_SOL" line="55">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.548118" level="INFO">${params} = {'symbol': 'sol_usdt'}</msg>
<var>${params}</var>
<arg>symbol=sol_usdt</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.547849" elapsed="0.000302"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.549875" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.549193" elapsed="0.000711"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:19.550648" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:19.550068" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:19.550034" elapsed="0.000698"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:19.550776" elapsed="0.000038"/>
</return>
<msg time="2026-05-28T20:27:19.550982" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:19.548432" elapsed="0.002575"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:19.679017" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price?symbol=sol_usdt 
 path_url=/v1/future-u/market/public/q/symbol-index-price?symbol=sol_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:19.679467" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price?symbol=sol_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:19 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9996', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '207e966ad7f0dcffa8020533fc6c1f05', 'X-Transparent': '00-207e966ad7f0dcffa8020533fc6c1f05-78ab08401f5d9d6b-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40b7cddcd763-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"s":"sol_usdt","p":"80.66","t":1779971239492},"ts":1779971239660} 
 </msg>
<msg time="2026-05-28T20:27:19.679611" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:19.679899" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:19.551562" elapsed="0.128396"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:19.680157" elapsed="0.000106"/>
</return>
<msg time="2026-05-28T20:27:19.680608" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-index-price</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:19.551152" elapsed="0.129512"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.683038" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:19.681861" elapsed="0.001317"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.684459" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:19.683439" elapsed="0.001077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.685043" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:19.684754" elapsed="0.000379"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:19.681136" elapsed="0.004110"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.686593" level="INFO">${data} = {'s': 'sol_usdt', 'p': '80.66', 't': 1779971239492}</msg>
<var>${data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:19.685481" elapsed="0.001165"/>
</kw>
<kw name="验证符号指数价格数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>s</arg>
<arg>符号指数价格数据应该包含symbol字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.687568" elapsed="0.000389"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>p</arg>
<arg>符号指数价格数据应该包含price字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.688192" elapsed="0.000316"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${data}</arg>
<arg>t</arg>
<arg>符号指数价格数据应该包含timestamp字段</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:19.688738" elapsed="0.000317"/>
</kw>
<arg>${data}</arg>
<status status="PASS" start="2026-05-28T20:27:19.686983" elapsed="0.002200"/>
</kw>
<kw name="验证符号指数价格符号">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.691232" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>符号指数价格符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.690983" elapsed="0.000317"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>符号指数价格符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.691469" elapsed="0.000648"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>${expected_symbol}</arg>
<arg>返回的符号应该匹配查询参数</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:19.692299" elapsed="0.000323"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[a-z0-9]+_[a-z]+$</arg>
<arg>符号指数价格符号格式应该正确</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.692797" elapsed="0.000235"/>
</kw>
<arg>${data['s']}</arg>
<arg>sol_usdt</arg>
<status status="PASS" start="2026-05-28T20:27:19.689459" elapsed="0.003668"/>
</kw>
<kw name="验证符号指数价格价格格式">
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.694552" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>符号指数价格价格不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:19.694355" elapsed="0.000266"/>
</kw>
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>符号指数价格价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:19.694773" elapsed="0.000203"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>符号指数价格价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:19.695148" elapsed="0.000244"/>
</kw>
<arg>${data['p']}</arg>
<status status="PASS" start="2026-05-28T20:27:19.693345" elapsed="0.002126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${data['t']} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.695596" elapsed="0.000676"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data['t'], int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:19.696482" elapsed="0.000340"/>
</kw>
<doc>测试获取SOL期货U本位符号指数价格</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:19.545819" elapsed="0.151206"/>
</test>
<test id="s1-s2-s2-s3-t6" name="获取期货U本位符号指数价格_无效交易对" line="69">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.699933" level="INFO">${params} = {'symbol': 'invalid_pair'}</msg>
<var>${params}</var>
<arg>symbol=invalid_pair</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.699708" elapsed="0.000254"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.701794" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.701052" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:19.702575" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:19.701988" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:19.701954" elapsed="0.000714"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:19.702713" elapsed="0.000035"/>
</return>
<msg time="2026-05-28T20:27:19.702919" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:19.700216" elapsed="0.002731"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:19.876701" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price?symbol=invalid_pair 
 path_url=/v1/future-u/market/public/q/symbol-index-price?symbol=invalid_pair 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:19.877074" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price?symbol=invalid_pair 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:19 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9995', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'eff43bb6ad4455e9dfe81357609adea3', 'X-Transparent': '00-eff43bb6ad4455e9dfe81357609adea3-9d51db946f177add-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40b8c95cd763-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":[]},"data":null,"ts":1779971239816} 
 </msg>
<msg time="2026-05-28T20:27:19.877268" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:19.877679" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:19.703539" elapsed="0.174205"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:19.878002" elapsed="0.000157"/>
</return>
<msg time="2026-05-28T20:27:19.878547" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-index-price</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:19.703095" elapsed="0.175511"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.880656" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<arg>HTTP状态码应该是200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:19.879078" elapsed="0.001729"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.882352" level="INFO">${response_data} = {'code': 1, 'msg': 'failure', 'msgInfo': {'code': 'invalid_symbol', 'template': '无效交易对', 'args': []}, 'data': None, 'ts': 1779971239816}</msg>
<var>${response_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:19.881139" elapsed="0.001272"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.883762" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response_data['code']}</arg>
<arg>1</arg>
<arg>无效交易对应该返回错误码1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:19.882665" elapsed="0.001212"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${response_data['msg']}</arg>
<arg>failure</arg>
<arg>错误消息应该是failure</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:19.884150" elapsed="0.001116"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${response_data['data']}</arg>
<arg>${None}</arg>
<arg>错误情况下data应该为null</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:19.885621" elapsed="0.000958"/>
</kw>
<doc>测试获取无效交易对的符号指数价格</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:19.697345" elapsed="0.189535"/>
</test>
<test id="s1-s2-s2-s3-t7" name="获取期货U本位符号指数价格_缺少参数" line="81">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:19.892527" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:19.891586" elapsed="0.000981"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:19.893492" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:19.892764" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:19.892730" elapsed="0.000876"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:19.893664" elapsed="0.000037"/>
</return>
<msg time="2026-05-28T20:27:19.893929" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:19.890518" elapsed="0.003444"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:20.022197" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price 
 path_url=/v1/future-u/market/public/q/symbol-index-price 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:20.022598" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-index-price 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:20 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'a21e99a9fa889b542701b4eb34430061', 'X-Transparent': '00-a21e99a9fa889b542701b4eb34430061-9aa2343b6cadc4bd-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40b9fe02d763-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":["symbol"]},"data":null,"ts":1779971240002} 
 </msg>
<msg time="2026-05-28T20:27:20.022840" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:20.023322" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:19.895056" elapsed="0.128342"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:20.023650" elapsed="0.000134"/>
</return>
<msg time="2026-05-28T20:27:20.024188" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-index-price</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:19.894169" elapsed="0.130077"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.025636" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<arg>HTTP状态码应该是200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:20.024731" elapsed="0.000974"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.027087" level="INFO">${response_data} = {'code': 1, 'msg': 'failure', 'msgInfo': {'code': 'invalid_symbol', 'template': '无效交易对', 'args': ['symbol']}, 'data': None, 'ts': 1779971240002}</msg>
<var>${response_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:20.025850" elapsed="0.001304"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.028513" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response_data['code']}</arg>
<arg>1</arg>
<arg>缺少参数应该返回错误码1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:20.027412" elapsed="0.001229"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${response_data['msg']}</arg>
<arg>failure</arg>
<arg>错误消息应该是failure</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:20.028926" elapsed="0.000601"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${response_data['data']}</arg>
<arg>${None}</arg>
<arg>错误情况下data应该为null</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:20.029637" elapsed="0.000442"/>
</kw>
<doc>测试缺少symbol参数的符号指数价格请求</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:19.887338" elapsed="0.142912"/>
</test>
<doc>期货U本位指数价格接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:17.261079" elapsed="2.769808"/>
</suite>
<suite id="s1-s2-s2-s4" name="Future U Mark Price" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/q/future_u_mark_price.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.039237" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:20.038982" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.039686" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:20.039398" elapsed="0.000351"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.040067" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.039896" elapsed="0.000228"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:20.039785" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:20.039364" elapsed="0.000830"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.041337" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.041205" elapsed="0.000184"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.041658" elapsed="0.000023"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.041789" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.041911" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.042035" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.042154" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:20.041465" elapsed="0.000741"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.042651" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.042392" elapsed="0.000301"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.043028" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.042800" elapsed="0.000269"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.043395" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.043178" elapsed="0.000256"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.043765" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.043540" elapsed="0.000267"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.044135" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.043912" elapsed="0.000263"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.044518" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.044283" elapsed="0.000279"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.044912" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.044668" elapsed="0.000282"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.045288" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.045060" elapsed="0.000263"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.045628" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.045417" elapsed="0.000245"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:20.042234" elapsed="0.003462"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.045815" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.045919" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.046026" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.046141" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.046244" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.046345" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.046448" elapsed="0.000062"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.046601" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.046703" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:20.045721" elapsed="0.001026"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:20.041443" elapsed="0.005323"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.047011" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.046852" elapsed="0.000202"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:20.047476" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:20.047154" elapsed="0.000563"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:20.040628" elapsed="0.007161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.047985" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.047899" elapsed="0.000124"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:20.038638" elapsed="0.009437"/>
</kw>
<test id="s1-s2-s2-s4-t1" name="获取期货U本位标记价格" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.051514" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.050730" elapsed="0.000823"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.052323" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:20.051708" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:20.051685" elapsed="0.000734"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:20.052456" elapsed="0.000039"/>
</return>
<msg time="2026-05-28T20:27:20.052690" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:20.049731" elapsed="0.002988"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:20.514506" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/mark-price 
 path_url=/v1/future-u/market/public/q/mark-price 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:20.514868" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/mark-price 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:20 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '88bd220dad3a176b1b57660f7d604a47', 'X-Transparent': '00-88bd220dad3a176b1b57660f7d604a47-8423f2daa973fbf6-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40bd0efa2934-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":[{"s":"arc_usdt","p":"0.063957","t":1778704067252},{"s":"act_usdt","p":"0.01151","t":1779971239495},{"s":"spell_usdt","p":"0.0001463","t":1779971239494},{"s":"eth_usdt","p":"1982.85","t":1779971239492},{"s":"fil_usdt","p":"0.943","t":1779971239494},{"s":"ban_usdt","p":"0.0782","t":1779971239493},{"s":"rune_usdt","p":"0.41","t":1779971239495},{"s":"dot_usdt","p":"1.185","t":1779971239493},{"s":"sol_usdt","p":"80.63","t":1779971239492},{"s":"dydx_usdt","p":"0.145","t":1779971239494},{"s":"doge_usdt","p":"0.09748","t":1779971239493},{"s":"ai16z_usdt","p":"0.0577","t":1762421515048},{"s":"trb_usdt","p":"16.132","t":1779971239492},{"s":"avaai_usdt","p":"0.044315","t":1753145237277},{"s":"aixbt_usdt","p":"0.02664","t":1779971239493},{"s":"trx_usdt","p":"0.34925","t":1779971239493},{"s":"dogs_usdt","p":"0.0000464","t":1779971239493},{"s":"sui_usdt","p":"0.9092","t":1779971239493},{"s":"ton_usdt","p":"1.7615","t":1779971239493},{"s":"arb_usdt","p":"0.1016","t":1779971239494},{"s":"ordi_usdt","p":"3.399","t":1779971239492},{"s":"ondo_usdt","p":"0.3554","t":1779971239495},{"s":"bera_usdt","p":"0.337","t":1779971239495},{"s":"wld_usdt","p":"0.2927","t":1779971239494},{"s":"xmr_usdt","p":"369.56","t":1779971239495},{"s":"not_usdt","p":"0.000428","t":1779971239494},{"s":"jto_usdt","p":"0.472","t":1779971239494},{"s":"wif_usdt","p":"0.1754","t":1779971239494},{"s":"grass_usdt","p":"0.4881","t":1779971239493},{"s":"uni_usdt","p":"3.005","t":1779971239493},{"s":"op_usdt","p":"0.1159","t":1779971239494},{"s":"xlm_usdt","p":"0.18204","t":1779971239495},{"s":"jup_usdt","p":"0.176","t":1779971239494},{"s":"trump_usdt","p":"1.853","t":1779971239494},{"s":"xrp_usdt","p":"1.2843","t":1779971239492},{"s":"pol_usdt","p":"0.08704","t":1779971239493},{"s":"hbar_usdt","p":"0.08348","t":1779971239495},{"s":"bnb_usdt","p":"631.06","t":1779971239492},{"s":"1000sats_usdt","p":"0.0001171","t":1742977970874},{"s":"btc_usdt","p":"73282.7","t":1779971239492},{"s":"melania_usdt","p":"0.086","t":1779971239493},{"s":"pengu_usdt","p":"0.007792","t":1779971239494},{"s":"1000shib_usdt","p":"0.005264","t":1779971239493},{"s":"vine_usdt","p":"0.01573","t":1777535337359},{"s":"link_usdt","p":"8.815","t":1779971239495},{"s":"people_usdt","p":"0.0061","t":1779971239493},{"s":"turbo_usdt","p":"0.0010163","t":1779971239494},{"s":"ldo_usdt","p":"0.3128","t":1779971239494},{"s":"cookie_usdt","p":"0.0115","t":1779971239494},{"s":"usual_usdt","p":"0.0135","t":1779824684690},{"s":"vvv_usdt","p":"15.491","t":1779971239495},{"s":"atom_usdt","p":"2.012","t":1779971239495},{"s":"ada_usdt","p":"0.2294","t":1779971239495},{"s":"avax_usdt","p":"8.777","t":1779971239495},{"s":"strk_usdt","p":"0.04","t":1779822824279},{"s":"aave_usdt","p":"80.26","t":1779971239495},{"s":"inj_usdt","p":"5.326","t":1779971239495},{"s":"crv_usdt","p":"0.2102","t":1779971239495},{"s":"paxg_usdt","p":"4386.65","t":1779971239495},{"s":"xaut_usdt","p":"4380.87","t":1779971239495}],"ts":1779971240495} 
 </msg>
<msg time="2026-05-28T20:27:20.515224" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:20.515593" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:20.053679" elapsed="0.461980"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:20.515906" elapsed="0.000126"/>
</return>
<msg time="2026-05-28T20:27:20.516445" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/mark-price</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:20.052897" elapsed="0.463602"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.519147" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:20.517932" elapsed="0.001361"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.520612" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:20.519577" elapsed="0.001091"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.521198" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.520922" elapsed="0.000372"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:20.517093" elapsed="0.004328"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:20.522875" level="INFO">${data} = [{'s': 'arc_usdt', 'p': '0.063957', 't': 1778704067252}, {'s': 'act_usdt', 'p': '0.01151', 't': 1779971239495}, {'s': 'spell_usdt', 'p': '0.0001463', 't': 1779971239494}, {'s': 'eth_usdt', 'p': '1982....</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.521675" elapsed="0.001248"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.523401" level="INFO">Length is 60.</msg>
<arg>${data}</arg>
<arg>响应数据不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.523127" elapsed="0.000336"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, list)</arg>
<arg>标记价格数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.523650" elapsed="0.000957"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.524958" level="INFO">Length is 60.</msg>
<msg time="2026-05-28T20:27:20.525072" level="INFO">${length} = 60</msg>
<var>${length}</var>
<arg>${data}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.524793" elapsed="0.000314"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt; 0</arg>
<arg>标记价格列表不应为空</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.525269" elapsed="0.000263"/>
</kw>
<kw name="验证期货标记价格列表结构">
<for flavor="IN">
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.527129" elapsed="0.000280"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.527607" elapsed="0.000229"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.527970" elapsed="0.000180"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.528280" elapsed="0.000175"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.529001" elapsed="0.000187"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.529469" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.529317" elapsed="0.000204"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.529660" elapsed="0.000205"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.528635" elapsed="0.001303"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.530461" elapsed="0.000167"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.530892" level="INFO">Length is 8.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.530761" elapsed="0.000177"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.531047" elapsed="0.000173"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.531564" level="INFO">${price_float} = 0.063957</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.531358" elapsed="0.000233"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.531700" elapsed="0.000190"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.530140" elapsed="0.001814"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.532388" elapsed="0.000215"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.532713" elapsed="0.000176"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.533192" level="INFO">${timestamp_str} = 1778704067252</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.533014" elapsed="0.000205"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.533438" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.533512" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.533326" elapsed="0.000208"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.533646" elapsed="0.000257"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.532108" elapsed="0.001852"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.526781" elapsed="0.007233"/>
</kw>
<var name="${mark_price_item}">{'s': 'arc_usdt', 'p': '0.063957', 't': 1778704067252}</var>
<status status="PASS" start="2026-05-28T20:27:20.526573" elapsed="0.007479"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.534734" elapsed="0.000206"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.535045" elapsed="0.000155"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.535294" elapsed="0.000130"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.535527" elapsed="0.000130"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.536006" elapsed="0.000130"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.536337" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.536227" elapsed="0.000149"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.536472" elapsed="0.000140"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.535769" elapsed="0.000897"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.537074" elapsed="0.000122"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.537404" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.537291" elapsed="0.000149"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.537531" elapsed="0.000133"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.537920" level="INFO">${price_float} = 0.01151</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.537763" elapsed="0.000179"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.538031" elapsed="0.000148"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.536827" elapsed="0.001404"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.538588" elapsed="0.000184"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.538867" elapsed="0.000142"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.539249" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.539105" elapsed="0.000165"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.539453" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.539509" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.539363" elapsed="0.000164"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.539615" elapsed="0.000169"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.538350" elapsed="0.001479"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.534309" elapsed="0.005560"/>
</kw>
<var name="${mark_price_item}">{'s': 'act_usdt', 'p': '0.01151', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.534174" elapsed="0.005721"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.540277" elapsed="0.000155"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.540514" elapsed="0.000120"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.540722" elapsed="0.000117"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.540921" elapsed="0.000123"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.541365" elapsed="0.000108"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.541657" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.541561" elapsed="0.000127"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.541768" elapsed="0.000114"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.541154" elapsed="0.000777"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.542338" elapsed="0.000109"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.542623" level="INFO">Length is 9.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.542528" elapsed="0.000127"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.542744" elapsed="0.000116"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.543079" level="INFO">${price_float} = 0.0001463</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.542946" elapsed="0.000152"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.543179" elapsed="0.000134"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.542032" elapsed="0.001327"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.543672" elapsed="0.000156"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.544059" elapsed="0.000291"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.544732" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.544518" elapsed="0.000244"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.545014" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.545095" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.544885" elapsed="0.000236"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.545237" elapsed="0.000265"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.543462" elapsed="0.002117"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.540064" elapsed="0.005572"/>
</kw>
<var name="${mark_price_item}">{'s': 'spell_usdt', 'p': '0.0001463', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.539967" elapsed="0.005707"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.546279" elapsed="0.000266"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.546672" elapsed="0.000191"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.546988" elapsed="0.000183"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.547293" elapsed="0.000176"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.547952" elapsed="0.000168"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.548362" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.548236" elapsed="0.000166"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.548512" elapsed="0.000153"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.547623" elapsed="0.001098"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.549096" elapsed="0.000135"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.549453" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.549332" elapsed="0.000160"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.549590" elapsed="0.000154"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.550020" level="INFO">${price_float} = 1982.85</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.549849" elapsed="0.000194"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.550142" elapsed="0.000162"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.548844" elapsed="0.001511"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.550729" elapsed="0.000191"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.551024" elapsed="0.000159"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.551438" level="INFO">${timestamp_str} = 1779971239492</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.551281" elapsed="0.000181"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.551657" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.551724" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.551556" elapsed="0.000188"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.551848" elapsed="0.000346"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.550481" elapsed="0.001768"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.545958" elapsed="0.006338"/>
</kw>
<var name="${mark_price_item}">{'s': 'eth_usdt', 'p': '1982.85', 't': 1779971239492}</var>
<status status="PASS" start="2026-05-28T20:27:20.545790" elapsed="0.006533"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.552748" elapsed="0.000163"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.552994" elapsed="0.000128"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.553231" elapsed="0.000126"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.553443" elapsed="0.000123"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.553882" elapsed="0.000123"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.554197" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.554091" elapsed="0.000140"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.554314" elapsed="0.000121"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.553670" elapsed="0.000813"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.554800" elapsed="0.000112"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.555099" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.554994" elapsed="0.000138"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.555212" elapsed="0.000125"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.555564" level="INFO">${price_float} = 0.943</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.555424" elapsed="0.000159"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.555664" elapsed="0.000135"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.554587" elapsed="0.001256"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.556173" elapsed="0.000161"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.556431" elapsed="0.000146"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.556797" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.556665" elapsed="0.000152"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.556987" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.557042" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.556899" elapsed="0.000160"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.557138" elapsed="0.000172"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.555956" elapsed="0.001400"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.552519" elapsed="0.004876"/>
</kw>
<var name="${mark_price_item}">{'s': 'fil_usdt', 'p': '0.943', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.552401" elapsed="0.005015"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.557795" elapsed="0.000161"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.558039" elapsed="0.000127"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.558252" elapsed="0.000123"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.558460" elapsed="0.000123"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.558999" elapsed="0.000117"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.559305" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.559199" elapsed="0.000144"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.559424" elapsed="0.000130"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.558690" elapsed="0.000911"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.559921" elapsed="0.000113"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.560221" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.560115" elapsed="0.000170"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.560367" elapsed="0.000129"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.560722" level="INFO">${price_float} = 0.0782</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.560584" elapsed="0.000157"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.560821" elapsed="0.000143"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.559705" elapsed="0.001306"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.561327" elapsed="0.000150"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.561552" elapsed="0.000121"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.561866" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.561749" elapsed="0.000135"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.562033" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.562082" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.561957" elapsed="0.000140"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.562168" elapsed="0.000157"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.561115" elapsed="0.001250"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.557583" elapsed="0.004815"/>
</kw>
<var name="${mark_price_item}">{'s': 'ban_usdt', 'p': '0.0782', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.557485" elapsed="0.004932"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.562748" elapsed="0.000141"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.562962" elapsed="0.000113"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.563148" elapsed="0.000111"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.563331" elapsed="0.000109"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.563722" elapsed="0.000100"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.563991" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.563899" elapsed="0.000121"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.564093" elapsed="0.000106"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.563532" elapsed="0.000708"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.564524" elapsed="0.000100"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.564788" level="INFO">Length is 4.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.564696" elapsed="0.000120"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.564888" elapsed="0.000111"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.565198" level="INFO">${price_float} = 0.41</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.565077" elapsed="0.000139"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.565288" elapsed="0.000117"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.564332" elapsed="0.001113"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.565738" elapsed="0.000224"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.566038" elapsed="0.000118"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.566346" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.566229" elapsed="0.000135"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.566517" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.566585" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.566439" elapsed="0.000162"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.566672" elapsed="0.000151"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.565536" elapsed="0.001327"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.562562" elapsed="0.004335"/>
</kw>
<var name="${mark_price_item}">{'s': 'rune_usdt', 'p': '0.41', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.562475" elapsed="0.004441"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.567246" elapsed="0.000136"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.567458" elapsed="0.000113"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.567645" elapsed="0.000114"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.567834" elapsed="0.000115"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.568231" elapsed="0.000100"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.568497" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.568404" elapsed="0.000123"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.568599" elapsed="0.000107"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.568043" elapsed="0.000705"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.569026" elapsed="0.000099"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.569293" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.569201" elapsed="0.000122"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.569394" elapsed="0.000110"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.569708" level="INFO">${price_float} = 1.185</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.569587" elapsed="0.000138"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.569796" elapsed="0.000118"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.568840" elapsed="0.001112"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.570234" elapsed="0.000123"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.570422" elapsed="0.000108"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.570703" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.570598" elapsed="0.000120"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.570856" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.570899" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.570786" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.570978" elapsed="0.000136"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.570045" elapsed="0.001105"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.567062" elapsed="0.004118"/>
</kw>
<var name="${mark_price_item}">{'s': 'dot_usdt', 'p': '1.185', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.566976" elapsed="0.004222"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.571517" elapsed="0.000124"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.571708" elapsed="0.000101"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.571884" elapsed="0.000101"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.572056" elapsed="0.000100"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.572496" elapsed="0.000090"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.572738" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.572652" elapsed="0.000112"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.572828" elapsed="0.000099"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.572252" elapsed="0.000711"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.573214" elapsed="0.000090"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.573451" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.573369" elapsed="0.000109"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.573545" elapsed="0.000098"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.573823" level="INFO">${price_float} = 80.63</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.573714" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.573904" elapsed="0.000108"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.573045" elapsed="0.001003"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.574301" elapsed="0.000122"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.574490" elapsed="0.000105"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.574757" level="INFO">${timestamp_str} = 1779971239492</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.574661" elapsed="0.000109"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.574893" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.574932" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.574829" elapsed="0.000116"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.575003" elapsed="0.000122"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.574131" elapsed="0.001027"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.571348" elapsed="0.003837"/>
</kw>
<var name="${mark_price_item}">{'s': 'sol_usdt', 'p': '80.63', 't': 1779971239492}</var>
<status status="PASS" start="2026-05-28T20:27:20.571253" elapsed="0.003949"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.575470" elapsed="0.000116"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.575647" elapsed="0.000092"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.575799" elapsed="0.000098"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.575957" elapsed="0.000088"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.576275" elapsed="0.000081"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.576491" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.576415" elapsed="0.000100"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.576575" elapsed="0.000087"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.576121" elapsed="0.000574"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.576925" elapsed="0.000085"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.577144" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.577069" elapsed="0.000099"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.577226" elapsed="0.000089"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.577497" level="INFO">${price_float} = 0.145</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.577398" elapsed="0.000114"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.577570" elapsed="0.000097"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.576770" elapsed="0.000930"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.578495" elapsed="0.000114"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.578673" elapsed="0.000097"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.578929" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.578831" elapsed="0.000112"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.579061" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.579097" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.579002" elapsed="0.000108"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.579163" elapsed="0.000114"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.577777" elapsed="0.001531"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.575319" elapsed="0.004014"/>
</kw>
<var name="${mark_price_item}">{'s': 'dydx_usdt', 'p': '0.145', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.575249" elapsed="0.004099"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.579602" elapsed="0.000104"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.579762" elapsed="0.000087"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.579911" elapsed="0.000085"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.580051" elapsed="0.000086"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.580349" elapsed="0.000075"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.580550" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.580480" elapsed="0.000092"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.580627" elapsed="0.000084"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.580207" elapsed="0.000534"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.580952" elapsed="0.000074"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.581151" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.581081" elapsed="0.000092"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.581228" elapsed="0.000083"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.581461" level="INFO">${price_float} = 0.09748</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.581370" elapsed="0.000104"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.581528" elapsed="0.000090"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.580811" elapsed="0.000837"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.581866" elapsed="0.000105"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.582027" elapsed="0.000090"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.582265" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.582175" elapsed="0.000104"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.582392" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.582428" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.582334" elapsed="0.000106"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.582495" elapsed="0.000116"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.581721" elapsed="0.000930"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.579458" elapsed="0.003218"/>
</kw>
<var name="${mark_price_item}">{'s': 'doge_usdt', 'p': '0.09748', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.579393" elapsed="0.003298"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.582944" elapsed="0.000107"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.583108" elapsed="0.000084"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.583249" elapsed="0.000082"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.583388" elapsed="0.000148"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.583752" elapsed="0.000078"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.583960" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.583890" elapsed="0.000092"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.584038" elapsed="0.000081"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.583608" elapsed="0.000543"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.584362" elapsed="0.000074"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.584561" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.584492" elapsed="0.000092"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.584641" elapsed="0.000083"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.584877" level="INFO">${price_float} = 0.0577</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.584783" elapsed="0.000107"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.584944" elapsed="0.000088"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.584221" elapsed="0.000842"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.585281" elapsed="0.000104"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.585441" elapsed="0.000089"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.585677" level="INFO">${timestamp_str} = 1762421515048</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.585588" elapsed="0.000103"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.585803" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.585840" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.585746" elapsed="0.000107"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.585907" elapsed="0.000113"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.585134" elapsed="0.000916"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.582800" elapsed="0.003276"/>
</kw>
<var name="${mark_price_item}">{'s': 'ai16z_usdt', 'p': '0.0577', 't': 1762421515048}</var>
<status status="PASS" start="2026-05-28T20:27:20.582734" elapsed="0.003357"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.586341" elapsed="0.000105"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.586503" elapsed="0.000085"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.586646" elapsed="0.000083"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.586787" elapsed="0.000083"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.587085" elapsed="0.000074"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.587301" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.587215" elapsed="0.000108"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.587379" elapsed="0.000081"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.586940" elapsed="0.000549"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.587689" elapsed="0.000070"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.587883" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.587811" elapsed="0.000093"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.587956" elapsed="0.000137"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.588241" level="INFO">${price_float} = 16.132</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.588151" elapsed="0.000103"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.588309" elapsed="0.000084"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.587554" elapsed="0.000868"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.588625" elapsed="0.000098"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.588776" elapsed="0.000085"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.588997" level="INFO">${timestamp_str} = 1779971239492</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.588914" elapsed="0.000096"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.589120" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.589155" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.589064" elapsed="0.000102"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.589217" elapsed="0.000111"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.588490" elapsed="0.000867"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.586199" elapsed="0.003182"/>
</kw>
<var name="${mark_price_item}">{'s': 'trb_usdt', 'p': '16.132', 't': 1779971239492}</var>
<status status="PASS" start="2026-05-28T20:27:20.586134" elapsed="0.003261"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.589631" elapsed="0.000098"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.589783" elapsed="0.000083"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.589920" elapsed="0.000079"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.590052" elapsed="0.000077"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.590329" elapsed="0.000071"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.590517" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.590452" elapsed="0.000086"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.590590" elapsed="0.000076"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.590194" elapsed="0.000501"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.590894" elapsed="0.000071"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.591082" level="INFO">Length is 8.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.591017" elapsed="0.000087"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.591155" elapsed="0.000079"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.591375" level="INFO">${price_float} = 0.044315</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.591289" elapsed="0.000098"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.591439" elapsed="0.000087"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.590760" elapsed="0.000808"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.591772" elapsed="0.000103"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.591926" elapsed="0.000080"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.592138" level="INFO">${timestamp_str} = 1753145237277</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.592057" elapsed="0.000093"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.592253" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.592288" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.592199" elapsed="0.000100"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.592348" elapsed="0.000103"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.591635" elapsed="0.000845"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.589497" elapsed="0.003006"/>
</kw>
<var name="${mark_price_item}">{'s': 'avaai_usdt', 'p': '0.044315', 't': 1753145237277}</var>
<status status="PASS" start="2026-05-28T20:27:20.589435" elapsed="0.003081"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.592741" elapsed="0.000094"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.592885" elapsed="0.000134"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.593072" elapsed="0.000077"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.593198" elapsed="0.000077"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.593468" elapsed="0.000069"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.593649" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.593587" elapsed="0.000082"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.593719" elapsed="0.000072"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.593341" elapsed="0.000479"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.594010" elapsed="0.000067"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.594188" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.594127" elapsed="0.000081"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.594257" elapsed="0.000074"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.594465" level="INFO">${price_float} = 0.02664</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.594384" elapsed="0.000093"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.594526" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.593883" elapsed="0.000749"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.594823" elapsed="0.000098"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.594972" elapsed="0.000081"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.595183" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.595104" elapsed="0.000091"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.595298" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.595331" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.595245" elapsed="0.000097"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.595390" elapsed="0.000102"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.594695" elapsed="0.000825"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.592613" elapsed="0.002929"/>
</kw>
<var name="${mark_price_item}">{'s': 'aixbt_usdt', 'p': '0.02664', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.592555" elapsed="0.003000"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.595794" elapsed="0.000096"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.595940" elapsed="0.000076"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.596066" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.596191" elapsed="0.000071"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.596439" elapsed="0.000064"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.596606" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.596548" elapsed="0.000077"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.596671" elapsed="0.000066"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.596319" elapsed="0.000445"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.596937" elapsed="0.000111"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.597154" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.597094" elapsed="0.000079"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.597219" elapsed="0.000069"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.597415" level="INFO">${price_float} = 0.34925</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.597338" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.597471" elapsed="0.000073"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.596821" elapsed="0.000748"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.597746" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.597881" elapsed="0.000073"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.598075" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.598001" elapsed="0.000085"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.598182" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.598213" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.598134" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.598268" elapsed="0.000095"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.597628" elapsed="0.000760"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.595666" elapsed="0.002744"/>
</kw>
<var name="${mark_price_item}">{'s': 'trx_usdt', 'p': '0.34925', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.595606" elapsed="0.002816"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.598628" elapsed="0.000088"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.598763" elapsed="0.000069"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.598880" elapsed="0.000069"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.598996" elapsed="0.000069"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.599239" elapsed="0.000061"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.599404" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.599346" elapsed="0.000076"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.599467" elapsed="0.000067"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.599122" elapsed="0.000451"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.599750" elapsed="0.000062"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.599921" level="INFO">Length is 9.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.599858" elapsed="0.000082"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.599985" elapsed="0.000068"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.600183" level="INFO">${price_float} = 4.64e-05</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.600107" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.600240" elapsed="0.000073"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.599631" elapsed="0.000707"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.600515" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.600649" elapsed="0.000072"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.600838" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.600767" elapsed="0.000082"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.600942" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.600971" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.600895" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.601023" elapsed="0.000090"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.600397" elapsed="0.000741"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.598512" elapsed="0.002647"/>
</kw>
<var name="${mark_price_item}">{'s': 'dogs_usdt', 'p': '0.0000464', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.598458" elapsed="0.002713"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.601422" elapsed="0.000085"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.601553" elapsed="0.000068"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.601667" elapsed="0.000067"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.601779" elapsed="0.000066"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.602014" elapsed="0.000060"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.602175" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.602119" elapsed="0.000074"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.602237" elapsed="0.000065"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.601901" elapsed="0.000427"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.602498" elapsed="0.000061"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.602659" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.602603" elapsed="0.000074"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.602721" elapsed="0.000067"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.602908" level="INFO">${price_float} = 0.9092</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.602835" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.602962" elapsed="0.000071"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.602384" elapsed="0.000673"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.603229" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.603370" elapsed="0.000072"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.603561" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.603488" elapsed="0.000083"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.603662" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.603692" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.603615" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.603745" elapsed="0.000092"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.603114" elapsed="0.000748"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.601258" elapsed="0.002630"/>
</kw>
<var name="${mark_price_item}">{'s': 'sui_usdt', 'p': '0.9092', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.601205" elapsed="0.002695"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.604101" elapsed="0.000090"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.604236" elapsed="0.000068"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.604350" elapsed="0.000066"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.604461" elapsed="0.000067"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.604700" elapsed="0.000061"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.604860" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.604805" elapsed="0.000074"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.604922" elapsed="0.000069"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.604587" elapsed="0.000428"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.605228" elapsed="0.000059"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.605382" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.605330" elapsed="0.000069"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.605441" elapsed="0.000064"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.605620" level="INFO">${price_float} = 1.7615</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.605551" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.605673" elapsed="0.000068"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.605071" elapsed="0.000693"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.605932" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.606058" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.606238" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.606169" elapsed="0.000079"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.606335" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.606364" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.606290" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.606415" elapsed="0.000088"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.605818" elapsed="0.000708"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.603989" elapsed="0.002557"/>
</kw>
<var name="${mark_price_item}">{'s': 'ton_usdt', 'p': '1.7615', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.603934" elapsed="0.002623"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.606750" elapsed="0.000080"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.606873" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.606990" elapsed="0.000065"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.607099" elapsed="0.000063"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.607328" elapsed="0.000058"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.607482" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.607429" elapsed="0.000070"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.607541" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.607219" elapsed="0.000408"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.607789" elapsed="0.000060"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.607948" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.607896" elapsed="0.000070"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.608008" elapsed="0.000064"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.608186" level="INFO">${price_float} = 0.1016</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.608117" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.608237" elapsed="0.000068"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.607681" elapsed="0.000647"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.608495" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.608617" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.608796" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.608728" elapsed="0.000078"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.608893" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.608920" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.608848" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.608969" elapsed="0.000135"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.608382" elapsed="0.000746"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.606641" elapsed="0.002507"/>
</kw>
<var name="${mark_price_item}">{'s': 'arb_usdt', 'p': '0.1016', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.606590" elapsed="0.002569"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.609351" elapsed="0.000079"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.609473" elapsed="0.000064"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.609580" elapsed="0.000063"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.609685" elapsed="0.000063"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.609908" elapsed="0.000057"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.610060" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.610007" elapsed="0.000070"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.610118" elapsed="0.000061"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.609801" elapsed="0.000401"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.610364" elapsed="0.000057"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.610528" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.610474" elapsed="0.000071"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.610587" elapsed="0.000065"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.610770" level="INFO">${price_float} = 3.399</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.610696" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.610820" elapsed="0.000067"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.610258" elapsed="0.000652"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.611070" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.611191" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.611369" level="INFO">${timestamp_str} = 1779971239492</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.611302" elapsed="0.000077"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.611464" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.611492" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.611421" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.611541" elapsed="0.000086"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.610963" elapsed="0.000687"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.609242" elapsed="0.002427"/>
</kw>
<var name="${mark_price_item}">{'s': 'ordi_usdt', 'p': '3.399', 't': 1779971239492}</var>
<status status="PASS" start="2026-05-28T20:27:20.609192" elapsed="0.002488"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.611869" elapsed="0.000085"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.611996" elapsed="0.000064"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.612103" elapsed="0.000063"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.612208" elapsed="0.000062"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.612477" elapsed="0.000059"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.612632" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.612578" elapsed="0.000071"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.612691" elapsed="0.000061"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.612327" elapsed="0.000449"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.612937" elapsed="0.000057"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.613090" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.613036" elapsed="0.000071"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.613148" elapsed="0.000063"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.613324" level="INFO">${price_float} = 0.3554</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.613256" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.613376" elapsed="0.000067"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.612829" elapsed="0.000638"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.613627" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.613744" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.613907" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.613845" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.614006" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.614032" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.613964" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.614079" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.613520" elapsed="0.000661"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.611763" elapsed="0.002435"/>
</kw>
<var name="${mark_price_item}">{'s': 'ondo_usdt', 'p': '0.3554', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.611713" elapsed="0.002496"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.614381" elapsed="0.000078"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.614498" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.614598" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.614696" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.614902" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.615043" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.614994" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.615096" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.614803" elapsed="0.000372"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.615324" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.615464" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.615416" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.615518" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.615682" level="INFO">${price_float} = 0.337</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.615618" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.615729" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.615224" elapsed="0.000588"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.615969" elapsed="0.000114"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.616123" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.616289" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.616226" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.616377" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.616403" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.616337" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.616450" elapsed="0.000082"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.615862" elapsed="0.000691"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.614284" elapsed="0.002287"/>
</kw>
<var name="${mark_price_item}">{'s': 'bera_usdt', 'p': '0.337', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.614238" elapsed="0.002344"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.616756" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.616870" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.616971" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.617079" elapsed="0.000060"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.617289" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.617429" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.617381" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.617484" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.617188" elapsed="0.000374"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.617711" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.617851" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.617802" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.617905" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.618069" level="INFO">${price_float} = 0.2927</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.618004" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.618115" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.617612" elapsed="0.000585"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.618349" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.618462" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.618628" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.618566" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.618715" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.618741" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.618675" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.618786" elapsed="0.000078"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.618246" elapsed="0.000639"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.616657" elapsed="0.002246"/>
</kw>
<var name="${mark_price_item}">{'s': 'wld_usdt', 'p': '0.2927', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.616612" elapsed="0.002301"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.619091" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.619203" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.619302" elapsed="0.000057"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.619399" elapsed="0.000057"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.619649" elapsed="0.000056"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.619791" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.619744" elapsed="0.000063"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.619849" elapsed="0.000060"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.619504" elapsed="0.000427"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.620079" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.620220" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.620170" elapsed="0.000066"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.620276" elapsed="0.000059"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.620451" level="INFO">${price_float} = 369.56</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.620386" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.620498" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.619980" elapsed="0.000600"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.620728" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.620840" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.621004" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.620941" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.621092" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.621118" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.621052" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.621164" elapsed="0.000079"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.620629" elapsed="0.000635"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.618989" elapsed="0.002292"/>
</kw>
<var name="${mark_price_item}">{'s': 'xmr_usdt', 'p': '369.56', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.618944" elapsed="0.002348"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.621465" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.621578" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.621677" elapsed="0.000057"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.621773" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.621978" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.622117" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.622068" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.622172" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.621879" elapsed="0.000371"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.622395" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.622536" level="INFO">Length is 8.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.622488" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.622589" elapsed="0.000057"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.622751" level="INFO">${price_float} = 0.000428</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.622686" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.622797" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.622298" elapsed="0.000582"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.623070" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.623180" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.623342" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.623282" elapsed="0.000070"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.623430" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.623456" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.623390" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.623514" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.622929" elapsed="0.000686"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.621367" elapsed="0.002266"/>
</kw>
<var name="${mark_price_item}">{'s': 'not_usdt', 'p': '0.000428', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.621322" elapsed="0.002321"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.623814" elapsed="0.000079"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.623933" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.624032" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.624129" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.624334" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.624474" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.624425" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.624527" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.624235" elapsed="0.000370"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.624758" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.624896" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.624848" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.624949" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.625110" level="INFO">${price_float} = 0.472</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.625046" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.625156" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.624656" elapsed="0.000583"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.625386" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.625497" elapsed="0.000061"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.625659" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.625597" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.625746" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.625771" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.625705" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.625817" elapsed="0.000079"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.625288" elapsed="0.000630"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.623717" elapsed="0.002218"/>
</kw>
<var name="${mark_price_item}">{'s': 'jto_usdt', 'p': '0.472', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.623672" elapsed="0.002274"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.626123" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.626234" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.626333" elapsed="0.000057"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.626429" elapsed="0.000287"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.626867" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.627018" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.626970" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.627072" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.626766" elapsed="0.000383"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.627294" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.627432" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.627383" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.627485" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.627646" level="INFO">${price_float} = 0.1754</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.627583" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.627693" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.627197" elapsed="0.000579"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.627926" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.628040" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.628205" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.628143" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.628293" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.628319" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.628252" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.628365" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.627824" elapsed="0.000643"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.626026" elapsed="0.002458"/>
</kw>
<var name="${mark_price_item}">{'s': 'wif_usdt', 'p': '0.1754', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.625981" elapsed="0.002514"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.628669" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.628783" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.628883" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.628981" elapsed="0.000057"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.629187" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.629328" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.629279" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.629382" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.629087" elapsed="0.000374"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.629608" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.629749" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.629700" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.629802" elapsed="0.000100"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.630011" level="INFO">${price_float} = 0.4881</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.629944" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.630069" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.629509" elapsed="0.000644"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.630302" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.630414" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.630577" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.630516" elapsed="0.000070"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.630665" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.630690" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.630625" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.630737" elapsed="0.000079"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.630203" elapsed="0.000634"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.628571" elapsed="0.002285"/>
</kw>
<var name="${mark_price_item}">{'s': 'grass_usdt', 'p': '0.4881', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.628525" elapsed="0.002341"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.631040" elapsed="0.000075"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.631155" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.631254" elapsed="0.000061"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.631354" elapsed="0.000059"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.631563" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.631704" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.631655" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.631759" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.631464" elapsed="0.000373"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.631990" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.632131" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.632081" elapsed="0.000066"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.632190" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.632355" level="INFO">${price_float} = 3.005</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.632290" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.632403" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.631892" elapsed="0.000594"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.632637" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.632750" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.632918" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.632855" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.633007" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.633032" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.632965" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.633079" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.632536" elapsed="0.000645"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.630942" elapsed="0.002257"/>
</kw>
<var name="${mark_price_item}">{'s': 'uni_usdt', 'p': '3.005', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.630897" elapsed="0.002323"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.633396" elapsed="0.000076"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.633512" elapsed="0.000104"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.633656" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.633755" elapsed="0.000059"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.633963" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.634104" level="INFO">Length is 7.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.634055" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.634157" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.633863" elapsed="0.000373"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.634384" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.634523" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.634475" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.634576" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.634739" level="INFO">${price_float} = 0.1159</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.634676" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.634787" elapsed="0.000061"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.634285" elapsed="0.000585"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.635020" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.635133" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.635298" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.635234" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.635387" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.635413" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.635345" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.635459" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.634919" elapsed="0.000641"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.633297" elapsed="0.002280"/>
</kw>
<var name="${mark_price_item}">{'s': 'op_usdt', 'p': '0.1159', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.633251" elapsed="0.002337"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.635767" elapsed="0.000077"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.635889" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.635989" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.636089" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.636295" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.636436" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.636387" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.636490" elapsed="0.000067"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.636196" elapsed="0.000383"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.636727" elapsed="0.000095"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.636913" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.636862" elapsed="0.000066"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.636967" elapsed="0.000060"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.637134" level="INFO">${price_float} = 0.18204</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.637069" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.637181" elapsed="0.000064"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.636628" elapsed="0.000638"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.637417" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.637533" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.637699" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.637636" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.637788" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.637814" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.637747" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.637861" elapsed="0.000079"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.637315" elapsed="0.000646"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.635667" elapsed="0.002312"/>
</kw>
<var name="${mark_price_item}">{'s': 'xlm_usdt', 'p': '0.18204', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.635621" elapsed="0.002368"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.638164" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.638276" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.638376" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.638475" elapsed="0.000059"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.638683" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.638825" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.638776" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.638881" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.638583" elapsed="0.000377"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.639109" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.639249" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.639200" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.639303" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.639466" level="INFO">${price_float} = 0.176</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.639402" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.639513" elapsed="0.000066"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.639009" elapsed="0.000592"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.639753" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.639873" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.640046" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.639981" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.640134" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.640160" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.640093" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.640206" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.639650" elapsed="0.000657"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.638066" elapsed="0.002259"/>
</kw>
<var name="${mark_price_item}">{'s': 'jup_usdt', 'p': '0.176', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.638020" elapsed="0.002315"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.640558" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.640672" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.640772" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.640870" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.641077" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.641219" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.641170" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.641273" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.640977" elapsed="0.000374"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.641500" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.641642" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.641592" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.641695" elapsed="0.000060"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.641860" level="INFO">${price_float} = 1.853</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.641795" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.641906" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.641400" elapsed="0.000590"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.642139" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.642256" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.642420" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.642358" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.642511" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.642537" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.642469" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.642583" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.642039" elapsed="0.000645"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.640412" elapsed="0.002290"/>
</kw>
<var name="${mark_price_item}">{'s': 'trump_usdt', 'p': '1.853', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.640366" elapsed="0.002347"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.642888" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.643011" elapsed="0.000061"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.643113" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.643211" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.643418" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.643564" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.643511" elapsed="0.000068"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.643618" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.643318" elapsed="0.000378"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.643888" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.644031" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.643981" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.644084" elapsed="0.000059"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.644249" level="INFO">${price_float} = 1.2843</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.644184" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.644296" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.643745" elapsed="0.000635"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.644530" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.644643" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.644816" level="INFO">${timestamp_str} = 1779971239492</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.644752" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.644905" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.644931" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.644865" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.644977" elapsed="0.000079"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.644429" elapsed="0.000648"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.642789" elapsed="0.002306"/>
</kw>
<var name="${mark_price_item}">{'s': 'xrp_usdt', 'p': '1.2843', 't': 1779971239492}</var>
<status status="PASS" start="2026-05-28T20:27:20.642743" elapsed="0.002362"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.645281" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.645395" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.645496" elapsed="0.000063"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.645600" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.645810" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.645950" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.645902" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.646004" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.645707" elapsed="0.000375"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.646230" elapsed="0.000064"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.646382" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.646333" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.646436" elapsed="0.000060"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.646602" level="INFO">${price_float} = 0.08704</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.646537" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.646649" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.646131" elapsed="0.000602"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.646882" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.646994" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.647159" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.647096" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.647248" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.647317" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.647207" elapsed="0.000119"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.647365" elapsed="0.000081"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.646782" elapsed="0.000686"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.645183" elapsed="0.002303"/>
</kw>
<var name="${mark_price_item}">{'s': 'pol_usdt', 'p': '0.08704', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.645136" elapsed="0.002361"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.647671" elapsed="0.000076"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.647787" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.647891" elapsed="0.000061"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.647992" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.648200" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.648342" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.648293" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.648396" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.648099" elapsed="0.000377"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.648625" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.648765" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.648717" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.648820" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.648982" level="INFO">${price_float} = 0.08348</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.648918" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.649032" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.648524" elapsed="0.000591"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.649263" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.649376" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.649539" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.649478" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.649639" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.649664" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.649598" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.649710" elapsed="0.000085"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.649164" elapsed="0.000653"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.647572" elapsed="0.002262"/>
</kw>
<var name="${mark_price_item}">{'s': 'hbar_usdt', 'p': '0.08348', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.647527" elapsed="0.002318"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.650021" elapsed="0.000076"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.650137" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.650243" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.650341" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.650585" elapsed="0.000056"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.650727" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.650680" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.650783" elapsed="0.000055"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.650448" elapsed="0.000412"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651009" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.651151" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651102" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651205" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.651369" level="INFO">${price_float} = 631.06</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651304" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651415" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.650909" elapsed="0.000589"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651648" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651765" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.651936" level="INFO">${timestamp_str} = 1779971239492</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651868" elapsed="0.000078"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.652025" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.652050" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.651984" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.652096" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.651547" elapsed="0.000650"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.649922" elapsed="0.002293"/>
</kw>
<var name="${mark_price_item}">{'s': 'bnb_usdt', 'p': '631.06', 't': 1779971239492}</var>
<status status="PASS" start="2026-05-28T20:27:20.649876" elapsed="0.002351"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.652400" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.652513" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.652612" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.652720" elapsed="0.000060"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.652929" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.653071" level="INFO">Length is 13.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.653022" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.653125" elapsed="0.000061"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.652829" elapsed="0.000379"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.653356" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.653497" level="INFO">Length is 9.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.653448" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.653550" elapsed="0.000059"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.653714" level="INFO">${price_float} = 0.0001171</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.653649" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.653760" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.653258" elapsed="0.000585"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.653994" elapsed="0.000116"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.654150" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.654314" level="INFO">${timestamp_str} = 1742977970874</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.654252" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.654403" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.654429" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.654363" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.654475" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.653892" elapsed="0.000684"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.652303" elapsed="0.002291"/>
</kw>
<var name="${mark_price_item}">{'s': '1000sats_usdt', 'p': '0.0001171', 't': 1742977970874}</var>
<status status="PASS" start="2026-05-28T20:27:20.652257" elapsed="0.002347"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.654780" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.654892" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.654991" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.655090" elapsed="0.000059"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.655301" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.655451" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.655400" elapsed="0.000067"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.655506" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.655200" elapsed="0.000384"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.655732" elapsed="0.000057"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.655877" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.655828" elapsed="0.000069"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.655948" elapsed="0.000060"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.656115" level="INFO">${price_float} = 73282.7</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.656050" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.656161" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.655633" elapsed="0.000612"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.656397" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.656510" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.656675" level="INFO">${timestamp_str} = 1779971239492</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.656612" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.656764" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.656790" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.656723" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.656836" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.656297" elapsed="0.000641"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.654681" elapsed="0.002275"/>
</kw>
<var name="${mark_price_item}">{'s': 'btc_usdt', 'p': '73282.7', 't': 1779971239492}</var>
<status status="PASS" start="2026-05-28T20:27:20.654635" elapsed="0.002332"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.657141" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.657253" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.657355" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.657453" elapsed="0.000059"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.657701" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.657842" level="INFO">Length is 12.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.657793" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.657896" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.657560" elapsed="0.000413"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.658121" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.658261" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.658212" elapsed="0.000066"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.658317" elapsed="0.000059"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.658483" level="INFO">${price_float} = 0.086</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.658418" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.658530" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.658022" elapsed="0.000593"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.658764" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.658877" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.659041" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.658978" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.659129" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.659155" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.659088" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.659211" elapsed="0.000084"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.658664" elapsed="0.000652"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.657043" elapsed="0.002291"/>
</kw>
<var name="${mark_price_item}">{'s': 'melania_usdt', 'p': '0.086', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.656997" elapsed="0.002348"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.659518" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.659631" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.659730" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.659829" elapsed="0.000063"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.660045" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.660185" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.660136" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.660239" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.659941" elapsed="0.000376"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.660465" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.660605" level="INFO">Length is 8.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.660556" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.660657" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.660821" level="INFO">${price_float} = 0.007792</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.660757" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.660868" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.660367" elapsed="0.000584"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.661141" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.661254" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.661419" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.661357" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.661508" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.661533" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.661467" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.661580" elapsed="0.000081"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.661000" elapsed="0.000682"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.659421" elapsed="0.002279"/>
</kw>
<var name="${mark_price_item}">{'s': 'pengu_usdt', 'p': '0.007792', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.659375" elapsed="0.002335"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.661886" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.661998" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.662097" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.662199" elapsed="0.000057"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.662415" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.662558" level="INFO">Length is 13.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.662509" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.662613" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.662316" elapsed="0.000375"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.662839" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.662979" level="INFO">Length is 8.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.662931" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.663034" elapsed="0.000057"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.663199" level="INFO">${price_float} = 0.005264</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.663133" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.663246" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.662740" elapsed="0.000589"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.663477" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.663594" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.663759" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.663696" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.663847" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.663873" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.663805" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.663920" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.663378" elapsed="0.000643"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.661788" elapsed="0.002250"/>
</kw>
<var name="${mark_price_item}">{'s': '1000shib_usdt', 'p': '0.005264', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.661742" elapsed="0.002306"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.664222" elapsed="0.000075"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.664336" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.664434" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.664531" elapsed="0.000099"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.664778" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.664919" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.664871" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.664974" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.664679" elapsed="0.000376"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.665204" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.665344" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.665296" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.665399" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.665566" level="INFO">${price_float} = 0.01573</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.665499" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.665624" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.665105" elapsed="0.000603"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.665858" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.665970" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.666135" level="INFO">${timestamp_str} = 1777535337359</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.666073" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.666223" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.666249" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.666183" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.666294" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.665757" elapsed="0.000639"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.664124" elapsed="0.002290"/>
</kw>
<var name="${mark_price_item}">{'s': 'vine_usdt', 'p': '0.01573', 't': 1777535337359}</var>
<status status="PASS" start="2026-05-28T20:27:20.664078" elapsed="0.002346"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.666597" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.666710" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.666809" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.666906" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.667122" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.667260" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.667213" elapsed="0.000063"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.667314" elapsed="0.000055"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.667014" elapsed="0.000377"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.667540" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.667686" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.667635" elapsed="0.000067"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.667740" elapsed="0.000293"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.668141" level="INFO">${price_float} = 8.815</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.668076" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.668188" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.667439" elapsed="0.000833"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.668424" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.668536" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.668702" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.668640" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.668792" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.668817" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.668750" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.668863" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.668322" elapsed="0.000652"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.666500" elapsed="0.002492"/>
</kw>
<var name="${mark_price_item}">{'s': 'link_usdt', 'p': '8.815', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.666454" elapsed="0.002548"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.669175" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.669289" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.669388" elapsed="0.000057"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.669485" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.669690" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.669831" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.669782" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.669885" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.669591" elapsed="0.000374"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.670117" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.670260" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.670211" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.670314" elapsed="0.000059"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.670478" level="INFO">${price_float} = 0.0061</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.670413" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.670524" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.670014" elapsed="0.000594"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.670757" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.670869" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.671035" level="INFO">${timestamp_str} = 1779971239493</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.670972" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.671124" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.671150" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.671082" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.671196" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.670657" elapsed="0.000640"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.669078" elapsed="0.002238"/>
</kw>
<var name="${mark_price_item}">{'s': 'people_usdt', 'p': '0.0061', 't': 1779971239493}</var>
<status status="PASS" start="2026-05-28T20:27:20.669032" elapsed="0.002294"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.671503" elapsed="0.000075"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.671617" elapsed="0.006406"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.678089" elapsed="0.000069"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.678199" elapsed="0.000061"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.678428" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.678579" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.678526" elapsed="0.000090"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.678659" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.678318" elapsed="0.000427"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.678902" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.679045" level="INFO">Length is 9.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.678996" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.679100" elapsed="0.000060"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.679272" level="INFO">${price_float} = 0.0010163</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.679203" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.679324" elapsed="0.000073"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.678796" elapsed="0.000623"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.679571" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.679696" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.679863" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.679800" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.679959" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.679985" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.679918" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.680032" elapsed="0.000083"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.679469" elapsed="0.000667"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.671405" elapsed="0.008750"/>
</kw>
<var name="${mark_price_item}">{'s': 'turbo_usdt', 'p': '0.0010163', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.671356" elapsed="0.008810"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.680347" elapsed="0.000075"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.680461" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.680560" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.680659" elapsed="0.000057"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.680902" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.681044" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.680996" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.681099" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.680765" elapsed="0.000413"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.681332" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.681474" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.681425" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.681529" elapsed="0.000061"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.681696" level="INFO">${price_float} = 0.3128</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.681631" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.681744" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.681228" elapsed="0.000614"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.681994" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.682107" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.682273" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.682210" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.682362" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.682388" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.682321" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.682435" elapsed="0.000079"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.681892" elapsed="0.000643"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.680247" elapsed="0.002306"/>
</kw>
<var name="${mark_price_item}">{'s': 'ldo_usdt', 'p': '0.3128', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.680200" elapsed="0.002363"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.682739" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.682852" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.682950" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.683051" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.683257" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.683401" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.683350" elapsed="0.000067"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.683456" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.683157" elapsed="0.000377"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.683682" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.683824" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.683775" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.683878" elapsed="0.000063"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.684091" level="INFO">${price_float} = 0.0115</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.683983" elapsed="0.000118"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.684139" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.683583" elapsed="0.000639"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.684371" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.684485" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.684650" level="INFO">${timestamp_str} = 1779971239494</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.684588" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.684739" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.684765" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.684698" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.684811" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.684271" elapsed="0.000642"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.682640" elapsed="0.002291"/>
</kw>
<var name="${mark_price_item}">{'s': 'cookie_usdt', 'p': '0.0115', 't': 1779971239494}</var>
<status status="PASS" start="2026-05-28T20:27:20.682594" elapsed="0.002347"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.685127" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.685241" elapsed="0.000061"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.685342" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.685441" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.685650" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.685793" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.685744" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.685847" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.685549" elapsed="0.000376"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.686072" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.686212" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.686163" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.686265" elapsed="0.000057"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.686427" level="INFO">${price_float} = 0.0135</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.686364" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.686475" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.685974" elapsed="0.000584"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.686708" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.686821" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.686986" level="INFO">${timestamp_str} = 1779824684690</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.686924" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.687074" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.687099" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.687033" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.687146" elapsed="0.000081"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.686608" elapsed="0.000640"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.685028" elapsed="0.002238"/>
</kw>
<var name="${mark_price_item}">{'s': 'usual_usdt', 'p': '0.0135', 't': 1779824684690}</var>
<status status="PASS" start="2026-05-28T20:27:20.684982" elapsed="0.002295"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.687453" elapsed="0.000119"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.687612" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.687712" elapsed="0.000057"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.687812" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.688023" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.688165" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.688117" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.688220" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.687924" elapsed="0.000385"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.688458" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.688600" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.688551" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.688654" elapsed="0.000059"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.688819" level="INFO">${price_float} = 15.491</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.688754" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.688867" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.688358" elapsed="0.000592"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.689100" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.689212" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.689381" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.689318" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.689469" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.689495" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.689429" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.689542" elapsed="0.000078"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.689000" elapsed="0.000642"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.687354" elapsed="0.002306"/>
</kw>
<var name="${mark_price_item}">{'s': 'vvv_usdt', 'p': '15.491', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.687308" elapsed="0.002362"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.689845" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.689958" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.690057" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.690155" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.690364" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.690503" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.690454" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.690557" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.690262" elapsed="0.000373"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.690781" elapsed="0.000095"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.690965" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.690915" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.691019" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.691183" level="INFO">${price_float} = 2.012</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.691119" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.691230" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.690683" elapsed="0.000630"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.691462" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.691586" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.691753" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.691689" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.691846" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.691871" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.691802" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.691922" elapsed="0.000081"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.691363" elapsed="0.000661"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.689747" elapsed="0.002295"/>
</kw>
<var name="${mark_price_item}">{'s': 'atom_usdt', 'p': '2.012', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.689701" elapsed="0.002351"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.692227" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.692341" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.692443" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.692540" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.692747" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.692887" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.692838" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.692941" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.692647" elapsed="0.000373"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.693168" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.693307" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.693258" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.693361" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.693524" level="INFO">${price_float} = 0.2294</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.693460" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.693571" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.693068" elapsed="0.000586"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.693804" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.693916" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.694082" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.694020" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.694171" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.694196" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.694129" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.694241" elapsed="0.000123"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.693705" elapsed="0.000681"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.692128" elapsed="0.002276"/>
</kw>
<var name="${mark_price_item}">{'s': 'ada_usdt', 'p': '0.2294', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.692083" elapsed="0.002332"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.694588" elapsed="0.000072"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.694700" elapsed="0.000069"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.694810" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.694908" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.695118" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.695260" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.695211" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.695315" elapsed="0.000057"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.695016" elapsed="0.000378"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.695542" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.695684" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.695635" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.695738" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.695903" level="INFO">${price_float} = 8.777</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.695837" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.695951" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.695443" elapsed="0.000592"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.696184" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.696295" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.696458" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.696397" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.696550" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.696576" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.696505" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.696622" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.696084" elapsed="0.000639"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.694490" elapsed="0.002252"/>
</kw>
<var name="${mark_price_item}">{'s': 'avax_usdt', 'p': '8.777', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.694445" elapsed="0.002307"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.696926" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.697039" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.697141" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.697238" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.697483" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.697624" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.697577" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.697680" elapsed="0.000055"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.697345" elapsed="0.000412"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.697905" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.698059" level="INFO">Length is 4.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698009" elapsed="0.000067"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698115" elapsed="0.000059"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.698279" level="INFO">${price_float} = 0.04</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698215" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698326" elapsed="0.000063"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.697806" elapsed="0.000604"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698559" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698672" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.698838" level="INFO">${timestamp_str} = 1779822824279</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698775" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.698926" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.698952" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698886" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.698998" elapsed="0.000084"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.698459" elapsed="0.000645"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.696829" elapsed="0.002292"/>
</kw>
<var name="${mark_price_item}">{'s': 'strk_usdt', 'p': '0.04', 't': 1779822824279}</var>
<status status="PASS" start="2026-05-28T20:27:20.696783" elapsed="0.002348"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.699309" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.699421" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.699520" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.699618" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.699827" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.699971" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.699922" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.700025" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.699728" elapsed="0.000374"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.700249" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.700388" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.700340" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.700441" elapsed="0.000061"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.700610" level="INFO">${price_float} = 80.26</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.700546" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.700657" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.700151" elapsed="0.000589"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.700931" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.701042" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.701205" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.701144" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.701305" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.701331" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.701265" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.701378" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.700789" elapsed="0.000690"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.699208" elapsed="0.002290"/>
</kw>
<var name="${mark_price_item}">{'s': 'aave_usdt', 'p': '80.26', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.699162" elapsed="0.002347"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.701681" elapsed="0.000074"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.701794" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.701894" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.701993" elapsed="0.000062"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.702206" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.702347" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.702298" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.702402" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.702105" elapsed="0.000375"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.702633" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.702773" level="INFO">Length is 5.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.702724" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.702827" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.702990" level="INFO">${price_float} = 5.326</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.702926" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.703037" elapsed="0.000061"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.702531" elapsed="0.000589"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.703270" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.703382" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.703548" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.703485" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.703636" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.703662" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.703596" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.703707" elapsed="0.000079"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.703170" elapsed="0.000638"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.701584" elapsed="0.002241"/>
</kw>
<var name="${mark_price_item}">{'s': 'inj_usdt', 'p': '5.326', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.701539" elapsed="0.002297"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.704014" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.704126" elapsed="0.000062"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.704227" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.704336" elapsed="0.000058"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.704586" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.704729" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.704680" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.704783" elapsed="0.000056"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.704444" elapsed="0.000418"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705011" elapsed="0.000056"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.705155" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705106" elapsed="0.000065"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705209" elapsed="0.000062"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.705377" level="INFO">${price_float} = 0.2102</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705313" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705425" elapsed="0.000061"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.704911" elapsed="0.000597"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705658" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705770" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.705936" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705873" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.706025" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.706051" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.705984" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.706096" elapsed="0.000080"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.705557" elapsed="0.000641"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.703916" elapsed="0.002300"/>
</kw>
<var name="${mark_price_item}">{'s': 'crv_usdt', 'p': '0.2102', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.703866" elapsed="0.002361"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.706403" elapsed="0.000072"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.706514" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.706612" elapsed="0.000058"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.706709" elapsed="0.000056"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.706912" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.707057" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.707005" elapsed="0.000067"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.707111" elapsed="0.000054"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.706814" elapsed="0.000373"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.707333" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.707480" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.707425" elapsed="0.000071"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.707535" elapsed="0.000058"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.707708" level="INFO">${price_float} = 4386.65</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.707643" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.707756" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.707235" elapsed="0.000604"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.708036" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.708152" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.708315" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.708254" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.708403" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.708430" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.708364" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.708477" elapsed="0.000086"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.707888" elapsed="0.000697"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.706305" elapsed="0.002298"/>
</kw>
<var name="${mark_price_item}">{'s': 'paxg_usdt', 'p': '4386.65', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.706259" elapsed="0.002355"/>
</iter>
<iter>
<kw name="验证期货标记价格项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_item, dict)</arg>
<arg>标记价格项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.708787" elapsed="0.000073"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>s</arg>
<arg>标记价格项应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.708899" elapsed="0.000060"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>p</arg>
<arg>标记价格项应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.708999" elapsed="0.000059"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_item}</arg>
<arg>t</arg>
<arg>标记价格项应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.709097" elapsed="0.000059"/>
</kw>
<kw name="验证交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.709303" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.709443" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.709394" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.709496" elapsed="0.000061"/>
</kw>
<arg>${mark_price_item}[s]</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.709204" elapsed="0.000375"/>
</kw>
<kw name="验证标记价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.709726" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.709865" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:20.709816" elapsed="0.000064"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:20.709918" elapsed="0.000060"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.710082" level="INFO">${price_float} = 4380.87</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:20.710019" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.710129" elapsed="0.000062"/>
</kw>
<arg>${mark_price_item}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.709629" elapsed="0.000583"/>
</kw>
<kw name="验证时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.710364" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.710475" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.710639" level="INFO">${timestamp_str} = 1779971239495</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:20.710577" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.710727" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:20.710753" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:20.710686" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:20.710809" elapsed="0.000081"/>
</kw>
<arg>${mark_price_item}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:20.710262" elapsed="0.000649"/>
</kw>
<arg>${mark_price_item}</arg>
<doc>验证单个标记价格项的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.708689" elapsed="0.002240"/>
</kw>
<var name="${mark_price_item}">{'s': 'xaut_usdt', 'p': '4380.87', 't': 1779971239495}</var>
<status status="PASS" start="2026-05-28T20:27:20.708643" elapsed="0.002296"/>
</iter>
<var>${mark_price_item}</var>
<value>@{mark_price_list}</value>
<status status="PASS" start="2026-05-28T20:27:20.526286" elapsed="0.184663"/>
</for>
<arg>${data}</arg>
<doc>验证期货标记价格列表的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:20.525880" elapsed="0.185091"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.711334" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:20.711147" elapsed="0.000197"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:20.711442" elapsed="0.000185"/>
</kw>
<msg time="2026-05-28T20:27:20.711660" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:20.711389" elapsed="0.000281"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.711772" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:20.711715" elapsed="0.000067"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.711917" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:20.711830" elapsed="0.000098"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.712044" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:20.711975" elapsed="0.000079"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.712195" level="INFO">${summary_content} = 🧪 测试过程: 获取期货U本位标记价格 | 📡 请求接口: /v1/future-u/market/public/q/mark-price | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:20.712095" elapsed="0.000112"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.712324" level="INFO">${final_summary} = 🧪 测试过程: 获取期货U本位标记价格 | 📡 请求接口: /v1/future-u/market/public/q/mark-price | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:20.712249" elapsed="0.000085"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.712465" level="INFO">🧪 测试过程: 获取期货U本位标记价格 | 📡 请求接口: /v1/future-u/market/public/q/mark-price | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.712377" elapsed="0.000104"/>
</kw>
<arg>获取期货U本位标记价格</arg>
<arg>/v1/future-u/market/public/q/mark-price</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:20.711031" elapsed="0.001470"/>
</kw>
<doc>验证期货U本位标记价格接口功能</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:20.048149" elapsed="0.664402"/>
</test>
<doc>期货U本位标记价格接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:20.033248" elapsed="0.679419"/>
</suite>
<suite id="s1-s2-s2-s5" name="Future U Symbol Mark Price" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/q/future_u_symbol_mark_price.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.714662" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:20.714592" elapsed="0.000080"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.714770" elapsed="0.000008"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:20.714701" elapsed="0.000090"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.714890" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.714838" elapsed="0.000069"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:20.714800" elapsed="0.000120"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:20.714694" elapsed="0.000234"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.715173" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.715127" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.715269" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.715314" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.715357" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.715410" elapsed="0.000047"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.715495" elapsed="0.000007"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:20.715212" elapsed="0.000302"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.715663" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.715580" elapsed="0.000099"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.715804" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.715725" elapsed="0.000095"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.715941" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.715860" elapsed="0.000095"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.716080" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.715995" elapsed="0.000100"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.716214" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.716135" elapsed="0.000093"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.716350" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.716268" elapsed="0.000097"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.716491" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.716405" elapsed="0.000102"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.716635" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.716551" elapsed="0.000099"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.716774" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:20.716690" elapsed="0.000099"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:20.715522" elapsed="0.001280"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.716847" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.716892" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.716939" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.716985" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.717031" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.717075" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.717116" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.717158" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.717199" elapsed="0.000005"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:20.716810" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:20.715206" elapsed="0.002017"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.717314" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.717256" elapsed="0.000074"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:20.717471" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:20.717369" elapsed="0.000167"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:20.715037" elapsed="0.002523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.717631" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:20.717598" elapsed="0.000048"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:20.714509" elapsed="0.003155"/>
</kw>
<test id="s1-s2-s2-s5-t1" name="获取期货U本位符号标记价格_正常请求" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:20.718952" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:20.718690" elapsed="0.000274"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:20.719208" elapsed="0.000008"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:20.719010" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:20.719003" elapsed="0.000235"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:20.719250" elapsed="0.000013"/>
</return>
<msg time="2026-05-28T20:27:20.719326" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:20.718397" elapsed="0.000939"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:22.494547" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price?symbol=btc_usdt 
 path_url=/v1/future-u/market/public/q/symbol-mark-price?symbol=btc_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:22.494930" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price?symbol=btc_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:22 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '0a460941d6b5f9eab425e30e5a828f25', 'X-Transparent': '00-0a460941d6b5f9eab425e30e5a828f25-387a97873a932962-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40c95fde4f3d-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"s":"btc_usdt","p":"73282.6","t":1779971241510},"ts":1779971242467} 
 </msg>
<msg time="2026-05-28T20:27:22.495121" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:22.495570" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:20.719648" elapsed="1.775992"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:22.495871" elapsed="0.000117"/>
</return>
<msg time="2026-05-28T20:27:22.496389" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-mark-price?symbol=btc_usdt</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:20.719386" elapsed="1.777059"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.499102" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:22.497872" elapsed="0.001388"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.500584" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:22.499541" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.501188" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:22.500889" elapsed="0.000394"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:22.497016" elapsed="0.004392"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:22.502849" level="INFO">${response_data} = {'s': 'btc_usdt', 'p': '73282.6', 't': 1779971241510}</msg>
<var>${response_data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.501665" elapsed="0.001238"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.503487" level="INFO">Length is 3.</msg>
<arg>${response_data}</arg>
<arg>响应数据不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:22.503147" elapsed="0.000431"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($response_data, dict)</arg>
<arg>标记价格数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.503818" elapsed="0.000537"/>
</kw>
<kw name="验证期货符号标记价格结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_data, dict)</arg>
<arg>标记价格数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.505423" elapsed="0.002584"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_data}</arg>
<arg>s</arg>
<arg>标记价格数据应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.508208" elapsed="0.000279"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_data}</arg>
<arg>p</arg>
<arg>标记价格数据应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.508755" elapsed="0.000243"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_data}</arg>
<arg>t</arg>
<arg>标记价格数据应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.509162" elapsed="0.000225"/>
</kw>
<kw name="验证符号标记价格交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:22.510177" elapsed="0.000236"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.510718" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:22.510551" elapsed="0.000218"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:22.510908" elapsed="0.000201"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-05-28T20:27:22.511436" level="INFO">${symbol_lower} = btc_usdt</msg>
<var>${symbol_lower}</var>
<arg>${symbol}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-05-28T20:27:22.511251" elapsed="0.000214"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-05-28T20:27:22.511765" level="INFO">${expected_lower} = btc_usdt</msg>
<var>${expected_lower}</var>
<arg>${expected_symbol}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-05-28T20:27:22.511592" elapsed="0.000202"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${symbol_lower}</arg>
<arg>${expected_lower}</arg>
<arg>返回的交易对符号应与请求的符号匹配</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:22.511931" elapsed="0.000261"/>
</kw>
<arg>${mark_price_data}[s]</arg>
<arg>${expected_symbol}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:22.509662" elapsed="0.002611"/>
</kw>
<kw name="验证符号标记价格价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:22.512799" elapsed="0.000165"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.513239" level="INFO">Length is 7.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:22.513087" elapsed="0.000199"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:22.513418" elapsed="0.000209"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.513989" level="INFO">${price_float} = 73282.6</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:22.513767" elapsed="0.000253"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.514143" elapsed="0.000219"/>
</kw>
<arg>${mark_price_data}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:22.512469" elapsed="0.001965"/>
</kw>
<kw name="验证符号标记价格时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.514955" elapsed="0.000232"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.515300" elapsed="0.000172"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.515774" level="INFO">${timestamp_str} = 1779971241510</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:22.515587" elapsed="0.000214"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.516025" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:22.516093" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:22.515916" elapsed="0.000199"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.516222" elapsed="0.000247"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-05-28T20:27:22.516894" level="INFO">${current_time} = 1779971242.516793</msg>
<var>${current_time}</var>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-05-28T20:27:22.516596" elapsed="0.000323"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.517249" level="INFO">${current_timestamp} = 1779971242516</msg>
<var>${current_timestamp}</var>
<arg>int(${current_time} * 1000)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:22.517044" elapsed="0.000230"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.517609" level="INFO">${time_diff} = 1006</msg>
<var>${time_diff}</var>
<arg>abs(${current_timestamp} - ${timestamp})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:22.517389" elapsed="0.000246"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${time_diff} &lt; 300000</arg>
<arg>时间戳应该在当前时间的5分钟内（考虑到网络延迟和时钟差异）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.517739" elapsed="0.000172"/>
</kw>
<arg>${mark_price_data}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:22.514643" elapsed="0.003331"/>
</kw>
<arg>${response_data}</arg>
<arg>btc_usdt</arg>
<doc>验证期货单个交易对标记价格的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:22.504763" elapsed="0.013268"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.519119" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:22.518577" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:22.519474" elapsed="0.000488"/>
</kw>
<msg time="2026-05-28T20:27:22.520043" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:22.519314" elapsed="0.000751"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.520326" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.520187" elapsed="0.000162"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.520631" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.520459" elapsed="0.000194"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.520909" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.520759" elapsed="0.000172"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.521290" level="INFO">${summary_content} = 🧪 测试过程: 获取期货U本位符号标记价格_正常请求 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=btc_usdt | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:22.521034" elapsed="0.000291"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.521765" level="INFO">${final_summary} = 🧪 测试过程: 获取期货U本位符号标记价格_正常请求 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=btc_usdt | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.521430" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.521999" level="INFO">🧪 测试过程: 获取期货U本位符号标记价格_正常请求 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=btc_usdt | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:22.521893" elapsed="0.000145"/>
</kw>
<arg>获取期货U本位符号标记价格_正常请求</arg>
<arg>/v1/future-u/market/public/q/symbol-mark-price?symbol=btc_usdt</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:22.518241" elapsed="0.003846"/>
</kw>
<doc>验证期货U本位单个交易对标记价格接口功能</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:20.717687" elapsed="1.804589"/>
</test>
<test id="s1-s2-s2-s5-t2" name="获取期货U本位符号标记价格_ETH交易对" line="33">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.526301" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.525535" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:22.527075" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:22.526491" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:22.526468" elapsed="0.000702"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:22.527208" elapsed="0.000033"/>
</return>
<msg time="2026-05-28T20:27:22.527436" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:22.524654" elapsed="0.002815"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:22.651985" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price?symbol=eth_usdt 
 path_url=/v1/future-u/market/public/q/symbol-mark-price?symbol=eth_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:22.652238" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price?symbol=eth_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:22 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'aa3be67897a04f5d5362958f21b28100', 'X-Transparent': '00-aa3be67897a04f5d5362958f21b28100-73c2632d0d7317d7-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40ca6c8c4f3d-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"s":"eth_usdt","p":"1982.8","t":1779971242518},"ts":1779971242634} 
 </msg>
<msg time="2026-05-28T20:27:22.652460" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:22.652726" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:22.528286" elapsed="0.124481"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:22.652942" elapsed="0.000108"/>
</return>
<msg time="2026-05-28T20:27:22.653326" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-mark-price?symbol=eth_usdt</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:22.527632" elapsed="0.125734"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.655233" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:22.654382" elapsed="0.000947"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.656141" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:22.655501" elapsed="0.000673"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.656521" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:22.656336" elapsed="0.000240"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:22.653782" elapsed="0.002876"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:22.657551" level="INFO">${response_data} = {'s': 'eth_usdt', 'p': '1982.8', 't': 1779971242518}</msg>
<var>${response_data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.656807" elapsed="0.000777"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.657977" level="INFO">Length is 3.</msg>
<arg>${response_data}</arg>
<arg>响应数据不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:22.657745" elapsed="0.000285"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($response_data, dict)</arg>
<arg>标记价格数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.658172" elapsed="0.000333"/>
</kw>
<kw name="验证期货符号标记价格结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($mark_price_data, dict)</arg>
<arg>标记价格数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.659133" elapsed="0.000231"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_data}</arg>
<arg>s</arg>
<arg>标记价格数据应包含交易对符号字段(s)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.659492" elapsed="0.000205"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_data}</arg>
<arg>p</arg>
<arg>标记价格数据应包含价格字段(p)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.659814" elapsed="0.000170"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${mark_price_data}</arg>
<arg>t</arg>
<arg>标记价格数据应包含时间戳字段(t)</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.660097" elapsed="0.000167"/>
</kw>
<kw name="验证符号标记价格交易对符号">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<arg>交易对符号应该是字符串</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:22.660840" elapsed="0.000472"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.661562" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<arg>交易对符号不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:22.661426" elapsed="0.000183"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>^[A-Za-z0-9]+_[A-Za-z0-9]+$</arg>
<arg>交易对符号应符合格式要求（如btc_usdt或BTC_USDT）</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:22.661735" elapsed="0.000179"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-05-28T20:27:22.662211" level="INFO">${symbol_lower} = eth_usdt</msg>
<var>${symbol_lower}</var>
<arg>${symbol}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-05-28T20:27:22.662044" elapsed="0.000192"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-05-28T20:27:22.662468" level="INFO">${expected_lower} = eth_usdt</msg>
<var>${expected_lower}</var>
<arg>${expected_symbol}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-05-28T20:27:22.662331" elapsed="0.000159"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${symbol_lower}</arg>
<arg>${expected_lower}</arg>
<arg>返回的交易对符号应与请求的符号匹配</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:22.662604" elapsed="0.000202"/>
</kw>
<arg>${mark_price_data}[s]</arg>
<arg>${expected_symbol}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:22.660449" elapsed="0.002415"/>
</kw>
<kw name="验证符号标记价格价格">
<kw name="Should Be String" owner="String">
<arg>${price}</arg>
<arg>标记价格应该是字符串格式</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:22.663280" elapsed="0.000133"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.663638" level="INFO">Length is 6.</msg>
<arg>${price}</arg>
<arg>标记价格不应为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:22.663515" elapsed="0.000160"/>
</kw>
<kw name="Should Match Regexp" owner="BuiltIn">
<arg>${price}</arg>
<arg>^\\d+(\\.\\d+)?$</arg>
<arg>标记价格应该是有效的数字格式</arg>
<doc>Fails if ``string`` does not match ``pattern`` as a regular expression.</doc>
<status status="PASS" start="2026-05-28T20:27:22.663815" elapsed="0.000151"/>
</kw>
<kw name="Convert To Number" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.664263" level="INFO">${price_float} = 1982.8</msg>
<var>${price_float}</var>
<arg>${price}</arg>
<doc>Converts the given item to a floating point number.</doc>
<status status="PASS" start="2026-05-28T20:27:22.664085" elapsed="0.000200"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt; 0</arg>
<arg>标记价格应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.664382" elapsed="0.000174"/>
</kw>
<arg>${mark_price_data}[p]</arg>
<doc>验证标记价格格式</doc>
<status status="PASS" start="2026-05-28T20:27:22.663014" elapsed="0.001595"/>
</kw>
<kw name="验证符号标记价格时间戳">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($timestamp, int)</arg>
<arg>时间戳应该是整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.665019" elapsed="0.000204"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.665319" elapsed="0.000152"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.665738" level="INFO">${timestamp_str} = 1779971242518</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:22.665576" elapsed="0.000186"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.665960" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:22.666027" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:22.665863" elapsed="0.000185"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} &gt;= 10</arg>
<arg>时间戳长度应该合理（至少10位）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.666144" elapsed="0.000227"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-05-28T20:27:22.666730" level="INFO">${current_time} = 1779971242.666649</msg>
<var>${current_time}</var>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-05-28T20:27:22.666483" elapsed="0.000271"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.667027" level="INFO">${current_timestamp} = 1779971242666</msg>
<var>${current_timestamp}</var>
<arg>int(${current_time} * 1000)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:22.666850" elapsed="0.000196"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.667326" level="INFO">${time_diff} = 148</msg>
<var>${time_diff}</var>
<arg>abs(${current_timestamp} - ${timestamp})</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:22.667134" elapsed="0.000212"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${time_diff} &lt; 300000</arg>
<arg>时间戳应该在当前时间的5分钟内（考虑到网络延迟和时钟差异）</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:22.667442" elapsed="0.000138"/>
</kw>
<arg>${mark_price_data}[t]</arg>
<doc>验证时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:22.664772" elapsed="0.002857"/>
</kw>
<arg>${response_data}</arg>
<arg>eth_usdt</arg>
<doc>验证期货单个交易对标记价格的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:22.658775" elapsed="0.008895"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.668560" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:22.668106" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:22.668848" elapsed="0.000442"/>
</kw>
<msg time="2026-05-28T20:27:22.669365" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:22.668687" elapsed="0.000697"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.669613" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.669492" elapsed="0.000143"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.669879" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.669729" elapsed="0.000171"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.670130" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.669999" elapsed="0.000152"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.670469" level="INFO">${summary_content} = 🧪 测试过程: 获取期货U本位符号标记价格_ETH交易对 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=eth_usdt | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:22.670240" elapsed="0.000252"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.670760" level="INFO">${final_summary} = 🧪 测试过程: 获取期货U本位符号标记价格_ETH交易对 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=eth_usdt | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.670582" elapsed="0.000202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.671142" level="INFO">🧪 测试过程: 获取期货U本位符号标记价格_ETH交易对 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=eth_usdt | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:22.670934" elapsed="0.000314"/>
</kw>
<arg>获取期货U本位符号标记价格_ETH交易对</arg>
<arg>/v1/future-u/market/public/q/symbol-mark-price?symbol=eth_usdt</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:22.667839" elapsed="0.003480"/>
</kw>
<doc>验证期货U本位ETH交易对标记价格接口功能</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:22.522577" elapsed="0.148889"/>
</test>
<test id="s1-s2-s2-s5-t3" name="获取期货U本位符号标记价格_无效交易对" line="59">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.675533" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.674824" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:22.676169" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:22.675684" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:22.675665" elapsed="0.000586"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:22.676289" elapsed="0.000028"/>
</return>
<msg time="2026-05-28T20:27:22.676467" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:22.673981" elapsed="0.002509"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:22.802262" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price?symbol=invalid_symbol 
 path_url=/v1/future-u/market/public/q/symbol-mark-price?symbol=invalid_symbol 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:22.802582" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price?symbol=invalid_symbol 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:22 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9997', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '4af18afee2216d1ac3bdcc70ecadbfe5', 'X-Transparent': '00-4af18afee2216d1ac3bdcc70ecadbfe5-d9bdf4a59f8f0204-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40cb5ff94f3d-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":[]},"data":null,"ts":1779971242784} 
 </msg>
<msg time="2026-05-28T20:27:22.802753" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:22.803082" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:22.677467" elapsed="0.125676"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:22.803336" elapsed="0.000114"/>
</return>
<msg time="2026-05-28T20:27:22.803792" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-mark-price?symbol=invalid_symbol</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:22.676622" elapsed="0.127226"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.805611" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<arg>HTTP状态码应为200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:22.804227" elapsed="0.001532"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:22.807304" level="INFO">${response_data} = None</msg>
<var>${response_data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.806059" elapsed="0.001301"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:22.808766" level="INFO">${code} = 1</msg>
<var>${code}</var>
<arg>${response.json()}</arg>
<arg>code</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.807613" elapsed="0.001214"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:22.810190" level="INFO">${msg} = failure</msg>
<var>${msg}</var>
<arg>${response.json()}</arg>
<arg>msg</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.809086" elapsed="0.001159"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.810810" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${code}</arg>
<arg>1</arg>
<arg>业务错误码应为1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:22.810489" elapsed="0.000524"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${msg}</arg>
<arg>failure</arg>
<arg>错误消息应为failure</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:22.811257" elapsed="0.000370"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${response_data}</arg>
<arg>${None}</arg>
<arg>错误情况下data应为null</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:22.811878" elapsed="0.000425"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.814048" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:22.813277" elapsed="0.000813"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:22.814579" elapsed="0.000843"/>
</kw>
<msg time="2026-05-28T20:27:22.815569" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:22.814311" elapsed="0.001295"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.816033" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.815805" elapsed="0.000270"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.816572" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.816261" elapsed="0.000344"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.816963" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.816756" elapsed="0.000241"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.817475" level="INFO">${summary_content} = 🧪 测试过程: 获取期货U本位符号标记价格_无效交易对 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=invalid_symbol | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:22.817134" elapsed="0.000381"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.817883" level="INFO">${final_summary} = 🧪 测试过程: 获取期货U本位符号标记价格_无效交易对 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=invalid_symbol | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:22.817651" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.818217" level="INFO">🧪 测试过程: 获取期货U本位符号标记价格_无效交易对 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=invalid_symbol | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:22.818067" elapsed="0.000213"/>
</kw>
<arg>获取期货U本位符号标记价格_无效交易对</arg>
<arg>/v1/future-u/market/public/q/symbol-mark-price?symbol=invalid_symbol</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:22.812669" elapsed="0.005691"/>
</kw>
<doc>验证期货U本位标记价格接口对无效交易对的处理</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:22.671692" elapsed="0.146875"/>
</test>
<test id="s1-s2-s2-s5-t4" name="获取期货U本位符号标记价格_缺少参数" line="85">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:22.823149" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:22.822352" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:22.823962" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:22.823366" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:22.823326" elapsed="0.000737"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:22.824105" elapsed="0.000035"/>
</return>
<msg time="2026-05-28T20:27:22.824334" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:22.821477" elapsed="0.002885"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:23.019506" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price 
 path_url=/v1/future-u/market/public/q/symbol-mark-price 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:23.020102" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:22 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9996', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '14a2580f9b0a39003d42ef0d355e458b', 'X-Transparent': '00-14a2580f9b0a39003d42ef0d355e458b-aa352a43d6dc510a-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40cc4afd4f3d-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":["symbol"]},"data":null,"ts":1779971242931} 
 </msg>
<msg time="2026-05-28T20:27:23.020307" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:23.020727" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:22.825279" elapsed="0.195513"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:23.021043" elapsed="0.000156"/>
</return>
<msg time="2026-05-28T20:27:23.021466" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-mark-price</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:22.824539" elapsed="0.196955"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.022726" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<arg>HTTP状态码应为200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:23.021833" elapsed="0.000967"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:23.024308" level="INFO">${response_data} = None</msg>
<var>${response_data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.023055" elapsed="0.001315"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:23.025232" level="INFO">${code} = 1</msg>
<var>${code}</var>
<arg>${response.json()}</arg>
<arg>code</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.024634" elapsed="0.000627"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:23.026466" level="INFO">${msg} = failure</msg>
<var>${msg}</var>
<arg>${response.json()}</arg>
<arg>msg</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.025397" elapsed="0.001122"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.027103" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${code}</arg>
<arg>1</arg>
<arg>业务错误码应为1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:23.026765" elapsed="0.000450"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${msg}</arg>
<arg>failure</arg>
<arg>错误消息应为failure</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:23.027424" elapsed="0.000278"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${response_data}</arg>
<arg>${None}</arg>
<arg>错误情况下data应为null</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:23.027886" elapsed="0.000309"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.029649" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.029007" elapsed="0.000688"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.030025" elapsed="0.000535"/>
</kw>
<msg time="2026-05-28T20:27:23.030653" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:23.029856" elapsed="0.000822"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.030976" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:23.030815" elapsed="0.000188"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.031358" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:23.031129" elapsed="0.000255"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.031693" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:23.031508" elapsed="0.000218"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.032202" level="INFO">${summary_content} = 🧪 测试过程: 获取期货U本位符号标记价格_缺少参数 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.031867" elapsed="0.000372"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.032691" level="INFO">${final_summary} = 🧪 测试过程: 获取期货U本位符号标记价格_缺少参数 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:23.032441" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.033013" level="INFO">🧪 测试过程: 获取期货U本位符号标记价格_缺少参数 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:23.032865" elapsed="0.000202"/>
</kw>
<arg>获取期货U本位符号标记价格_缺少参数</arg>
<arg>/v1/future-u/market/public/q/symbol-mark-price</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:23.028544" elapsed="0.004596"/>
</kw>
<doc>验证期货U本位标记价格接口对缺少参数的处理</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:22.818921" elapsed="0.214422"/>
</test>
<test id="s1-s2-s2-s5-t5" name="获取期货U本位符号标记价格_大写交易对错误" line="111">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.039135" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.038270" elapsed="0.000910"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.040097" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:23.039385" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:23.039338" elapsed="0.000873"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:23.040259" elapsed="0.000052"/>
</return>
<msg time="2026-05-28T20:27:23.040541" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:23.037243" elapsed="0.003329"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:23.172457" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price?symbol=BTC_USDT 
 path_url=/v1/future-u/market/public/q/symbol-mark-price?symbol=BTC_USDT 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:23.172814" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/symbol-mark-price?symbol=BTC_USDT 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:23 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'be58fc9123a23fb592a2ffb1a264a344', 'X-Transparent': '00-be58fc9123a23fb592a2ffb1a264a344-5c5b59269a3807c4-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40cd9fd34f3d-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":[]},"data":null,"ts":1779971243153} 
 </msg>
<msg time="2026-05-28T20:27:23.172982" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:23.173391" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:23.041607" elapsed="0.131847"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:23.173662" elapsed="0.000119"/>
</return>
<msg time="2026-05-28T20:27:23.174134" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/symbol-mark-price?symbol=BTC_USDT</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:23.040762" elapsed="0.133425"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.175925" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<arg>HTTP状态码应为200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:23.174590" elapsed="0.001476"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:23.177484" level="INFO">${response_data} = None</msg>
<var>${response_data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.176345" elapsed="0.001194"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:23.179000" level="INFO">${code} = 1</msg>
<var>${code}</var>
<arg>${response.json()}</arg>
<arg>code</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.177781" elapsed="0.001276"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:23.180345" level="INFO">${msg} = failure</msg>
<var>${msg}</var>
<arg>${response.json()}</arg>
<arg>msg</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.179303" elapsed="0.001093"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.181444" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${code}</arg>
<arg>1</arg>
<arg>业务错误码应为1</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:23.180625" elapsed="0.000910"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${msg}</arg>
<arg>failure</arg>
<arg>错误消息应为failure</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-05-28T20:27:23.181719" elapsed="0.000277"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${response_data}</arg>
<arg>${None}</arg>
<arg>错误情况下data应为null</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:23.182177" elapsed="0.000307"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.184138" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.183405" elapsed="0.000774"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.184595" elapsed="0.000733"/>
</kw>
<msg time="2026-05-28T20:27:23.185454" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:23.184366" elapsed="0.001123"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.185835" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:23.185660" elapsed="0.000204"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.186256" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:23.186005" elapsed="0.000280"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.186613" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:23.186424" elapsed="0.000219"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.187105" level="INFO">${summary_content} = 🧪 测试过程: 获取期货U本位符号标记价格_大写交易对错误 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=BTC_USDT | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.186780" elapsed="0.000361"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.187511" level="INFO">${final_summary} = 🧪 测试过程: 获取期货U本位符号标记价格_大写交易对错误 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=BTC_USDT | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:23.187272" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.187833" level="INFO">🧪 测试过程: 获取期货U本位符号标记价格_大写交易对错误 | 📡 请求接口: /v1/future-u/market/public/q/symbol-mark-price?symbol=BTC_USDT | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:23.187695" elapsed="0.000191"/>
</kw>
<arg>获取期货U本位符号标记价格_大写交易对错误</arg>
<arg>/v1/future-u/market/public/q/symbol-mark-price?symbol=BTC_USDT</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:23.182841" elapsed="0.005120"/>
</kw>
<doc>验证期货U本位标记价格接口对大写交易对的处理（应返回错误）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:23.033638" elapsed="0.154557"/>
</test>
<doc>期货U本位单个交易对标记价格接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:20.713064" elapsed="2.475711"/>
</suite>
<suite id="s1-s2-s2-s6" name="Future U Ticker" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/q/future_u_ticker.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.195492" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:23.195303" elapsed="0.000219"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.195822" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:23.195618" elapsed="0.000250"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.196110" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:23.195988" elapsed="0.000167"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:23.195896" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:23.195591" elapsed="0.000618"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.197037" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:23.196931" elapsed="0.000145"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.197334" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.197445" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.197550" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.197654" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.197758" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:23.197179" elapsed="0.000627"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.198186" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.197964" elapsed="0.000260"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.198521" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.198325" elapsed="0.000228"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.198817" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.198638" elapsed="0.000208"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.199104" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.198929" elapsed="0.000208"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.199392" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.199220" elapsed="0.000201"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.199700" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.199507" elapsed="0.000224"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.200027" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.199816" elapsed="0.000240"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.200333" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.200136" elapsed="0.000231"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.200663" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:23.200448" elapsed="0.000244"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:23.197828" elapsed="0.002892"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.200821" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.200918" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.201007" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.201112" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.201202" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.201290" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.201381" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.201473" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.201562" elapsed="0.000012"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:23.200742" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:23.197164" elapsed="0.004454"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.201824" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:23.201702" elapsed="0.000158"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:23.202231" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:23.201954" elapsed="0.000514"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:23.196690" elapsed="0.005991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.203082" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:23.202901" elapsed="0.000245"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:23.195066" elapsed="0.008148"/>
</kw>
<test id="s1-s2-s2-s6-t1" name="获取期货U本位单个Ticker数据_BTC" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.206872" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.206058" elapsed="0.000851"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.207580" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:23.207048" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:23.207028" elapsed="0.000636"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:23.207696" elapsed="0.000034"/>
</return>
<msg time="2026-05-28T20:27:23.207898" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:23.205094" elapsed="0.002830"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:23.664403" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker?symbol=btc_usdt 
 path_url=/v1/future-u/market/public/q/ticker?symbol=btc_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:23.664959" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker?symbol=btc_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:23 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'dd1839f04f8e063b6d711c59d1ea79cd', 'X-Transparent': '00-dd1839f04f8e063b6d711c59d1ea79cd-22c6c80c279513d9-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40d0be15dfc9-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"t":1779971241450,"s":"btc_usdt","c":"73282.6","h":"75959.9","l":"72689.3","a":"789157","v":"5865055","o":"75852.3","r":"-0.0338"},"ts":1779971243645} 
 </msg>
<msg time="2026-05-28T20:27:23.665181" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:23.665778" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:23.208451" elapsed="0.457392"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:23.666134" elapsed="0.000224"/>
</return>
<msg time="2026-05-28T20:27:23.666762" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/ticker</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=btc_usdt</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:23.208070" elapsed="0.458751"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.669769" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:23.668452" elapsed="0.001475"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.671211" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.670188" elapsed="0.001076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.671779" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:23.671500" elapsed="0.000369"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:23.667470" elapsed="0.004515"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.673274" level="INFO">Length is 9.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:23.672226" elapsed="0.001144"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.674541" level="INFO">${ticker_data} = {'t': 1779971241450, 's': 'btc_usdt', 'c': '73282.6', 'h': '75959.9', 'l': '72689.3', 'a': '789157', 'v': '5865055', 'o': '75852.3', 'r': '-0.0338'}</msg>
<var>${ticker_data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.673598" elapsed="0.000989"/>
</kw>
<kw name="验证单个Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.676092" elapsed="0.000214"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.676469" elapsed="0.000191"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.676820" elapsed="0.000189"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.677159" elapsed="0.000186"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.677504" elapsed="0.000189"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.677851" elapsed="0.000180"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.678185" elapsed="0.000191"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.678589" elapsed="0.000207"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.678944" elapsed="0.000168"/>
</kw>
<kw name="验证单个Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.680176" elapsed="0.000359"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.680684" elapsed="0.000226"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.681289" level="INFO">${timestamp_str} = 1779971241450</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:23.681056" elapsed="0.000264"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.681596" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:23.681690" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:23.681463" elapsed="0.000255"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.681845" elapsed="0.000314"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证单个Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.679321" elapsed="0.002914"/>
</kw>
<kw name="验证单个Ticker交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:23.683150" elapsed="0.000145"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.683525" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:23.683412" elapsed="0.000159"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.683680" elapsed="0.000148"/>
</kw>
<kw name="Should End With" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_usdt</arg>
<doc>Fails if the string ``str1`` does not end with the string ``str2``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.683942" elapsed="0.000152"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证单个Ticker交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.682434" elapsed="0.001720"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.685234" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.685030" elapsed="0.000232"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.685372" elapsed="0.000226"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.685747" elapsed="0.000168"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.686261" elapsed="0.000134"/>
</kw>
<msg time="2026-05-28T20:27:23.686482" level="INFO">${price_float} = 73282.6</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.686036" elapsed="0.000470"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.686645" elapsed="0.000252"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.684320" elapsed="0.002631"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.687854" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.687693" elapsed="0.000186"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.687970" elapsed="0.000182"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.688253" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.688881" elapsed="0.000107"/>
</kw>
<msg time="2026-05-28T20:27:23.689061" level="INFO">${price_float} = 75959.9</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.688700" elapsed="0.000382"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.689188" elapsed="0.000223"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.687090" elapsed="0.002377"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.690327" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.690167" elapsed="0.000183"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.690452" elapsed="0.000178"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.690735" elapsed="0.000115"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.691131" elapsed="0.000314"/>
</kw>
<msg time="2026-05-28T20:27:23.691581" level="INFO">${price_float} = 72689.3</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.690962" elapsed="0.000652"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.691807" elapsed="0.000373"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.689597" elapsed="0.002664"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.693511" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.693276" elapsed="0.000267"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.693664" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.694058" elapsed="0.000155"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.694578" elapsed="0.000134"/>
</kw>
<msg time="2026-05-28T20:27:23.694808" level="INFO">${price_float} = 75852.3</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.694351" elapsed="0.000483"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.694971" elapsed="0.000281"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.692462" elapsed="0.002858"/>
</kw>
<kw name="验证单个Ticker数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.696387" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.696184" elapsed="0.000233"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.696535" elapsed="0.000232"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.696895" elapsed="0.000142"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${amount}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.697394" elapsed="0.000130"/>
</kw>
<msg time="2026-05-28T20:27:23.697614" level="INFO">${amount_float} = 789157</msg>
<var>${amount_float}</var>
<arg>'${amount_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${amount}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${amount}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.697169" elapsed="0.000472"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${amount_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.697767" elapsed="0.000275"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证单个Ticker数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.695488" elapsed="0.002620"/>
</kw>
<kw name="验证单个Ticker数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.699202" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.698941" elapsed="0.000293"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.699347" elapsed="0.000225"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.699690" elapsed="0.000118"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${amount}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.700103" elapsed="0.000109"/>
</kw>
<msg time="2026-05-28T20:27:23.700303" level="INFO">${amount_float} = 5865055</msg>
<var>${amount_float}</var>
<arg>'${amount_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${amount}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${amount}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.699919" elapsed="0.000406"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${amount_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.700437" elapsed="0.000228"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证单个Ticker数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.698267" elapsed="0.002459"/>
</kw>
<kw name="验证单个Ticker涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.701591" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.701413" elapsed="0.000202"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.701712" elapsed="0.000163"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.701979" elapsed="0.000119"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${rate}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.702383" elapsed="0.000111"/>
</kw>
<msg time="2026-05-28T20:27:23.702565" level="INFO">${rate_float} = -0.0338</msg>
<var>${rate_float}</var>
<arg>'${rate_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${rate}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${rate}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.702206" elapsed="0.000382"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${rate_float} &gt;= -1 and ${rate_float} &lt;= 1</arg>
<arg>涨跌幅应该在-1到1之间</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.702694" elapsed="0.000234"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证单个Ticker涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.700866" elapsed="0.002117"/>
</kw>
<arg>${ticker_data}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.675624" elapsed="0.027409"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${ticker_data['s']}</arg>
<arg>btc_usdt</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:23.703141" elapsed="0.000481"/>
</kw>
<doc>验证期货U本位单个Ticker接口功能（BTC交易对）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:23.203293" elapsed="0.500468"/>
</test>
<test id="s1-s2-s2-s6-t2" name="获取期货U本位单个Ticker数据_ETH" line="30">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.706525" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.705967" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.707081" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:23.706662" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:23.706641" elapsed="0.000508"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:23.707185" elapsed="0.000026"/>
</return>
<msg time="2026-05-28T20:27:23.707351" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:23.705357" elapsed="0.002015"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:23.841580" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker?symbol=eth_usdt 
 path_url=/v1/future-u/market/public/q/ticker?symbol=eth_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:23.842083" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker?symbol=eth_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:23 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9997', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '459c84d61acfa8f538b6f25445ff0fe6', 'X-Transparent': '00-459c84d61acfa8f538b6f25445ff0fe6-21a5bc1f80e648cf-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40d1cf14dfc9-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"t":1779971243321,"s":"eth_usdt","c":"1982.68","h":"2086.99","l":"1966.37","a":"128179","v":"2592264","o":"2082.43","r":"-0.0479"},"ts":1779971243825} 
 </msg>
<msg time="2026-05-28T20:27:23.842257" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:23.842621" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:23.707795" elapsed="0.134895"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:23.842908" elapsed="0.000122"/>
</return>
<msg time="2026-05-28T20:27:23.843415" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/ticker</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=eth_usdt</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:23.707487" elapsed="0.135982"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.846227" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:23.844980" elapsed="0.001401"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.847696" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.846660" elapsed="0.001091"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.848278" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:23.847993" elapsed="0.000376"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:23.844074" elapsed="0.004413"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.849837" level="INFO">Length is 9.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:23.848735" elapsed="0.001196"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.851178" level="INFO">${ticker_data} = {'t': 1779971243321, 's': 'eth_usdt', 'c': '1982.68', 'h': '2086.99', 'l': '1966.37', 'a': '128179', 'v': '2592264', 'o': '2082.43', 'r': '-0.0479'}</msg>
<var>${ticker_data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.850160" elapsed="0.001073"/>
</kw>
<kw name="验证单个Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.852406" elapsed="0.000307"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.852933" elapsed="0.000266"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.853416" elapsed="0.000197"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.853778" elapsed="0.000197"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.854134" elapsed="0.000205"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.854497" elapsed="0.000214"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.854874" elapsed="0.000206"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.855238" elapsed="0.000201"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.855593" elapsed="0.000191"/>
</kw>
<kw name="验证单个Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.857056" elapsed="0.000726"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.857928" elapsed="0.000204"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.858500" level="INFO">${timestamp_str} = 1779971243321</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:23.858273" elapsed="0.000258"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.858851" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:23.858936" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:23.858664" elapsed="0.000300"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.859091" elapsed="0.000295"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证单个Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.856041" elapsed="0.003420"/>
</kw>
<kw name="验证单个Ticker交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:23.860442" elapsed="0.000170"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.860866" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:23.860736" elapsed="0.000180"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:23.861036" elapsed="0.000149"/>
</kw>
<kw name="Should End With" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_usdt</arg>
<doc>Fails if the string ``str1`` does not end with the string ``str2``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.861318" elapsed="0.000171"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证单个Ticker交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.859653" elapsed="0.001902"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.862704" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.862496" elapsed="0.000236"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.862844" elapsed="0.000237"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.863233" elapsed="0.000168"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.863747" elapsed="0.000121"/>
</kw>
<msg time="2026-05-28T20:27:23.863953" level="INFO">${price_float} = 1982.68</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.863529" elapsed="0.000448"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.864103" elapsed="0.000271"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.861750" elapsed="0.002685"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.865467" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.865269" elapsed="0.000225"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.865604" elapsed="0.000228"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.865955" elapsed="0.000128"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.866409" elapsed="0.000120"/>
</kw>
<msg time="2026-05-28T20:27:23.866604" level="INFO">${price_float} = 2086.99</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.866208" elapsed="0.000414"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.866723" elapsed="0.000199"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.864586" elapsed="0.002382"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.867757" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.867604" elapsed="0.000173"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.867857" elapsed="0.000168"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.868124" elapsed="0.000100"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.868477" elapsed="0.000111"/>
</kw>
<msg time="2026-05-28T20:27:23.868653" level="INFO">${price_float} = 1966.37</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.868320" elapsed="0.000351"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.868818" elapsed="0.000200"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.867080" elapsed="0.001987"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.869832" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.869680" elapsed="0.000172"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.869933" elapsed="0.000172"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.870195" elapsed="0.000099"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.870537" elapsed="0.000233"/>
</kw>
<msg time="2026-05-28T20:27:23.870834" level="INFO">${price_float} = 2082.43</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.870388" elapsed="0.000465"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.871040" elapsed="0.000375"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.869179" elapsed="0.002317"/>
</kw>
<kw name="验证单个Ticker数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.872624" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.872409" elapsed="0.000248"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.872778" elapsed="0.000235"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.873147" elapsed="0.000148"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${amount}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.873652" elapsed="0.000135"/>
</kw>
<msg time="2026-05-28T20:27:23.873880" level="INFO">${amount_float} = 128179</msg>
<var>${amount_float}</var>
<arg>'${amount_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${amount}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${amount}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.873436" elapsed="0.000470"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${amount_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.874035" elapsed="0.000282"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证单个Ticker数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.871677" elapsed="0.002704"/>
</kw>
<kw name="验证单个Ticker数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.875401" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.875216" elapsed="0.000209"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.875522" elapsed="0.000195"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.875823" elapsed="0.000119"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${amount}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.876241" elapsed="0.000107"/>
</kw>
<msg time="2026-05-28T20:27:23.876426" level="INFO">${amount_float} = 2592264</msg>
<var>${amount_float}</var>
<arg>'${amount_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${amount}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${amount}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.876055" elapsed="0.000393"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${amount_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.876559" elapsed="0.000233"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证单个Ticker数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.874538" elapsed="0.002310"/>
</kw>
<kw name="验证单个Ticker涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.877686" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:23.877512" elapsed="0.000198"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.877806" elapsed="0.000160"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.878073" elapsed="0.000116"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${rate}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:23.878532" elapsed="0.000115"/>
</kw>
<msg time="2026-05-28T20:27:23.878720" level="INFO">${rate_float} = -0.0479</msg>
<var>${rate_float}</var>
<arg>'${rate_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${rate}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${rate}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.878340" elapsed="0.000402"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${rate_float} &gt;= -1 and ${rate_float} &lt;= 1</arg>
<arg>涨跌幅应该在-1到1之间</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:23.878850" elapsed="0.000251"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证单个Ticker涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.876979" elapsed="0.002180"/>
</kw>
<arg>${ticker_data}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:23.851796" elapsed="0.027411"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${ticker_data['s']}</arg>
<arg>eth_usdt</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:23.879310" elapsed="0.000464"/>
</kw>
<doc>验证期货U本位单个Ticker接口功能（ETH交易对）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:23.703983" elapsed="0.175920"/>
</test>
<test id="s1-s2-s2-s6-t3" name="获取期货U本位单个Ticker数据_SOL" line="53">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:23.882765" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:23.882146" elapsed="0.000648"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:23.883411" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:23.882919" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:23.882899" elapsed="0.000588"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:23.883516" elapsed="0.000026"/>
</return>
<msg time="2026-05-28T20:27:23.883697" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:23.881458" elapsed="0.002263"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:24.071899" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker?symbol=sol_usdt 
 path_url=/v1/future-u/market/public/q/ticker?symbol=sol_usdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:24.072295" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker?symbol=sol_usdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:24 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9996', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '4b0e00452758a8c7288030615c43861e', 'X-Transparent': '00-4b0e00452758a8c7288030615c43861e-8b405de5ae7870c0-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40d2e81fdfc9-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":{"t":1779971242001,"s":"sol_usdt","c":"80.62","h":"84.78","l":"80.01","a":"253650","v":"2088282","o":"84.20","r":"-0.0425"},"ts":1779971243998} 
 </msg>
<msg time="2026-05-28T20:27:24.072499" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:24.072971" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:23.884190" elapsed="0.188851"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:24.073284" elapsed="0.000149"/>
</return>
<msg time="2026-05-28T20:27:24.073824" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/ticker</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=sol_usdt</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:23.883847" elapsed="0.190029"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.076119" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:24.075200" elapsed="0.001024"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.077170" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.076414" elapsed="0.000797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.077714" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:24.077392" elapsed="0.000388"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:24.074479" elapsed="0.003388"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.078774" level="INFO">Length is 9.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.078032" elapsed="0.000812"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.079576" level="INFO">${ticker_data} = {'t': 1779971242001, 's': 'sol_usdt', 'c': '80.62', 'h': '84.78', 'l': '80.01', 'a': '253650', 'v': '2088282', 'o': '84.20', 'r': '-0.0425'}</msg>
<var>${ticker_data}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.078987" elapsed="0.000622"/>
</kw>
<kw name="验证单个Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.080279" elapsed="0.000169"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.080576" elapsed="0.000150"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.080851" elapsed="0.000160"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.081135" elapsed="0.000150"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.081412" elapsed="0.000147"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.081680" elapsed="0.000146"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.081947" elapsed="0.000149"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.082215" elapsed="0.000153"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.082490" elapsed="0.000141"/>
</kw>
<kw name="验证单个Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.083533" elapsed="0.000266"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.083910" elapsed="0.000172"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.084372" level="INFO">${timestamp_str} = 1779971242001</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.084195" elapsed="0.000203"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.084617" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.084689" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.084508" elapsed="0.000203"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.084818" elapsed="0.000256"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证单个Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.082826" elapsed="0.002312"/>
</kw>
<kw name="验证单个Ticker交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.085921" elapsed="0.000136"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.086275" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.086160" elapsed="0.000157"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.086417" elapsed="0.000127"/>
</kw>
<kw name="Should End With" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_usdt</arg>
<doc>Fails if the string ``str1`` does not end with the string ``str2``.</doc>
<status status="PASS" start="2026-05-28T20:27:24.086648" elapsed="0.000132"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证单个Ticker交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.085288" elapsed="0.001548"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.087937" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.087609" elapsed="0.000352"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.088056" elapsed="0.000197"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.088371" elapsed="0.000127"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.088797" elapsed="0.000101"/>
</kw>
<msg time="2026-05-28T20:27:24.088968" level="INFO">${price_float} = 80.62</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.088609" elapsed="0.000381"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.089092" elapsed="0.000224"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.086980" elapsed="0.002454"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.090304" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.090139" elapsed="0.000188"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.090419" elapsed="0.000183"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.090707" elapsed="0.000117"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.091101" elapsed="0.000102"/>
</kw>
<msg time="2026-05-28T20:27:24.091273" level="INFO">${price_float} = 84.78</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.090931" elapsed="0.000363"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.091403" elapsed="0.000217"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.089567" elapsed="0.002107"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.092960" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.092704" elapsed="0.000291"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.093130" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.093520" elapsed="0.000151"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.094033" elapsed="0.000131"/>
</kw>
<msg time="2026-05-28T20:27:24.094255" level="INFO">${price_float} = 80.01</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.093807" elapsed="0.000474"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.094411" elapsed="0.000283"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.091803" elapsed="0.002963"/>
</kw>
<kw name="验证单个Ticker价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.095841" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.095635" elapsed="0.000238"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.095988" elapsed="0.000228"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.096342" elapsed="0.000143"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${price}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.096831" elapsed="0.000125"/>
</kw>
<msg time="2026-05-28T20:27:24.097044" level="INFO">${price_float} = 84.20</msg>
<var>${price_float}</var>
<arg>'${price_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${price}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${price}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.096616" elapsed="0.000453"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${price_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.097199" elapsed="0.000273"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证单个Ticker价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.094946" elapsed="0.002591"/>
</kw>
<kw name="验证单个Ticker数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.098554" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.098353" elapsed="0.000230"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.098697" elapsed="0.000223"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.099046" elapsed="0.000141"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${amount}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.099528" elapsed="0.000181"/>
</kw>
<msg time="2026-05-28T20:27:24.099795" level="INFO">${amount_float} = 253650</msg>
<var>${amount_float}</var>
<arg>'${amount_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${amount}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${amount}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.099319" elapsed="0.000502"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${amount_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.099954" elapsed="0.000275"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证单个Ticker数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.097692" elapsed="0.002602"/>
</kw>
<kw name="验证单个Ticker数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.101195" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.101030" elapsed="0.000189"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.101316" elapsed="0.000190"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.101614" elapsed="0.000119"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${amount}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.102023" elapsed="0.000106"/>
</kw>
<msg time="2026-05-28T20:27:24.102203" level="INFO">${amount_float} = 2088282</msg>
<var>${amount_float}</var>
<arg>'${amount_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${amount}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${amount}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.101844" elapsed="0.000381"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${amount_float} &gt;= 0</arg>
<arg>${field_name}应该大于等于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.102332" elapsed="0.000228"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证单个Ticker数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.100447" elapsed="0.002167"/>
</kw>
<kw name="验证单个Ticker涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.103590" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.103414" elapsed="0.000200"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.103710" elapsed="0.000164"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.103977" elapsed="0.000121"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Set Variable" owner="BuiltIn">
<arg>${rate}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.104381" elapsed="0.000109"/>
</kw>
<msg time="2026-05-28T20:27:24.104561" level="INFO">${rate_float} = -0.0425</msg>
<var>${rate_float}</var>
<arg>'${rate_type}' == 'str'</arg>
<arg>Convert To Number</arg>
<arg>${rate}</arg>
<arg>ELSE</arg>
<arg>Set Variable</arg>
<arg>${rate}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.104205" elapsed="0.000379"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${rate_float} &gt;= -1 and ${rate_float} &lt;= 1</arg>
<arg>涨跌幅应该在-1到1之间</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.104690" elapsed="0.000217"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证单个Ticker涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.102744" elapsed="0.002210"/>
</kw>
<arg>${ticker_data}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.079929" elapsed="0.025067"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${ticker_data['s']}</arg>
<arg>sol_usdt</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-05-28T20:27:24.105082" elapsed="0.000398"/>
</kw>
<doc>验证期货U本位单个Ticker接口功能（SOL交易对）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:23.880089" elapsed="0.225505"/>
</test>
<test id="s1-s2-s2-s6-t4" name="获取期货U本位单个Ticker数据_无效交易对" line="76">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.108417" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:24.107869" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.108965" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:24.108551" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:24.108532" elapsed="0.000500"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:24.109057" elapsed="0.000026"/>
</return>
<msg time="2026-05-28T20:27:24.109220" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:24.107261" elapsed="0.002002"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:24.244220" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker?symbol=invalid_symbol 
 path_url=/v1/future-u/market/public/q/ticker?symbol=invalid_symbol 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:24.244590" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker?symbol=invalid_symbol 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:24 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '9c654bb2d96f314351c5e3e85a6e9147', 'X-Transparent': '00-9c654bb2d96f314351c5e3e85a6e9147-f04c16f4a9309a24-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40d449b4dfc9-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":[]},"data":null,"ts":1779971244226} 
 </msg>
<msg time="2026-05-28T20:27:24.244780" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:24.245206" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:24.109678" elapsed="0.135596"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:24.245504" elapsed="0.000131"/>
</return>
<msg time="2026-05-28T20:27:24.246020" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/ticker</arg>
<arg>headers=${headers}</arg>
<arg>params=symbol=invalid_symbol</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:24.109375" elapsed="0.136705"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.247976" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:24.246595" elapsed="0.001514"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.json()}</arg>
<arg>code</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.248392" elapsed="0.001104"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.json()}</arg>
<arg>msg</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.249742" elapsed="0.000996"/>
</kw>
<doc>验证期货U本位单个Ticker接口对无效交易对的处理</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:24.105785" elapsed="0.145280"/>
</test>
<test id="s1-s2-s2-s6-t5" name="获取期货U本位单个Ticker数据_缺少参数" line="93">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.257617" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:24.256519" elapsed="0.001141"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.258632" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:24.257874" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:24.257829" elapsed="0.000914"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:24.258790" elapsed="0.000040"/>
</return>
<msg time="2026-05-28T20:27:24.259043" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:24.255214" elapsed="0.003861"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:24.389334" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker 
 path_url=/v1/future-u/market/public/q/ticker 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:24.389721" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/ticker 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:24 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '90ee3e4c221d4fd512b7efbffdeba002', 'X-Transparent': '00-90ee3e4c221d4fd512b7efbffdeba002-82906ce155e69d0d-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40d54a9ddfc9-NRT'} 
 body={"code":1,"msg":"failure","msgInfo":{"code":"invalid_symbol","template":"无效交易对","args":["symbol"]},"data":null,"ts":1779971244373} 
 </msg>
<msg time="2026-05-28T20:27:24.390070" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:24.390438" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:24.260212" elapsed="0.130292"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:24.390737" elapsed="0.000149"/>
</return>
<msg time="2026-05-28T20:27:24.391271" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/ticker</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:24.259275" elapsed="0.132053"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.393187" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:24.391807" elapsed="0.001525"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.json()}</arg>
<arg>code</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.393625" elapsed="0.001118"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.json()}</arg>
<arg>msg</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.394990" elapsed="0.001036"/>
</kw>
<doc>验证期货U本位单个Ticker接口对缺少symbol参数的处理</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:24.251616" elapsed="0.144778"/>
</test>
<doc>期货U本位单个Ticker接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:23.190509" elapsed="1.206736"/>
</suite>
<suite id="s1-s2-s2-s7" name="Future U Tickers" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/future-u/q/future_u_tickers.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.406770" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:24.406535" elapsed="0.000266"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.407173" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:24.406915" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.407496" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:24.407356" elapsed="0.000187"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:24.407259" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:24.406882" elapsed="0.000728"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.408438" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:24.408305" elapsed="0.000175"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.408698" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.408811" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.408923" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.409029" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.409142" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:24.408540" elapsed="0.000649"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.409589" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.409343" elapsed="0.000285"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.409933" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.409720" elapsed="0.000249"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.410269" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.410068" elapsed="0.000248"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.410606" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.410408" elapsed="0.000231"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.410923" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.410734" elapsed="0.000230"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.411324" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.411117" elapsed="0.000246"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.411707" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.411468" elapsed="0.000276"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.412039" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.411836" elapsed="0.000236"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.412396" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:24.412165" elapsed="0.000265"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:24.409211" elapsed="0.003250"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.412578" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.412682" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.412781" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.412872" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.412963" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.413053" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.413152" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.413242" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.413331" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:24.412491" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:24.408524" elapsed="0.004864"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.413721" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:24.413469" elapsed="0.000288"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:24.414210" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:24.413849" elapsed="0.000589"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:24.408008" elapsed="0.006489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.414651" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:24.414584" elapsed="0.000098"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:24.406223" elapsed="0.008499"/>
</kw>
<test id="s1-s2-s2-s7-t1" name="获取期货U本位Tickers数据" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.417415" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:24.416628" elapsed="0.000834"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:24.418310" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:24.417631" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:24.417602" elapsed="0.000808"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:24.418448" elapsed="0.000037"/>
</return>
<msg time="2026-05-28T20:27:24.418686" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:24.415938" elapsed="0.002777"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:24.843279" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/tickers?isPredict=true&amp;isDelivery=true 
 path_url=/v1/future-u/market/public/q/tickers?isPredict=true&amp;isDelivery=true 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:24.843761" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/tickers?isPredict=true&amp;isDelivery=true 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:24 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9997', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'bf818cdae5ac12ca1776510cef76bcb9', 'X-Transparent': '00-bf818cdae5ac12ca1776510cef76bcb9-625d2576290991a3-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40d80c10ae17-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":[{"t":1779971241450,"s":"btc_usdt","c":"73282.6","h":"75959.9","l":"72689.3","a":"789157","v":"5865055","o":"75852.3","r":"-0.0338"},{"t":1779971243321,"s":"eth_usdt","c":"1982.68","h":"2086.99","l":"1966.37","a":"128179","v":"2592264","o":"2082.43","r":"-0.0479"},{"t":1779971242001,"s":"sol_usdt","c":"80.62","h":"84.78","l":"80.01","a":"253650","v":"2088282","o":"84.20","r":"-0.0425"},{"t":1779971241453,"s":"xrp_usdt","c":"1.2841","h":"1.3425","l":"1.2669","a":"1255230","v":"1639869","o":"1.3346","r":"-0.0378"},{"t":1779971240400,"s":"bnb_usdt","c":"631.06","h":"660.33","l":"630.65","a":"358243","v":"2312143","o":"656.39","r":"-0.0385"},{"t":1779971242689,"s":"trb_usdt","c":"16.129","h":"17.598","l":"16.030","a":"1194825","v":"2008744","o":"17.354","r":"-0.0705"},{"t":1779971243001,"s":"ordi_usdt","c":"3.399","h":"4.159","l":"3.375","a":"611698","v":"2323720","o":"4.032","r":"-0.1569"},{"t":1779971241485,"s":"1000shib_usdt","c":"0.005265","h":"0.005553","l":"0.005238","a":"4087420","v":"2210447","o":"0.005528","r":"-0.0475"},{"t":1779971242141,"s":"doge_usdt","c":"0.09748","h":"0.10331","l":"0.09705","a":"6971317","v":"6976452","o":"0.10196","r":"-0.0439"},{"t":1779971241630,"s":"trx_usdt","c":"0.34931","h":"0.37419","l":"0.34789","a":"122287","v":"4472419","o":"0.37399","r":"-0.0659"},{"t":1779971242713,"s":"dogs_usdt","c":"0.0000465","h":"0.0000522","l":"0.0000461","a":"39462289","v":"1947629","o":"0.0000511","r":"-0.0900"},{"t":1779971242433,"s":"sui_usdt","c":"0.9091","h":"1.0124","l":"0.9066","a":"1212202","v":"1158210","o":"1.0088","r":"-0.0988"},{"t":1779971242920,"s":"grass_usdt","c":"0.4882","h":"0.5340","l":"0.4762","a":"2409891","v":"1196686","o":"0.5093","r":"-0.0414"},{"t":1779971243472,"s":"ban_usdt","c":"0.0783","h":"0.0944","l":"0.0777","a":"2390539","v":"2059138","o":"0.0942","r":"-0.1687"},{"t":1779971242347,"s":"people_usdt","c":"0.00611","h":"0.00667","l":"0.00601","a":"9608910","v":"610034","o":"0.00660","r":"-0.0742"},{"t":1779971242725,"s":"ton_usdt","c":"1.7617","h":"1.9162","l":"1.7592","a":"1197294","v":"2201524","o":"1.8969","r":"-0.0712"},{"t":1779971241345,"s":"aixbt_usdt","c":"0.02653","h":"0.03109","l":"0.02635","a":"1800793","v":"512942","o":"0.03091","r":"-0.1417"},{"t":1779971242443,"s":"melania_usdt","c":"0.087","h":"0.092","l":"0.085","a":"3599555","v":"318803","o":"0.090","r":"-0.0333"},{"t":1779971242054,"s":"dot_usdt","c":"1.184","h":"1.278","l":"1.175","a":"942435","v":"1154572","o":"1.266","r":"-0.0647"},{"t":1779971242510,"s":"uni_usdt","c":"3.005","h":"3.318","l":"2.989","a":"598207","v":"1881086","o":"3.289","r":"-0.0863"},{"t":1779971242132,"s":"pol_usdt","c":"0.08702","h":"0.09179","l":"0.08635","a":"1194075","v":"1065940","o":"0.09175","r":"-0.0515"},{"t":1779971242991,"s":"arb_usdt","c":"0.1016","h":"0.1111","l":"0.1011","a":"5018605","v":"531905","o":"0.1099","r":"-0.0755"},{"t":1779971242697,"s":"fil_usdt","c":"0.943","h":"1.099","l":"0.938","a":"12132885","v":"1237595","o":"1.065","r":"-0.1145"},{"t":1779971241336,"s":"op_usdt","c":"0.1158","h":"0.1304","l":"0.1155","a":"2098356","v":"257043","o":"0.1281","r":"-0.0960"},{"t":1779971242286,"s":"dydx_usdt","c":"0.144","h":"0.172","l":"0.144","a":"3594185","v":"575325","o":"0.169","r":"-0.1479"},{"t":1779971243145,"s":"pengu_usdt","c":"0.007791","h":"0.008541","l":"0.007758","a":"3886068","v":"3172017","o":"0.008502","r":"-0.0836"},{"t":1779971242881,"s":"wif_usdt","c":"0.1754","h":"0.1964","l":"0.1746","a":"540140","v":"1003391","o":"0.1950","r":"-0.1005"},{"t":1779971243666,"s":"trump_usdt","c":"1.852","h":"2.031","l":"1.849","a":"1075580","v":"2087663","o":"2.013","r":"-0.0799"},{"t":1779971242746,"s":"not_usdt","c":"0.000427","h":"0.000470","l":"0.000421","a":"9126206","v":"405414","o":"0.000454","r":"-0.0594"},{"t":1779971243448,"s":"spell_usdt","c":"0.0001464","h":"0.0001542","l":"0.0001453","a":"53416218","v":"804629","o":"0.0001531","r":"-0.0437"},{"t":1779971242317,"s":"wld_usdt","c":"0.2926","h":"0.3708","l":"0.2910","a":"2449833","v":"813885","o":"0.3641","r":"-0.1963"},{"t":1779971240400,"s":"cookie_usdt","c":"0.0115","h":"0.0128","l":"0.0113","a":"2377551","v":"287112","o":"0.0125","r":"-0.0800"},{"t":1779971240942,"s":"jup_usdt","c":"0.1761","h":"0.1978","l":"0.1755","a":"600749","v":"1121867","o":"0.1934","r":"-0.0894"},{"t":1779971242358,"s":"turbo_usdt","c":"0.0010162","h":"0.0011198","l":"0.0010037","a":"497649","v":"5272850","o":"0.0011067","r":"-0.0817"},{"t":1779971242591,"s":"ldo_usdt","c":"0.3128","h":"0.3456","l":"0.3118","a":"2385772","v":"784566","o":"0.3425","r":"-0.0867"},{"t":1779971241252,"s":"jto_usdt","c":"0.4720","h":"0.5929","l":"0.4695","a":"1215253","v":"643642","o":"0.5259","r":"-0.1024"},{"t":1779971241811,"s":"act_usdt","c":"0.01152","h":"0.01293","l":"0.01143","a":"2369131","v":"289192","o":"0.01267","r":"-0.0907"},{"t":1779971242864,"s":"xmr_usdt","c":"369.43","h":"401.50","l":"366.97","a":"1194923","v":"4654412","o":"398.52","r":"-0.0729"},{"t":1779971241848,"s":"rune_usdt","c":"0.410","h":"0.443","l":"0.401","a":"3001437","v":"1266138","o":"0.437","r":"-0.0617"},{"t":1779971243400,"s":"link_usdt","c":"8.813","h":"9.480","l":"8.770","a":"1791528","v":"1632259","o":"9.429","r":"-0.0653"},{"t":1779971242591,"s":"xlm_usdt","c":"0.18206","h":"0.18251","l":"0.14831","a":"12070892","v":"2011057","o":"0.14959","r":"0.2170"},{"t":1779971241220,"s":"hbar_usdt","c":"0.08346","h":"0.08657","l":"0.08182","a":"2389010","v":"2025825","o":"0.08637","r":"-0.0336"},{"t":1779971242395,"s":"bera_usdt","c":"0.337","h":"0.378","l":"0.336","a":"575609","v":"203725","o":"0.369","r":"-0.0867"},{"t":1779971242894,"s":"vvv_usdt","c":"15.501","h":"17.921","l":"14.812","a":"1785909","v":"29407040","o":"17.388","r":"-0.1085"},{"t":1779971241704,"s":"ondo_usdt","c":"0.3554","h":"0.4074","l":"0.3513","a":"1204293","v":"4571640","o":"0.4057","r":"-0.1239"},{"t":1779971242327,"s":"atom_usdt","c":"2.011","h":"2.225","l":"2.009","a":"1190429","v":"2523631","o":"2.219","r":"-0.0937"},{"t":1779971242220,"s":"ada_usdt","c":"0.2293","h":"0.2433","l":"0.2278","a":"11969011","v":"28206347","o":"0.2403","r":"-0.0457"},{"t":1779971241930,"s":"avax_usdt","c":"8.774","h":"9.288","l":"8.709","a":"1193517","v":"1074659","o":"9.196","r":"-0.0458"},{"t":1779971242350,"s":"aave_usdt","c":"80.20","h":"87.00","l":"79.90","a":"1197879","v":"9940244","o":"85.60","r":"-0.0630"},{"t":1779971241725,"s":"crv_usdt","c":"0.2101","h":"0.2231","l":"0.2072","a":"11970837","v":"2570439","o":"0.2187","r":"-0.0393"},{"t":1779971243428,"s":"inj_usdt","c":"5.325","h":"5.844","l":"5.302","a":"1196133","v":"6593072","o":"5.817","r":"-0.0845"},{"t":1779971242150,"s":"paxg_usdt","c":"4386.66","h":"4464.37","l":"4371.65","a":"138751","v":"613404","o":"4457.77","r":"-0.0159"}],"ts":1779971244821} 
 </msg>
<msg time="2026-05-28T20:27:24.844065" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:24.844460" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:24.419361" elapsed="0.425166"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:24.844819" elapsed="0.000114"/>
</return>
<msg time="2026-05-28T20:27:24.845329" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/tickers</arg>
<arg>headers=${headers}</arg>
<arg>params=isPredict=true&amp;isDelivery=true</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:24.418904" elapsed="0.426482"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.848068" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:24.846826" elapsed="0.001397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.849648" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.848531" elapsed="0.001174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.850254" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:24.849969" elapsed="0.000381"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:24.845980" elapsed="0.004528"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.852012" level="INFO">Length is 52.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.850743" elapsed="0.001394"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.853838" level="INFO">${tickers_list} = [{'t': 1779971241450, 's': 'btc_usdt', 'c': '73282.6', 'h': '75959.9', 'l': '72689.3', 'a': '789157', 'v': '5865055', 'o': '75852.3', 'r': '-0.0338'}, {'t': 1779971243321, 's': 'eth_usdt', 'c': '1982....</msg>
<var>${tickers_list}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:24.852418" elapsed="0.001476"/>
</kw>
<for flavor="IN">
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.855247" elapsed="0.000236"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.855657" elapsed="0.000199"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.856019" elapsed="0.000198"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.856379" elapsed="0.000196"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.856732" elapsed="0.000190"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.857088" elapsed="0.000209"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.857434" elapsed="0.000610"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.858214" elapsed="0.000180"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.858534" elapsed="0.000158"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.859809" elapsed="0.000341"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.860292" elapsed="0.000232"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.860940" level="INFO">${timestamp_str} = 1779971241450</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.860691" elapsed="0.000282"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.861272" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.861358" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.861123" elapsed="0.000263"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.861511" elapsed="0.000311"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.858900" elapsed="0.002997"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.862820" elapsed="0.000156"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.863210" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.863090" elapsed="0.000164"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.863363" elapsed="0.000141"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.862067" elapsed="0.001500"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.864758" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.864512" elapsed="0.000286"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.864935" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.865461" elapsed="0.000197"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.863734" elapsed="0.002003"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.866802" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.866576" elapsed="0.000255"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.866954" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.867334" elapsed="0.000153"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.865896" elapsed="0.001652"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.868583" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.868371" elapsed="0.000239"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.868725" elapsed="0.000214"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.869059" elapsed="0.000122"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.867682" elapsed="0.001564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.870406" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.870077" elapsed="0.000356"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.870531" elapsed="0.000177"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.870796" elapsed="0.000096"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.869388" elapsed="0.001550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.871945" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.871720" elapsed="0.000257"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.872097" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.872471" elapsed="0.000154"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.871036" elapsed="0.001664"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.873948" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.873739" elapsed="0.000238"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.874095" elapsed="0.000238"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.874461" elapsed="0.000147"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.872851" elapsed="0.001827"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.875688" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.875479" elapsed="0.000238"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.875833" elapsed="0.000194"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.876156" elapsed="0.000145"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.874824" elapsed="0.001547"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.854717" elapsed="0.021710"/>
</kw>
<var name="${ticker}">{'t': 1779971241450, 's': 'btc_usdt', 'c': '73282.6', 'h': '75959.9', 'l': '72689.3', 'a': '789157', 'v': '5865055', 'o': '75852.3', 'r': '-0.0338'}</var>
<status status="PASS" start="2026-05-28T20:27:24.854319" elapsed="0.022181"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.877111" elapsed="0.000152"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.877381" elapsed="0.000147"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.877643" elapsed="0.000142"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.877899" elapsed="0.000141"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.878157" elapsed="0.000138"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.878412" elapsed="0.000140"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.878668" elapsed="0.000138"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.878903" elapsed="0.000119"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.879117" elapsed="0.000119"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.879919" elapsed="0.000170"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.880189" elapsed="0.000128"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.880502" level="INFO">${timestamp_str} = 1779971243321</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.880387" elapsed="0.000132"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.880657" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.880704" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.880586" elapsed="0.000132"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.880784" elapsed="0.000148"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.879366" elapsed="0.001603"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.881627" elapsed="0.000123"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.881951" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.881845" elapsed="0.000145"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.882084" elapsed="0.000115"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.881082" elapsed="0.001152"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.882822" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.882704" elapsed="0.000134"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.882905" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.883119" elapsed="0.000091"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.882314" elapsed="0.000946"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.884106" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.883847" elapsed="0.000281"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.884215" elapsed="0.000166"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.884476" elapsed="0.000105"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.883363" elapsed="0.001267"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.885356" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.885214" elapsed="0.000163"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.885461" elapsed="0.000163"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.885741" elapsed="0.000105"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.884732" elapsed="0.001164"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.886627" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.886480" elapsed="0.000168"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.886731" elapsed="0.000164"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.886987" elapsed="0.000105"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.885997" elapsed="0.001144"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.887867" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.887721" elapsed="0.000166"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.887970" elapsed="0.000163"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.888224" elapsed="0.000103"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.887241" elapsed="0.001135"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.889096" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.888952" elapsed="0.000164"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.889200" elapsed="0.000163"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.889452" elapsed="0.000104"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.888477" elapsed="0.001128"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.890337" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.890182" elapsed="0.000177"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.890445" elapsed="0.000146"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.890683" elapsed="0.000101"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.889705" elapsed="0.001130"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.876810" elapsed="0.014063"/>
</kw>
<var name="${ticker}">{'t': 1779971243321, 's': 'eth_usdt', 'c': '1982.68', 'h': '2086.99', 'l': '1966.37', 'a': '128179', 'v': '2592264', 'o': '2082.43', 'r': '-0.0479'}</var>
<status status="PASS" start="2026-05-28T20:27:24.876615" elapsed="0.014280"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.891316" elapsed="0.000115"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.891513" elapsed="0.000102"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.891703" elapsed="0.000103"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.891890" elapsed="0.000100"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.892072" elapsed="0.000100"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.892245" elapsed="0.000091"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.892409" elapsed="0.000088"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.892572" elapsed="0.000086"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.892732" elapsed="0.000090"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.893361" elapsed="0.000214"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.893653" elapsed="0.000119"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.893968" level="INFO">${timestamp_str} = 1779971242001</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.893848" elapsed="0.000138"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.894146" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.894199" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.894060" elapsed="0.000155"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.894288" elapsed="0.000161"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.892943" elapsed="0.001548"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.894986" elapsed="0.000089"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.895223" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.895146" elapsed="0.000107"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.895323" elapsed="0.000090"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.894579" elapsed="0.000872"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.896084" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.895956" elapsed="0.000146"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.896175" elapsed="0.000146"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.896401" elapsed="0.000084"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.895538" elapsed="0.000988"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.897103" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.896986" elapsed="0.000133"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.897186" elapsed="0.000128"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.897387" elapsed="0.000084"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.896607" elapsed="0.000902"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.898078" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.897962" elapsed="0.000132"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.898160" elapsed="0.000127"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.898359" elapsed="0.000081"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.897588" elapsed="0.000891"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.899050" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.898934" elapsed="0.000133"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.899131" elapsed="0.000126"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.899329" elapsed="0.000082"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.898558" elapsed="0.000893"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.900021" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.899903" elapsed="0.000134"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.900102" elapsed="0.000149"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.900325" elapsed="0.000083"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.899529" elapsed="0.000919"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.901020" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.900904" elapsed="0.000132"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.901102" elapsed="0.000128"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.901303" elapsed="0.000083"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.900528" elapsed="0.000897"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.902068" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.901868" elapsed="0.000217"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.902154" elapsed="0.000111"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.902336" elapsed="0.000081"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.901505" elapsed="0.000953"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.891103" elapsed="0.011385"/>
</kw>
<var name="${ticker}">{'t': 1779971242001, 's': 'sol_usdt', 'c': '80.62', 'h': '84.78', 'l': '80.01', 'a': '253650', 'v': '2088282', 'o': '84.20', 'r': '-0.0425'}</var>
<status status="PASS" start="2026-05-28T20:27:24.890966" elapsed="0.011540"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.902831" elapsed="0.000082"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.902979" elapsed="0.000084"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.903128" elapsed="0.000083"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.903275" elapsed="0.000081"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.903420" elapsed="0.000080"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.903567" elapsed="0.000080"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.903712" elapsed="0.000080"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.903856" elapsed="0.000082"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.904001" elapsed="0.000081"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.904531" elapsed="0.000111"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.904711" elapsed="0.000106"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.904988" level="INFO">${timestamp_str} = 1779971241453</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.904884" elapsed="0.000120"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.905126" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.905169" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.905066" elapsed="0.000116"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.905241" elapsed="0.000130"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.904169" elapsed="0.001235"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.905804" elapsed="0.000074"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.905997" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.905936" elapsed="0.000085"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.906079" elapsed="0.000077"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.905476" elapsed="0.000732"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.906749" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.906642" elapsed="0.000121"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.906823" elapsed="0.000121"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.907010" elapsed="0.000076"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.906285" elapsed="0.000837"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.907643" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.907539" elapsed="0.000119"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.907719" elapsed="0.000116"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.907902" elapsed="0.000075"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.907196" elapsed="0.000817"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.908598" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.908491" elapsed="0.000122"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.908675" elapsed="0.000118"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.908859" elapsed="0.000075"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.908085" elapsed="0.000884"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.909485" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.909389" elapsed="0.000110"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.909554" elapsed="0.000108"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.909723" elapsed="0.000071"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.909041" elapsed="0.000785"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.910315" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.910219" elapsed="0.000110"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.910385" elapsed="0.000109"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.910555" elapsed="0.000068"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.909892" elapsed="0.000766"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.911144" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.911047" elapsed="0.000112"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.911213" elapsed="0.000108"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.911382" elapsed="0.000069"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.910731" elapsed="0.000754"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.911950" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.911853" elapsed="0.000110"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.912021" elapsed="0.000112"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.912195" elapsed="0.000068"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.911551" elapsed="0.000747"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.902665" elapsed="0.009659"/>
</kw>
<var name="${ticker}">{'t': 1779971241453, 's': 'xrp_usdt', 'c': '1.2841', 'h': '1.3425', 'l': '1.2669', 'a': '1255230', 'v': '1639869', 'o': '1.3346', 'r': '-0.0378'}</var>
<status status="PASS" start="2026-05-28T20:27:24.902560" elapsed="0.009779"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.912612" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.912739" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.912862" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.912984" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.913106" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.913231" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.913353" elapsed="0.000074"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.913481" elapsed="0.000068"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.913607" elapsed="0.000071"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.914049" elapsed="0.000093"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.914198" elapsed="0.000081"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.914417" level="INFO">${timestamp_str} = 1779971240400</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.914334" elapsed="0.000096"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.914536" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.914572" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.914481" elapsed="0.000102"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.914632" elapsed="0.000171"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.913750" elapsed="0.001082"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.915184" elapsed="0.000065"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.915354" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.915301" elapsed="0.000074"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.915424" elapsed="0.000066"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.914897" elapsed="0.000620"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.915968" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.915876" elapsed="0.000105"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.916033" elapsed="0.000101"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.916193" elapsed="0.000065"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.915578" elapsed="0.000712"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.916744" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.916652" elapsed="0.000105"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.916809" elapsed="0.000102"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.916968" elapsed="0.000066"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.916352" elapsed="0.000728"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.917534" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.917442" elapsed="0.000104"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.917598" elapsed="0.000100"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.917756" elapsed="0.000065"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.917143" elapsed="0.000711"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.918309" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.918218" elapsed="0.000104"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.918374" elapsed="0.000100"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.918531" elapsed="0.000065"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.917917" elapsed="0.000711"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.919077" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.918986" elapsed="0.000105"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.919143" elapsed="0.000101"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.919299" elapsed="0.000064"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.918691" elapsed="0.000703"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.919838" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.919747" elapsed="0.000103"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.919901" elapsed="0.000102"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.920059" elapsed="0.000065"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.919455" elapsed="0.000700"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.920606" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.920512" elapsed="0.000107"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.920672" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.920818" elapsed="0.000064"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.920217" elapsed="0.000696"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.912471" elapsed="0.008467"/>
</kw>
<var name="${ticker}">{'t': 1779971240400, 's': 'bnb_usdt', 'c': '631.06', 'h': '660.33', 'l': '630.65', 'a': '358243', 'v': '2312143', 'o': '656.39', 'r': '-0.0385'}</var>
<status status="PASS" start="2026-05-28T20:27:24.912383" elapsed="0.008570"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.921631" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.921752" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.921879" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.921994" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.922110" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.922241" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.922355" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.922469" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.922582" elapsed="0.000059"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.922974" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.923104" elapsed="0.000073"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.923303" level="INFO">${timestamp_str} = 1779971242689</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.923226" elapsed="0.000088"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.923411" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.923443" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.923361" elapsed="0.000093"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.923500" elapsed="0.000104"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.922704" elapsed="0.000927"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.923953" elapsed="0.000058"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.924106" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.924057" elapsed="0.000068"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.924171" elapsed="0.000058"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.923687" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.924669" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.924582" elapsed="0.000098"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.924727" elapsed="0.000093"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.924872" elapsed="0.000060"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.924311" elapsed="0.000649"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.925371" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.925288" elapsed="0.000095"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.925431" elapsed="0.000093"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.925577" elapsed="0.000059"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.925017" elapsed="0.000648"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.926078" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.925995" elapsed="0.000094"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.926141" elapsed="0.000092"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.926286" elapsed="0.000110"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.925722" elapsed="0.000704"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.926834" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.926754" elapsed="0.000092"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.926892" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.927032" elapsed="0.000057"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.926482" elapsed="0.000647"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.927528" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.927447" elapsed="0.000093"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.927585" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.927726" elapsed="0.000058"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.927183" elapsed="0.000629"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.928207" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.928127" elapsed="0.000092"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.928264" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.928406" elapsed="0.000058"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.927867" elapsed="0.000624"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.928877" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.928798" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.928934" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.929059" elapsed="0.000056"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.928546" elapsed="0.000595"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.921080" elapsed="0.008084"/>
</kw>
<var name="${ticker}">{'t': 1779971242689, 's': 'trb_usdt', 'c': '16.129', 'h': '17.598', 'l': '16.030', 'a': '1194825', 'v': '2008744', 'o': '17.354', 'r': '-0.0705'}</var>
<status status="PASS" start="2026-05-28T20:27:24.920996" elapsed="0.008180"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.929401" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.929505" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.929607" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.929708" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.929808" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.929909" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.930010" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.930111" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.930217" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.930584" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.930706" elapsed="0.000070"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.930894" level="INFO">${timestamp_str} = 1779971243001</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.930821" elapsed="0.000084"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.930996" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.931026" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.930949" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.931079" elapsed="0.000150"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.930331" elapsed="0.000937"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.931570" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.931716" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.931667" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.931777" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.931321" elapsed="0.000533"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.932242" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.932164" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.932297" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.932433" elapsed="0.000056"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.931907" elapsed="0.000609"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.932903" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.932824" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.932958" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.933094" elapsed="0.000056"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.932569" elapsed="0.000608"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.933561" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.933484" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.933615" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.933750" elapsed="0.000056"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.933233" elapsed="0.000600"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.934224" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.934146" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.934279" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.934414" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.933887" elapsed="0.000609"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.934880" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.934802" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.934935" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.935067" elapsed="0.000052"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.934548" elapsed="0.000597"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.935512" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.935438" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.935564" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.935694" elapsed="0.000053"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.935196" elapsed="0.000589"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.936150" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.936075" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.936203" elapsed="0.000069"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.936321" elapsed="0.000052"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.935837" elapsed="0.000561"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.929286" elapsed="0.007132"/>
</kw>
<var name="${ticker}">{'t': 1779971243001, 's': 'ordi_usdt', 'c': '3.399', 'h': '4.159', 'l': '3.375', 'a': '611698', 'v': '2323720', 'o': '4.032', 'r': '-0.1569'}</var>
<status status="PASS" start="2026-05-28T20:27:24.929213" elapsed="0.007217"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.936689" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.936785" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.936881" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.936977" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.937072" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.937169" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.937262" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.937356" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.937450" elapsed="0.000053"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.937793" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.937910" elapsed="0.000066"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.938087" level="INFO">${timestamp_str} = 1779971241485</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.938020" elapsed="0.000077"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.938185" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.938215" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.938142" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.938267" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.937558" elapsed="0.000824"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.938667" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.938805" level="INFO">Length is 13.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.938761" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.938863" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.938433" elapsed="0.000506"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.939309" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.939235" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.939361" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.939494" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.938989" elapsed="0.000581"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.939946" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.939873" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.939998" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.940126" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.939634" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.940568" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.940495" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.940621" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.940747" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.940253" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.941230" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.941112" elapsed="0.000128"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.941283" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.941413" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.940872" elapsed="0.000617"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.941854" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.941781" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.941906" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.942034" elapsed="0.000052"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.941540" elapsed="0.000572"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.942480" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.942407" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.942532" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.942660" elapsed="0.000053"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.942166" elapsed="0.000573"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.943093" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.943020" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.943145" elapsed="0.000070"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.943261" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.942789" elapsed="0.000548"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.936531" elapsed="0.006825"/>
</kw>
<var name="${ticker}">{'t': 1779971241485, 's': '1000shib_usdt', 'c': '0.005265', 'h': '0.005553', 'l': '0.005238', 'a': '4087420', 'v': '2210447', 'o': '0.005528', 'r': '-0.0475'}</var>
<status status="PASS" start="2026-05-28T20:27:24.936463" elapsed="0.006905"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.943572" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.943677" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.943770" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.943856" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.943944" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.944031" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.944116" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.944201" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.944286" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.944601" elapsed="0.000066"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.944708" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.944872" level="INFO">${timestamp_str} = 1779971242141</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.944810" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.944961" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.944988" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.944921" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.945035" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.944386" elapsed="0.000754"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.945401" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.945530" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.945488" elapsed="0.000105"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.945634" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.945186" elapsed="0.000520"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.946042" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.945973" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.946090" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.946215" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.945751" elapsed="0.000537"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.946630" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.946561" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.946680" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.946800" elapsed="0.000048"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.946335" elapsed="0.000537"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.947209" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.947140" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.947257" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.947376" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.946918" elapsed="0.000542"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.947799" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.947732" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.947848" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.947969" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.947508" elapsed="0.000532"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.948377" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.948310" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.948424" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.948542" elapsed="0.000052"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.948087" elapsed="0.000530"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.948977" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.948897" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.949027" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.949149" elapsed="0.000048"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.948664" elapsed="0.000556"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.949548" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.949481" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.949596" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.949703" elapsed="0.000046"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.949266" elapsed="0.000506"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.943467" elapsed="0.006323"/>
</kw>
<var name="${ticker}">{'t': 1779971242141, 's': 'doge_usdt', 'c': '0.09748', 'h': '0.10331', 'l': '0.09705', 'a': '6971317', 'v': '6976452', 'o': '0.10196', 'r': '-0.0439'}</var>
<status status="PASS" start="2026-05-28T20:27:24.943401" elapsed="0.006399"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.949991" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.950079" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.950165" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.950250" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.950336" elapsed="0.000094"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.950469" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.950555" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.950641" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.950728" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.951041" elapsed="0.000066"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.951147" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.951332" level="INFO">${timestamp_str} = 1779971241630</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.951270" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.951420" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.951446" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.951380" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.951492" elapsed="0.000082"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.950826" elapsed="0.000770"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.951859" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.951993" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.951950" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.952051" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.951642" elapsed="0.000484"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.952474" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.952406" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.952522" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.952640" elapsed="0.000048"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.952171" elapsed="0.000540"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.953044" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.952977" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.953091" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.953212" elapsed="0.000048"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.952757" elapsed="0.000526"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.953616" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.953549" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.953663" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.953780" elapsed="0.000048"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.953329" elapsed="0.000522"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.954183" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.954115" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.954231" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.954347" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.953897" elapsed="0.000521"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.954795" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.954684" elapsed="0.000121"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.954843" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.954962" elapsed="0.000048"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.954464" elapsed="0.001763"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.956666" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.956578" elapsed="0.000100"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.956724" elapsed="0.000094"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.956866" elapsed="0.000056"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.956298" elapsed="0.000650"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.957317" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.957240" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.957370" elapsed="0.000071"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.957487" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.957002" elapsed="0.000561"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.949893" elapsed="0.007688"/>
</kw>
<var name="${ticker}">{'t': 1779971241630, 's': 'trx_usdt', 'c': '0.34931', 'h': '0.37419', 'l': '0.34789', 'a': '122287', 'v': '4472419', 'o': '0.37399', 'r': '-0.0659'}</var>
<status status="PASS" start="2026-05-28T20:27:24.949831" elapsed="0.007762"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.957800" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.957895" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.957987" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.958078" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.958168" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.958258" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.958347" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.958436" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.958525" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.958854" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.958968" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.959139" level="INFO">${timestamp_str} = 1779971242713</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.959074" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.959232" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.959260" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.959189" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.959308" elapsed="0.000088"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.958628" elapsed="0.000790"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.959687" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.959817" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.959775" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.959872" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.959467" elapsed="0.000475"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.960357" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.960221" elapsed="0.000147"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.960426" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.960562" elapsed="0.000053"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.959990" elapsed="0.000650"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.961001" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.960928" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.961052" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.961178" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.960692" elapsed="0.000562"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.961608" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.961537" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.961660" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.961787" elapsed="0.000052"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.961304" elapsed="0.000559"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.962213" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.962143" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.962264" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.962389" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.961913" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.962815" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.962743" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.962865" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.962988" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.962513" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.963411" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.963340" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.963461" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.963585" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.963112" elapsed="0.000548"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.964004" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.963932" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.964054" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.964165" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.963708" elapsed="0.000545"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.957694" elapsed="0.006579"/>
</kw>
<var name="${ticker}">{'t': 1779971242713, 's': 'dogs_usdt', 'c': '0.0000465', 'h': '0.0000522', 'l': '0.0000461', 'a': '39462289', 'v': '1947629', 'o': '0.0000511', 'r': '-0.0900'}</var>
<status status="PASS" start="2026-05-28T20:27:24.957628" elapsed="0.006657"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.964489" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.964583" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.964674" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.964765" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.964857" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.964949" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.965039" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.965129" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.965216" elapsed="0.000104"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.965599" elapsed="0.000070"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.965710" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.965883" level="INFO">${timestamp_str} = 1779971242433</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.965817" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.965976" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.966004" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.965933" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.966052" elapsed="0.000090"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.965375" elapsed="0.000790"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.966434" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.966565" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.966523" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.966621" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.966213" elapsed="0.000480"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.967038" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.966968" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.967088" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.967214" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.966742" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.967638" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.967566" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.967688" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.967811" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.967339" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.968232" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.968162" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.968293" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.968417" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.967934" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.968837" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.968767" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.968888" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.969010" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.968541" elapsed="0.000545"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.969431" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.969361" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.969481" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.969604" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.969135" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.970074" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.969955" elapsed="0.000129"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.970126" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.970266" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.969728" elapsed="0.000613"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.970681" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.970611" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.970731" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.970843" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.970390" elapsed="0.000526"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.964385" elapsed="0.006550"/>
</kw>
<var name="${ticker}">{'t': 1779971242433, 's': 'sui_usdt', 'c': '0.9091', 'h': '1.0124', 'l': '0.9066', 'a': '1212202', 'v': '1158210', 'o': '1.0088', 'r': '-0.0988'}</var>
<status status="PASS" start="2026-05-28T20:27:24.964320" elapsed="0.006626"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971144" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971236" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971327" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971416" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971506" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971597" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971689" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971792" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.971888" elapsed="0.000056"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.972239" elapsed="0.000070"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.972351" elapsed="0.000134"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.972625" level="INFO">${timestamp_str} = 1779971242920</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.972541" elapsed="0.000095"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.972731" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.972760" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.972684" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.972810" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.972009" elapsed="0.000917"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.973213" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.973347" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.973303" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.973403" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.972979" elapsed="0.000496"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.973861" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.973774" elapsed="0.000097"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.973911" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.974036" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.973525" elapsed="0.000586"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.974529" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.974390" elapsed="0.000150"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.974580" elapsed="0.000097"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.974722" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.974162" elapsed="0.000635"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.975146" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.975075" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.975197" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.975320" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.974847" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.975767" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.975695" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.975817" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.975941" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.975445" elapsed="0.000571"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.976386" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.976315" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.976441" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.976565" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.976065" elapsed="0.000576"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.976986" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.976916" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.977035" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.977158" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.976689" elapsed="0.000544"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.977569" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.977498" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.977619" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.977731" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.977281" elapsed="0.000522"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.971043" elapsed="0.006779"/>
</kw>
<var name="${ticker}">{'t': 1779971242920, 's': 'grass_usdt', 'c': '0.4882', 'h': '0.5340', 'l': '0.4762', 'a': '2409891', 'v': '1196686', 'o': '0.5093', 'r': '-0.0414'}</var>
<status status="PASS" start="2026-05-28T20:27:24.970979" elapsed="0.006854"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978041" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978133" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978222" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978313" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978402" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978491" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978577" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978666" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.978754" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.979075" elapsed="0.000386"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.979503" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.979676" level="INFO">${timestamp_str} = 1779971243472</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.979610" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.979771" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.979804" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.979727" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.979853" elapsed="0.000091"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.978856" elapsed="0.001110"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.980231" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.980376" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.980333" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.980433" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.980014" elapsed="0.000490"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.980845" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.980776" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.980895" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.981020" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.980552" elapsed="0.000542"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.981438" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.981367" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.981488" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.981610" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.981143" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.982028" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.981957" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.982078" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.982201" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.981732" elapsed="0.000544"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.982619" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.982549" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.982668" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.982793" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.982324" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.983212" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.983140" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.983263" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.983385" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.982916" elapsed="0.000545"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.983804" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.983734" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.983854" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.983981" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.983510" elapsed="0.000545"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.984459" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.984334" elapsed="0.000135"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.984509" elapsed="0.000071"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.984624" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.984116" elapsed="0.000582"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.977938" elapsed="0.006779"/>
</kw>
<var name="${ticker}">{'t': 1779971243472, 's': 'ban_usdt', 'c': '0.0783', 'h': '0.0944', 'l': '0.0777', 'a': '2390539', 'v': '2059138', 'o': '0.0942', 'r': '-0.1687'}</var>
<status status="PASS" start="2026-05-28T20:27:24.977870" elapsed="0.006858"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.984927" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985020" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985110" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985199" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985289" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985376" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985465" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985555" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985644" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.985963" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.986074" elapsed="0.000066"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.986246" level="INFO">${timestamp_str} = 1779971242347</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.986181" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.986339" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.986367" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.986296" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.986415" elapsed="0.000088"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.985747" elapsed="0.000778"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.986791" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.986921" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.986879" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.986977" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.986573" elapsed="0.000476"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.987406" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.987330" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.987458" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.987581" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.987097" elapsed="0.000558"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.988000" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.987929" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.988050" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.988185" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.987704" elapsed="0.000556"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.988661" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.988588" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.988712" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.988835" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.988309" elapsed="0.000601"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.989259" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.989189" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.989308" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.989431" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.988959" elapsed="0.000546"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.989856" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.989779" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.989910" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.990034" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.989554" elapsed="0.000554"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.990451" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.990380" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.990500" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.990623" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.990157" elapsed="0.000540"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.991043" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.990972" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.991093" elapsed="0.000070"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.991207" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.990745" elapsed="0.000537"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.984826" elapsed="0.006475"/>
</kw>
<var name="${ticker}">{'t': 1779971242347, 's': 'people_usdt', 'c': '0.00611', 'h': '0.00667', 'l': '0.00601', 'a': '9608910', 'v': '610034', 'o': '0.00660', 'r': '-0.0742'}</var>
<status status="PASS" start="2026-05-28T20:27:24.984761" elapsed="0.006551"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.991518" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.991613" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.991704" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.991804" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.991895" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.991985" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.992075" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.992163" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.992252" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.992578" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.992689" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.992859" level="INFO">${timestamp_str} = 1779971242725</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.992794" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.992951" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.992980" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.992908" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.993027" elapsed="0.000136"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.992355" elapsed="0.000831"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.993464" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.993595" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:24.993553" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.993651" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.993233" elapsed="0.000490"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.994076" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.994005" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.994126" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.994250" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.993770" elapsed="0.000555"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.994668" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.994596" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.994717" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.994842" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.994372" elapsed="0.000544"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.995258" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.995188" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.995307" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.995429" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.994965" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.995856" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.995777" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.995923" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.996049" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.995552" elapsed="0.000571"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.996469" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.996397" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.996519" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.996641" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.996172" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.997064" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.996994" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.997113" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.997235" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.996763" elapsed="0.000547"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.997645" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:24.997575" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.997697" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.997807" elapsed="0.000097"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.997358" elapsed="0.000571"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.991408" elapsed="0.006540"/>
</kw>
<var name="${ticker}">{'t': 1779971242725, 's': 'ton_usdt', 'c': '1.7617', 'h': '1.9162', 'l': '1.7592', 'a': '1197294', 'v': '2201524', 'o': '1.8969', 'r': '-0.0712'}</var>
<status status="PASS" start="2026-05-28T20:27:24.991344" elapsed="0.006615"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998157" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998249" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998339" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998428" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998518" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998608" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998697" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998787" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:24.998876" elapsed="0.000053"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.999201" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.999312" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.999484" level="INFO">${timestamp_str} = 1779971241345</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:24.999418" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:24.999577" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:24.999616" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:24.999534" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:24.999664" elapsed="0.000088"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.998982" elapsed="0.000793"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.000048" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.000183" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.000141" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.000239" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.999823" elapsed="0.000488"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.000660" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.000591" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.000710" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.000835" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.000359" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.001253" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.001182" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.001302" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.001425" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.000958" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.001910" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.001832" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.001962" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.002089" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.001547" elapsed="0.000617"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.002511" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.002440" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.002562" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.002685" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.002213" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.003108" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.003037" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.003158" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.003281" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.002808" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.003701" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.003630" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.003763" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.003888" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.003404" elapsed="0.000560"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.004304" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.004231" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.004354" elapsed="0.000072"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.004470" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.004013" elapsed="0.000532"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:24.998056" elapsed="0.006509"/>
</kw>
<var name="${ticker}">{'t': 1779971241345, 's': 'aixbt_usdt', 'c': '0.02653', 'h': '0.03109', 'l': '0.02635', 'a': '1800793', 'v': '512942', 'o': '0.03091', 'r': '-0.1417'}</var>
<status status="PASS" start="2026-05-28T20:27:24.997991" elapsed="0.006585"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.004775" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.004866" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.004955" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.005043" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.005134" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.005230" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.005328" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.005426" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.005514" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.005843" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.005953" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.006124" level="INFO">${timestamp_str} = 1779971242443</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.006059" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.006264" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.006294" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.006174" elapsed="0.000129"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.006343" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.005617" elapsed="0.000834"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.006715" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.006846" level="INFO">Length is 12.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.006804" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.006902" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.006499" elapsed="0.000475"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.007323" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.007253" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.007374" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.007498" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.007022" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.007957" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.007881" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.008007" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.008133" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.007634" elapsed="0.000574"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.008563" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.008491" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.008615" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.008738" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.008257" elapsed="0.000555"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.009157" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.009086" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.009206" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.009328" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.008862" elapsed="0.000541"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.009748" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.009678" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.009798" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.009920" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.009451" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.010359" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.010283" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.010414" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.010537" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.010043" elapsed="0.000567"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.010954" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.010873" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.011003" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.011112" elapsed="0.000096"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.010658" elapsed="0.000575"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.004672" elapsed="0.006580"/>
</kw>
<var name="${ticker}">{'t': 1779971242443, 's': 'melania_usdt', 'c': '0.087', 'h': '0.092', 'l': '0.085', 'a': '3599555', 'v': '318803', 'o': '0.090', 'r': '-0.0333'}</var>
<status status="PASS" start="2026-05-28T20:27:25.004608" elapsed="0.006655"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.011473" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.011565" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.011653" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.011742" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.011831" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.011921" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.012010" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.012099" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.012188" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.012520" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.012630" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.012816" level="INFO">${timestamp_str} = 1779971242054</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.012745" elapsed="0.000082"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.012918" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.012947" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.012872" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.012996" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.012291" elapsed="0.000813"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.013369" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.013499" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.013457" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.013554" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.013152" elapsed="0.000474"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.013978" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.013906" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.014027" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.014147" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.013674" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.014569" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.014499" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.014623" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.014746" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.014270" elapsed="0.000549"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.015206" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.015135" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.015256" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.015392" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.014868" elapsed="0.000598"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.015809" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.015738" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.015859" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.015983" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.015515" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.016421" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.016341" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.016472" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.016598" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.016106" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.017026" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.016955" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.017076" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.017199" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.016721" elapsed="0.000552"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.017611" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.017540" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.017661" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.017770" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.017321" elapsed="0.000523"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.011373" elapsed="0.006490"/>
</kw>
<var name="${ticker}">{'t': 1779971242054, 's': 'dot_usdt', 'c': '1.184', 'h': '1.278', 'l': '1.175', 'a': '942435', 'v': '1154572', 'o': '1.266', 'r': '-0.0647'}</var>
<status status="PASS" start="2026-05-28T20:27:25.011308" elapsed="0.006566"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018073" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018166" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018255" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018342" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018431" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018519" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018606" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018701" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.018797" elapsed="0.000053"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.019138" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.019247" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.019416" level="INFO">${timestamp_str} = 1779971242510</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.019351" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.019560" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.019589" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.019465" elapsed="0.000134"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.019639" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.018918" elapsed="0.000829"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.020016" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.020153" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.020111" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.020217" elapsed="0.000057"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.019795" elapsed="0.000502"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.020655" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.020584" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.020709" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.020837" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.020349" elapsed="0.000562"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.021253" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.021183" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.021303" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.021425" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.020960" elapsed="0.000540"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.021849" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.021772" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.021902" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.022025" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.021548" elapsed="0.000551"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.022453" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.022379" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.022502" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.022623" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.022147" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.023038" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.022969" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.023087" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.023228" elapsed="0.000056"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.022745" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.023667" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.023596" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.023716" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.023838" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.023364" elapsed="0.000548"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.024248" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.024178" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.024297" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.024406" elapsed="0.000097"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.023961" elapsed="0.000567"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.017972" elapsed="0.006575"/>
</kw>
<var name="${ticker}">{'t': 1779971242510, 's': 'uni_usdt', 'c': '3.005', 'h': '3.318', 'l': '2.989', 'a': '598207', 'v': '1881086', 'o': '3.289', 'r': '-0.0863'}</var>
<status status="PASS" start="2026-05-28T20:27:25.017907" elapsed="0.006651"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.024751" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.024842" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.024936" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.025025" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.025114" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.025202" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.025291" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.025378" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.025471" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.025803" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.025923" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.026094" level="INFO">${timestamp_str} = 1779971242132</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.026029" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.026186" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.026215" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.026143" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.026262" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.025572" elapsed="0.000798"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.026632" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.026761" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.026719" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.026816" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.026417" elapsed="0.000483"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.027243" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.027170" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.027293" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.027416" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.026948" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.027850" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.027774" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.027905" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.028028" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.027538" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.028483" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.028410" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.028533" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.028654" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.028149" elapsed="0.000580"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.029077" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.029006" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.029126" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.029259" elapsed="0.000056"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.028777" elapsed="0.000564"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.029689" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.029619" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.029739" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.029860" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.029394" elapsed="0.000540"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.030273" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.030203" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.030322" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.030450" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.029982" elapsed="0.000541"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.030863" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.030788" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.030912" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031039" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.030571" elapsed="0.000542"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.024652" elapsed="0.006480"/>
</kw>
<var name="${ticker}">{'t': 1779971242132, 's': 'pol_usdt', 'c': '0.08702', 'h': '0.09179', 'l': '0.08635', 'a': '1194075', 'v': '1065940', 'o': '0.09175', 'r': '-0.0515'}</var>
<status status="PASS" start="2026-05-28T20:27:25.024589" elapsed="0.006555"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031338" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031433" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031522" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031611" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031705" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031801" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031897" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.031987" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.032074" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.032395" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.032509" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.032677" level="INFO">${timestamp_str} = 1779971242991</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.032613" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.033008" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.033038" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.032726" elapsed="0.000322"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.033088" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.032176" elapsed="0.001021"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.033467" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.033596" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.033555" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.033651" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.033244" elapsed="0.000484"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.034084" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.034014" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.034134" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.034255" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.033779" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.034678" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.034602" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.034727" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.034849" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.034377" elapsed="0.000560"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.035280" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.035209" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.035329" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.035452" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.034985" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.035890" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.035814" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.035943" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.036066" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.035574" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.036487" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.036413" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.036537" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.036661" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.036190" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.037083" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.037013" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.037131" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.037263" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.036785" elapsed="0.000559"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.037687" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.037617" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.037737" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.037850" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.037398" elapsed="0.000527"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.031239" elapsed="0.006704"/>
</kw>
<var name="${ticker}">{'t': 1779971242991, 's': 'arb_usdt', 'c': '0.1016', 'h': '0.1111', 'l': '0.1011', 'a': '5018605', 'v': '531905', 'o': '0.1099', 'r': '-0.0755'}</var>
<status status="PASS" start="2026-05-28T20:27:25.031176" elapsed="0.006778"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038204" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038295" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038385" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038474" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038564" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038667" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038765" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038864" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.038957" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.039275" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.039384" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.039553" level="INFO">${timestamp_str} = 1779971242697</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.039489" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.039644" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.039672" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.039603" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.039720" elapsed="0.000088"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.039059" elapsed="0.000772"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.040095" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.040224" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.040183" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.040279" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.039878" elapsed="0.000473"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.040705" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.040627" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.040758" elapsed="0.000092"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.040898" elapsed="0.000053"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.040398" elapsed="0.000577"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.041328" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.041257" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.041377" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.041501" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.041030" elapsed="0.000545"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.041934" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.041858" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.041983" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.042106" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.041624" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.042581" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.042465" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.042632" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.042758" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.042229" elapsed="0.000616"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.043193" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.043122" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.043243" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.043366" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.042895" elapsed="0.000546"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.043800" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.043724" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.043855" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.043984" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.043489" elapsed="0.000569"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.044391" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.044321" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.044446" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.044556" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.044106" elapsed="0.000523"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.038050" elapsed="0.006597"/>
</kw>
<var name="${ticker}">{'t': 1779971242697, 's': 'fil_usdt', 'c': '0.943', 'h': '1.099', 'l': '0.938', 'a': '12132885', 'v': '1237595', 'o': '1.065', 'r': '-0.1145'}</var>
<status status="PASS" start="2026-05-28T20:27:25.037986" elapsed="0.006673"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.044871" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.044966" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.045054" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.045143" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.045233" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.045323" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.045411" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.045499" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.045588" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.045926" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.046036" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.046206" level="INFO">${timestamp_str} = 1779971241336</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.046142" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.046298" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.046325" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.046256" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.046373" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.045692" elapsed="0.000799"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.046757" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.046891" level="INFO">Length is 7.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.046844" elapsed="0.000114"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.046998" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.046539" elapsed="0.000533"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.047437" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.047363" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.047488" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.047613" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.047120" elapsed="0.000567"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.048033" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.047962" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.048083" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.048218" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.047736" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.048657" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.048587" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.048707" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.048828" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.048352" elapsed="0.000552"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.049249" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.049179" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.049299" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.049420" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.048952" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.049856" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.049779" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.049909" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.050032" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.049544" elapsed="0.000562"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.050445" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.050375" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.050499" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.050622" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.050155" elapsed="0.000560"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.051074" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.051003" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.051124" elapsed="0.000070"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.051238" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.050769" elapsed="0.000542"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.044762" elapsed="0.006567"/>
</kw>
<var name="${ticker}">{'t': 1779971241336, 's': 'op_usdt', 'c': '0.1158', 'h': '0.1304', 'l': '0.1155', 'a': '2098356', 'v': '257043', 'o': '0.1281', 'r': '-0.0960'}</var>
<status status="PASS" start="2026-05-28T20:27:25.044693" elapsed="0.006647"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.051537" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.051629" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.051717" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.051807" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.051896" elapsed="0.000102"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.052040" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.052130" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.052227" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.052325" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.052659" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.052770" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.052945" level="INFO">${timestamp_str} = 1779971242286</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.052879" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.053038" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.053066" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.052995" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.053113" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.052443" elapsed="0.000779"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.053495" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.053628" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.053584" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.053685" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.053270" elapsed="0.000494"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.054122" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.054052" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.054172" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.054295" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.053815" elapsed="0.000554"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.054725" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.054655" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.054775" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.054899" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.054418" elapsed="0.000554"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.055335" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.055257" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.055389" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.055515" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.055021" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.055934" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.055865" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.055983" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.056105" elapsed="0.000053"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.055638" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.056599" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.056483" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.056650" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.056777" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.056238" elapsed="0.000613"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.057192" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.057123" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.057242" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.057365" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.056900" elapsed="0.000540"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.057776" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.057705" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.057826" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.057938" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.057489" elapsed="0.000523"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.051437" elapsed="0.006593"/>
</kw>
<var name="${ticker}">{'t': 1779971242286, 's': 'dydx_usdt', 'c': '0.144', 'h': '0.172', 'l': '0.144', 'a': '3594185', 'v': '575325', 'o': '0.169', 'r': '-0.1479'}</var>
<status status="PASS" start="2026-05-28T20:27:25.051373" elapsed="0.006669"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058248" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058347" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058452" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058542" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058631" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058719" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058807" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058896" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.058985" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.059311" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.059431" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.059602" level="INFO">${timestamp_str} = 1779971243145</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.059537" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.059695" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.059723" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.059652" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.059771" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.059087" elapsed="0.000792"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.060140" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.060271" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.060229" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.060325" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.059926" elapsed="0.000470"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.060800" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.060675" elapsed="0.000136"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.060855" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.060985" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.060445" elapsed="0.000613"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.061401" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.061331" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.061449" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.061571" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.061107" elapsed="0.000540"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.062013" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.061942" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.062063" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.062184" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.061699" elapsed="0.000558"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.062611" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.062540" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.062661" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.062783" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.062315" elapsed="0.000541"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.063207" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.063131" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.063261" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.063393" elapsed="0.000053"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.062905" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.063811" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.063740" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.063859" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.063979" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.063520" elapsed="0.000532"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.064411" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.064335" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.064464" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.064575" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.064101" elapsed="0.000547"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.058139" elapsed="0.006528"/>
</kw>
<var name="${ticker}">{'t': 1779971243145, 's': 'pengu_usdt', 'c': '0.007791', 'h': '0.008541', 'l': '0.007758', 'a': '3886068', 'v': '3172017', 'o': '0.008502', 'r': '-0.0836'}</var>
<status status="PASS" start="2026-05-28T20:27:25.058074" elapsed="0.006604"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.064872" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.064964" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.065054" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.065143" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.065231" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.065319" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.065408" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.065495" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.065583" elapsed="0.000096"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.065971" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.066079" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.066258" level="INFO">${timestamp_str} = 1779971242881</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.066193" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.066350" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.066378" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.066308" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.066426" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.065737" elapsed="0.000796"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.066805" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.066950" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.066903" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.067005" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.066580" elapsed="0.000497"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.067417" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.067347" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.067466" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.067589" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.067125" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.068028" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.067958" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.068077" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.068198" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.067718" elapsed="0.000552"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.068611" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.068540" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.068664" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.068796" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.068319" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.069221" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.069151" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.069271" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.069391" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.068929" elapsed="0.000535"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.069802" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.069732" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.069851" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.069981" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.069512" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.070472" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.070352" elapsed="0.000130"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.070521" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.070643" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.070112" elapsed="0.000605"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.071050" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.070980" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.071099" elapsed="0.000071"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.071217" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.070765" elapsed="0.000532"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.064773" elapsed="0.006545"/>
</kw>
<var name="${ticker}">{'t': 1779971242881, 's': 'wif_usdt', 'c': '0.1754', 'h': '0.1964', 'l': '0.1746', 'a': '540140', 'v': '1003391', 'o': '0.1950', 'r': '-0.1005'}</var>
<status status="PASS" start="2026-05-28T20:27:25.064709" elapsed="0.006621"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.071533" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.071624" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.071713" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.071801" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.071891" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.071979" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.072069" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.072158" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.072247" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.072571" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.072683" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.072866" level="INFO">${timestamp_str} = 1779971243666</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.072797" elapsed="0.000079"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.072962" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.072990" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.072919" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.073038" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.072349" elapsed="0.000796"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.073408" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.073536" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.073495" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.073590" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.073193" elapsed="0.000472"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.074029" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.073958" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.074088" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.074210" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.073716" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.074667" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.074555" elapsed="0.000122"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.074717" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.074840" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.074333" elapsed="0.000580"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.075253" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.075182" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.075303" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.075425" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.074961" elapsed="0.000538"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.075858" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.075782" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.075912" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.076035" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.075546" elapsed="0.000562"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.076448" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.076377" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.076496" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.076617" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.076157" elapsed="0.000541"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.077055" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.076985" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.077104" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.077226" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.076750" elapsed="0.000550"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.077634" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.077564" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.077682" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.077791" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.077348" elapsed="0.000524"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.071434" elapsed="0.006457"/>
</kw>
<var name="${ticker}">{'t': 1779971243666, 's': 'trump_usdt', 'c': '1.852', 'h': '2.031', 'l': '1.849', 'a': '1075580', 'v': '2087663', 'o': '2.013', 'r': '-0.0799'}</var>
<status status="PASS" start="2026-05-28T20:27:25.071364" elapsed="0.006539"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078097" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078194" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078291" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078388" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078480" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078569" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078656" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078744" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.078833" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.079150" elapsed="0.000111"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.079302" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.079471" level="INFO">${timestamp_str} = 1779971242746</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.079406" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.079561" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.079589" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.079519" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.079638" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.078934" elapsed="0.000821"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.080033" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.080164" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.080121" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.080218" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.079807" elapsed="0.000482"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.080629" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.080559" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.080684" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.080816" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.080336" elapsed="0.000560"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.081237" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.081168" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.081287" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.081407" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.080947" elapsed="0.000535"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.081824" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.081753" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.081883" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.082005" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.081530" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.082449" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.082373" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.082499" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.082621" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.082129" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.083034" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.082963" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.083083" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.083212" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.082743" elapsed="0.000548"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.083643" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.083573" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.083692" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.083812" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.083344" elapsed="0.000541"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.084262" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.084147" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.084313" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.084423" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.083933" elapsed="0.000564"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.077997" elapsed="0.006519"/>
</kw>
<var name="${ticker}">{'t': 1779971242746, 's': 'not_usdt', 'c': '0.000427', 'h': '0.000470', 'l': '0.000421', 'a': '9126206', 'v': '405414', 'o': '0.000454', 'r': '-0.0594'}</var>
<status status="PASS" start="2026-05-28T20:27:25.077934" elapsed="0.006593"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.084730" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.084828" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.084925" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.085014" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.085102" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.085189" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.085276" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.085372" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.085461" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.085794" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.085913" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.086083" level="INFO">${timestamp_str} = 1779971243448</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.086019" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.086175" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.086202" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.086132" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.086250" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.085564" elapsed="0.000794"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.086621" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.086750" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.086709" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.086805" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.086406" elapsed="0.000470"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.087227" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.087151" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.087281" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.087412" elapsed="0.000052"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.086925" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.087831" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.087761" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.087881" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.088002" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.087540" elapsed="0.000535"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.088673" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.088603" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.088722" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.088844" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.088123" elapsed="0.000795"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.089260" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.089191" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.089309" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.089431" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.088967" elapsed="0.000538"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.089867" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.089790" elapsed="0.000097"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.089931" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.090053" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.089553" elapsed="0.000574"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.090467" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.090396" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.090517" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.090639" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.090175" elapsed="0.000545"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.091073" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091002" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091122" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091233" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.090773" elapsed="0.000534"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.084622" elapsed="0.006703"/>
</kw>
<var name="${ticker}">{'t': 1779971243448, 's': 'spell_usdt', 'c': '0.0001464', 'h': '0.0001542', 'l': '0.0001453', 'a': '53416218', 'v': '804629', 'o': '0.0001531', 'r': '-0.0437'}</var>
<status status="PASS" start="2026-05-28T20:27:25.084559" elapsed="0.006777"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091531" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091623" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091712" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091802" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091890" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.091982" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.092071" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.092161" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.092257" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.092592" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.092701" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.092872" level="INFO">${timestamp_str} = 1779971242317</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.092807" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.093006" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.093035" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.092921" elapsed="0.000123"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.093084" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.092368" elapsed="0.000823"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.093464" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.093603" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.093552" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.093659" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.093239" elapsed="0.000498"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.094093" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.094024" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.094142" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.094266" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.093789" elapsed="0.000551"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.094679" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.094609" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.094728" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.094850" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.094388" elapsed="0.000536"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.095279" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.095202" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.095333" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.095462" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.094973" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.095876" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.095806" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.095925" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.096046" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.095585" elapsed="0.000536"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.096490" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.096416" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.096540" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.096662" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.096172" elapsed="0.000565"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.097079" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.097008" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.097129" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.097264" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.096785" elapsed="0.000559"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.097700" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.097629" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.097750" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.097865" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.097398" elapsed="0.000541"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.091431" elapsed="0.006526"/>
</kw>
<var name="${ticker}">{'t': 1779971242317, 's': 'wld_usdt', 'c': '0.2926', 'h': '0.3708', 'l': '0.2910', 'a': '2449833', 'v': '813885', 'o': '0.3641', 'r': '-0.1963'}</var>
<status status="PASS" start="2026-05-28T20:27:25.091368" elapsed="0.006600"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098213" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098306" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098396" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098485" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098575" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098668" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098766" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098864" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.098960" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.099277" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.099386" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.099553" level="INFO">${timestamp_str} = 1779971240400</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.099490" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.099644" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.099672" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.099602" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.099719" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.099061" elapsed="0.000765"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.100089" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.100230" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.100183" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.100289" elapsed="0.000056"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.099874" elapsed="0.000495"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.100718" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.100647" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.100768" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.100890" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.100422" elapsed="0.000542"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.101309" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.101238" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.101358" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.101489" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.101013" elapsed="0.000551"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.101931" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.101854" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.101981" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.102103" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.101613" elapsed="0.000565"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.102563" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.102449" elapsed="0.000124"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.102613" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.102744" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.102226" elapsed="0.000598"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.103176" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.103106" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.103226" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.103348" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.102877" elapsed="0.000546"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.103779" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.103702" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.103833" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.103964" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.103471" elapsed="0.000567"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.104370" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.104301" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.104421" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.104533" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.104086" elapsed="0.000522"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.098063" elapsed="0.006564"/>
</kw>
<var name="${ticker}">{'t': 1779971240400, 's': 'cookie_usdt', 'c': '0.0115', 'h': '0.0128', 'l': '0.0113', 'a': '2377551', 'v': '287112', 'o': '0.0125', 'r': '-0.0800'}</var>
<status status="PASS" start="2026-05-28T20:27:25.098000" elapsed="0.006638"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.104850" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.104950" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.105042" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.105131" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.105229" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.105320" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.105410" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.105500" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.105589" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.105919" elapsed="0.000070"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.106030" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.106199" level="INFO">${timestamp_str} = 1779971240942</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.106135" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.106290" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.106318" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.106249" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.106366" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.105691" elapsed="0.000781"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.106745" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.106890" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.106842" elapsed="0.000113"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.106994" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.106520" elapsed="0.000547"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.107408" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.107338" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.107457" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.107579" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.107115" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.108020" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.107950" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.108070" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.108191" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.107707" elapsed="0.000558"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.108609" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.108539" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.108662" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.108796" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.108313" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.109220" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.109151" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.109269" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.109399" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.108928" elapsed="0.000546"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.109818" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.109747" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.109868" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.109994" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.109523" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.110433" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.110355" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.110482" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.110604" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.110115" elapsed="0.000563"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.111011" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.110942" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.111061" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.111173" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.110726" elapsed="0.000527"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.104741" elapsed="0.006533"/>
</kw>
<var name="${ticker}">{'t': 1779971240942, 's': 'jup_usdt', 'c': '0.1761', 'h': '0.1978', 'l': '0.1755', 'a': '600749', 'v': '1121867', 'o': '0.1934', 'r': '-0.0894'}</var>
<status status="PASS" start="2026-05-28T20:27:25.104672" elapsed="0.006614"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.111494" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.111586" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.111675" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.111762" elapsed="0.000096"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.111899" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.111987" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.112075" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.112165" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.112254" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.112577" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.112691" elapsed="0.000070"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.112877" level="INFO">${timestamp_str} = 1779971242358</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.112806" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.112974" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.113002" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.112930" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.113060" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.112356" elapsed="0.000813"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.113436" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.113567" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.113525" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.113623" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.113216" elapsed="0.000485"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.114061" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.113990" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.114109" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.114231" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.113753" elapsed="0.000552"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.114646" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.114577" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.114695" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.114816" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.114354" elapsed="0.000536"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.115243" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.115167" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.115297" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.115428" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.114939" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.115841" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.115771" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.115889" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.116009" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.115551" elapsed="0.000531"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.116495" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.116421" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.116544" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.116666" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.116131" elapsed="0.000608"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.117084" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.117013" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.117134" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.117277" elapsed="0.000056"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.116787" elapsed="0.000573"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.117703" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.117631" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.117752" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.117864" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.117412" elapsed="0.000528"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.111391" elapsed="0.006568"/>
</kw>
<var name="${ticker}">{'t': 1779971242358, 's': 'turbo_usdt', 'c': '0.0010162', 'h': '0.0011198', 'l': '0.0010037', 'a': '497649', 'v': '5272850', 'o': '0.0011067', 'r': '-0.0817'}</var>
<status status="PASS" start="2026-05-28T20:27:25.111321" elapsed="0.006649"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118169" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118269" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118367" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118461" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118549" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118638" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118727" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118815" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.118903" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.119220" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.119330" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.119499" level="INFO">${timestamp_str} = 1779971242591</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.119435" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.119591" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.119619" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.119548" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.119668" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.119004" elapsed="0.000781"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.120060" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.120191" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.120147" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.120246" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.119837" elapsed="0.000479"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.120706" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.120586" elapsed="0.000131"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.120760" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.120895" elapsed="0.000053"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.120363" elapsed="0.000618"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.121322" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.121252" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.121371" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.121493" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.121030" elapsed="0.000537"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.121922" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.121845" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.121973" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.122094" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.121615" elapsed="0.000553"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.122519" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.122450" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.122569" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.122690" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.122216" elapsed="0.000548"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.123112" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.123042" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.123162" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.123295" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.122813" elapsed="0.000562"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.123720" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.123649" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.123769" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.123898" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.123428" elapsed="0.000542"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.124300" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.124233" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.124350" elapsed="0.000069"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.124465" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.124018" elapsed="0.000521"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.118065" elapsed="0.006492"/>
</kw>
<var name="${ticker}">{'t': 1779971242591, 's': 'ldo_usdt', 'c': '0.3128', 'h': '0.3456', 'l': '0.3118', 'a': '2385772', 'v': '784566', 'o': '0.3425', 'r': '-0.0867'}</var>
<status status="PASS" start="2026-05-28T20:27:25.118001" elapsed="0.006567"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.124783" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.124883" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.124977" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.125066" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.125156" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.125244" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.125333" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.125422" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.125511" elapsed="0.000094"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.125895" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.126008" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.126178" level="INFO">${timestamp_str} = 1779971241252</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.126113" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.126270" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.126299" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.126228" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.126346" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.125658" elapsed="0.000795"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.126716" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.126846" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.126804" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.126901" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.126500" elapsed="0.000477"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.127331" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.127256" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.127385" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.127511" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.127025" elapsed="0.000560"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.127924" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.127853" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.127973" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.128093" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.127633" elapsed="0.000538"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.128536" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.128466" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.128585" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.128704" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.128223" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.129130" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.129059" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.129183" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.129315" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.128835" elapsed="0.000561"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.129742" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.129670" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.129791" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.129912" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.129448" elapsed="0.000539"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.130393" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.130266" elapsed="0.000138"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.130447" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.130568" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.130034" elapsed="0.000607"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.130975" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.130905" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131024" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131135" elapsed="0.000053"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.130689" elapsed="0.000524"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.124673" elapsed="0.006560"/>
</kw>
<var name="${ticker}">{'t': 1779971241252, 's': 'jto_usdt', 'c': '0.4720', 'h': '0.5929', 'l': '0.4695', 'a': '1215253', 'v': '643642', 'o': '0.5259', 'r': '-0.1024'}</var>
<status status="PASS" start="2026-05-28T20:27:25.124607" elapsed="0.006639"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131456" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131548" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131637" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131726" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131814" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131902" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.131988" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.132077" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.132166" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.132492" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.132609" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.132790" level="INFO">${timestamp_str} = 1779971241811</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.132721" elapsed="0.000080"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.132890" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.132921" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.132845" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.132970" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.132266" elapsed="0.000810"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.133340" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.133470" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.133428" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.133524" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.133124" elapsed="0.000472"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.133961" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.133886" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.134010" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.134133" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.133644" elapsed="0.000562"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.134592" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.134476" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.134643" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.134773" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.134254" elapsed="0.000601"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.135201" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.135131" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.135251" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.135373" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.134907" elapsed="0.000540"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.135803" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.135727" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.135858" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.135986" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.135496" elapsed="0.000563"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.136399" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.136330" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.136450" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.136570" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.136106" elapsed="0.000548"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.137018" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.136949" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.137068" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.137189" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.136707" elapsed="0.000556"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.137596" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.137527" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.137647" elapsed="0.000072"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.137767" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.137312" elapsed="0.000535"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.131349" elapsed="0.006518"/>
</kw>
<var name="${ticker}">{'t': 1779971241811, 's': 'act_usdt', 'c': '0.01152', 'h': '0.01293', 'l': '0.01143', 'a': '2369131', 'v': '289192', 'o': '0.01267', 'r': '-0.0907'}</var>
<status status="PASS" start="2026-05-28T20:27:25.131280" elapsed="0.006599"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138077" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138169" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138258" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138349" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138437" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138525" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138612" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138700" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.138788" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.139109" elapsed="0.000119"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.139273" elapsed="0.000072"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.139458" level="INFO">${timestamp_str} = 1779971242864</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.139388" elapsed="0.000080"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.139550" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.139578" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.139508" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.139626" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.138890" elapsed="0.000843"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.139992" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.140122" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.140080" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.140181" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.139780" elapsed="0.000478"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.140620" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.140542" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.140671" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.140793" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.140309" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.141214" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.141137" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.141269" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.141401" elapsed="0.000052"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.140914" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.141816" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.141746" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.141865" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.141986" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.141525" elapsed="0.000535"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.142414" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.142338" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.142465" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.142586" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.142108" elapsed="0.000551"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.143011" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.142941" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.143061" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.143181" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.142706" elapsed="0.000549"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.143598" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.143529" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.143647" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.143779" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.143302" elapsed="0.000557"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.144439" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.144130" elapsed="0.000320"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.144490" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.144598" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.143911" elapsed="0.000770"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.137978" elapsed="0.006722"/>
</kw>
<var name="${ticker}">{'t': 1779971242864, 's': 'xmr_usdt', 'c': '369.43', 'h': '401.50', 'l': '366.97', 'a': '1194923', 'v': '4654412', 'o': '398.52', 'r': '-0.0729'}</var>
<status status="PASS" start="2026-05-28T20:27:25.137913" elapsed="0.006798"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.144906" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145000" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145089" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145182" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145278" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145375" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145469" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145558" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145646" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.145962" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.146070" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.146247" level="INFO">${timestamp_str} = 1779971241848</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.146177" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.146347" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.146377" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.146301" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.146430" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.145747" elapsed="0.000792"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.146802" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.146932" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.146890" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.146986" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.146587" elapsed="0.000470"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.147414" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.147337" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.147466" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.147589" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.147105" elapsed="0.000558"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.148013" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.147943" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.148063" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.148185" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.147711" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.148656" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.148585" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.148710" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.148843" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.148315" elapsed="0.000608"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.149264" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.149194" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.149314" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.149436" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.148973" elapsed="0.000537"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.149868" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.149793" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.149923" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.150047" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.149558" elapsed="0.000562"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.150459" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.150389" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.150509" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.150631" elapsed="0.000052"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.150168" elapsed="0.000541"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.151060" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.150990" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.151109" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.151219" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.150761" elapsed="0.000533"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.144805" elapsed="0.006508"/>
</kw>
<var name="${ticker}">{'t': 1779971241848, 's': 'rune_usdt', 'c': '0.410', 'h': '0.443', 'l': '0.401', 'a': '3001437', 'v': '1266138', 'o': '0.437', 'r': '-0.0617'}</var>
<status status="PASS" start="2026-05-28T20:27:25.144742" elapsed="0.006582"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.151519" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.151610" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.151699" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.151788" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.151876" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.151971" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.152057" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.152160" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.152256" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.152598" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.152708" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.152879" level="INFO">${timestamp_str} = 1779971243400</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.152813" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.152970" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.152999" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.152927" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.153047" elapsed="0.000134"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.152368" elapsed="0.000835"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.153474" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.153605" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.153563" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.153660" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.153251" elapsed="0.000487"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.154095" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.154025" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.154145" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.154267" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.153789" elapsed="0.000551"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.154685" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.154609" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.154739" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.154871" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.154388" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.155290" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.155221" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.155339" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.155460" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.154999" elapsed="0.000536"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.155905" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.155829" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.155958" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.156080" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.155584" elapsed="0.000570"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.156517" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.156443" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.156567" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.156692" elapsed="0.000056"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.156214" elapsed="0.000560"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.157131" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.157060" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.157180" elapsed="0.000091"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.157315" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.156827" elapsed="0.000562"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.157722" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.157653" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.157772" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.157882" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.157437" elapsed="0.000517"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.151419" elapsed="0.006554"/>
</kw>
<var name="${ticker}">{'t': 1779971243400, 's': 'link_usdt', 'c': '8.813', 'h': '9.480', 'l': '8.770', 'a': '1791528', 'v': '1632259', 'o': '9.429', 'r': '-0.0653'}</var>
<status status="PASS" start="2026-05-28T20:27:25.151355" elapsed="0.006628"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158237" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158339" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158438" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158528" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158620" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158710" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158802" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158892" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.158980" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.159311" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.159431" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.159600" level="INFO">${timestamp_str} = 1779971242591</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.159537" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.159691" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.159719" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.159649" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.159768" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.159081" elapsed="0.000794"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.160147" elapsed="0.000066"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.160304" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.160256" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.160365" elapsed="0.000056"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.159922" elapsed="0.000526"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.160790" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.160719" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.160840" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.160964" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.160495" elapsed="0.000543"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.161404" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.161327" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.161456" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.161577" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.161087" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.161994" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.161923" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.162042" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.162168" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.161699" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.162653" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.162539" elapsed="0.000124"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.162703" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.162826" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.162302" elapsed="0.000598"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.163241" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.163170" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.163291" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.163418" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.162948" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.163850" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.163773" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.163904" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.164030" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.163540" elapsed="0.000572"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.164460" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.164384" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.164510" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.164621" elapsed="0.000052"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.164162" elapsed="0.000538"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.158078" elapsed="0.006643"/>
</kw>
<var name="${ticker}">{'t': 1779971242591, 's': 'xlm_usdt', 'c': '0.18206', 'h': '0.18251', 'l': '0.14831', 'a': '12070892', 'v': '2011057', 'o': '0.14959', 'r': '0.2170'}</var>
<status status="PASS" start="2026-05-28T20:27:25.158015" elapsed="0.006718"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.164945" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165037" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165129" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165218" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165306" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165395" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165483" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165571" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165658" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.165986" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.166094" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.166275" level="INFO">${timestamp_str} = 1779971241220</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.166204" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.166374" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.166403" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.166329" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.166454" elapsed="0.000088"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.165759" elapsed="0.000805"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.166825" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.167001" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.166913" elapsed="0.000105"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.167057" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.166612" elapsed="0.000517"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.167485" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.167412" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.167534" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.167655" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.167177" elapsed="0.000552"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.168077" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.168006" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.168139" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.168271" elapsed="0.000056"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.167777" elapsed="0.000576"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.168708" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.168638" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.168758" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.168880" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.168405" elapsed="0.000549"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.169310" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.169233" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.169364" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.169492" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.169002" elapsed="0.000564"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.169909" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.169839" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.169958" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.170085" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.169615" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.170520" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.170451" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.170569" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.170690" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.170210" elapsed="0.000554"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.171100" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.171030" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.171149" elapsed="0.000070"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.171268" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.170812" elapsed="0.000536"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.164837" elapsed="0.006531"/>
</kw>
<var name="${ticker}">{'t': 1779971241220, 's': 'hbar_usdt', 'c': '0.08346', 'h': '0.08657', 'l': '0.08182', 'a': '2389010', 'v': '2025825', 'o': '0.08637', 'r': '-0.0336'}</var>
<status status="PASS" start="2026-05-28T20:27:25.164768" elapsed="0.006612"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.171579" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.171669" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.171756" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.171856" elapsed="0.000103"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.172000" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.172092" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.172186" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.172285" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.172382" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.172709" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.172817" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.172986" level="INFO">${timestamp_str} = 1779971242395</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.172921" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.173081" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.173109" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.173038" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.173157" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.172493" elapsed="0.000772"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.173535" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.173667" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.173621" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.173727" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.173313" elapsed="0.000492"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.174153" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.174083" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.174202" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.174323" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.173856" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.174748" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.174672" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.174801" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.174932" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.174446" elapsed="0.000560"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.175349" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.175276" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.175398" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.175519" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.175054" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.175959" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.175885" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.176021" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.176145" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.175642" elapsed="0.000576"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.176612" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.176541" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.176661" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.176795" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.176267" elapsed="0.000608"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.177220" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.177149" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.177269" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.177390" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.176927" elapsed="0.000537"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.177814" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.177738" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.177867" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.177984" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.177512" elapsed="0.000546"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.171481" elapsed="0.006596"/>
</kw>
<var name="${ticker}">{'t': 1779971242395, 's': 'bera_usdt', 'c': '0.337', 'h': '0.378', 'l': '0.336', 'a': '575609', 'v': '203725', 'o': '0.369', 'r': '-0.0867'}</var>
<status status="PASS" start="2026-05-28T20:27:25.171414" elapsed="0.006674"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178282" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178371" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178459" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178548" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178637" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178726" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178814" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178904" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.178995" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.179327" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.179445" elapsed="0.000061"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.179611" level="INFO">${timestamp_str} = 1779971242894</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.179548" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.179714" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.179743" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.179672" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.179792" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.179096" elapsed="0.000805"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.180161" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.180291" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.180249" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.180345" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.179948" elapsed="0.000468"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.180823" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.180699" elapsed="0.000135"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.180878" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.181007" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.180469" elapsed="0.000611"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.181422" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.181352" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.181471" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.181594" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.181128" elapsed="0.000542"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.182033" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.181963" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.182081" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.182202" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.181722" elapsed="0.000554"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.182618" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.182549" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.182668" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.182801" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.182325" elapsed="0.000556"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.183226" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.183156" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.183275" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.183399" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.182934" elapsed="0.000539"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.183832" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.183755" elapsed="0.000102"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.183903" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.184028" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.183521" elapsed="0.000582"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.184438" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.184368" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.184491" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.184601" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.184151" elapsed="0.000524"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.178182" elapsed="0.006513"/>
</kw>
<var name="${ticker}">{'t': 1779971242894, 's': 'vvv_usdt', 'c': '15.501', 'h': '17.921', 'l': '14.812', 'a': '1785909', 'v': '29407040', 'o': '17.388', 'r': '-0.1085'}</var>
<status status="PASS" start="2026-05-28T20:27:25.178119" elapsed="0.006587"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.184918" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.185011" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.185100" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.185194" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.185283" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.185371" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.185459" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.185548" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.185636" elapsed="0.000106"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.186029" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.186137" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.186306" level="INFO">${timestamp_str} = 1779971241704</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.186242" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.186397" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.186425" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.186355" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.186471" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.185799" elapsed="0.000780"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.186852" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.186989" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.186948" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.187043" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.186626" elapsed="0.000488"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.187468" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.187394" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.187517" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.187648" elapsed="0.000052"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.187161" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.188071" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.188001" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.188123" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.188251" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.187771" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.188687" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.188616" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.188736" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.188856" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.188384" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.189288" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.189211" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.189341" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.189471" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.188978" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.189884" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.189814" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.189933" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.190054" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.189592" elapsed="0.000536"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.190538" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.190418" elapsed="0.000130"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.190589" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.190716" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.190178" elapsed="0.000611"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.191124" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.191055" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.191177" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.191297" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.190837" elapsed="0.000540"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.184809" elapsed="0.006589"/>
</kw>
<var name="${ticker}">{'t': 1779971241704, 's': 'ondo_usdt', 'c': '0.3554', 'h': '0.4074', 'l': '0.3513', 'a': '1204293', 'v': '4571640', 'o': '0.4057', 'r': '-0.1239'}</var>
<status status="PASS" start="2026-05-28T20:27:25.184740" elapsed="0.006682"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.191620" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.191711" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.191801" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.191890" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.191979" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.192067" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.192159" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.192247" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.192335" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.192662" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.192782" elapsed="0.000071"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.192966" level="INFO">${timestamp_str} = 1779971242327</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.192899" elapsed="0.000077"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.193057" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.193085" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.193015" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.193133" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.192439" elapsed="0.000800"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.193501" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.193630" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.193588" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.193689" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.193287" elapsed="0.000479"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.194123" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.194053" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.194172" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.194293" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.193817" elapsed="0.000549"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.194763" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.194637" elapsed="0.000136"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.194817" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.194952" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.194415" elapsed="0.000610"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.195374" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.195303" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.195423" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.195553" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.195073" elapsed="0.000554"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.195992" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.195920" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.196041" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.196162" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.195677" elapsed="0.000559"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.196587" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.196510" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.196636" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.196770" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.196284" elapsed="0.000567"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.197199" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.197127" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.197248" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.197370" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.196904" elapsed="0.000540"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.197794" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.197718" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.197847" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.197965" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.197495" elapsed="0.000543"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.191520" elapsed="0.006537"/>
</kw>
<var name="${ticker}">{'t': 1779971242327, 's': 'atom_usdt', 'c': '2.011', 'h': '2.225', 'l': '2.009', 'a': '1190429', 'v': '2523631', 'o': '2.219', 'r': '-0.0937'}</var>
<status status="PASS" start="2026-05-28T20:27:25.191456" elapsed="0.006612"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.198267" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.198357" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.198446" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.198535" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.198622" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.198716" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.198815" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.198911" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.199001" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.199330" elapsed="0.000299"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.199671" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.199840" level="INFO">${timestamp_str} = 1779971242220</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.199775" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.199932" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.199960" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.199889" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.200008" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.199114" elapsed="0.001001"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.200396" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.200541" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.200496" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.200596" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.200163" elapsed="0.000505"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.201008" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.200938" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.201058" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.201183" elapsed="0.000056"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.200716" elapsed="0.000549"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.201624" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.201553" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.201674" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.201796" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.201318" elapsed="0.000553"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.202212" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.202142" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.202262" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.202383" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.201919" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.202819" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.202742" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.202873" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.203000" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.202506" elapsed="0.000568"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.203416" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.203346" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.203468" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.203600" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.203122" elapsed="0.000553"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.204041" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.203970" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.204090" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.204212" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.203728" elapsed="0.000559"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.204691" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.204566" elapsed="0.000136"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.204744" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.204864" elapsed="0.000056"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.204336" elapsed="0.000611"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.198168" elapsed="0.006798"/>
</kw>
<var name="${ticker}">{'t': 1779971242220, 's': 'ada_usdt', 'c': '0.2293', 'h': '0.2433', 'l': '0.2278', 'a': '11969011', 'v': '28206347', 'o': '0.2403', 'r': '-0.0457'}</var>
<status status="PASS" start="2026-05-28T20:27:25.198100" elapsed="0.006877"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205172" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205264" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205354" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205444" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205532" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205621" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205717" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205813" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.205909" elapsed="0.000052"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.206227" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.206336" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.206503" level="INFO">${timestamp_str} = 1779971241930</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.206439" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.206595" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.206623" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.206552" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.206672" elapsed="0.000093"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.206013" elapsed="0.000776"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.207067" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.207196" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.207153" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.207249" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.206841" elapsed="0.000492"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.207684" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.207609" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.207737" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.207869" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.207381" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.208293" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.208223" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.208344" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.208474" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.207998" elapsed="0.000552"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.208963" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.208886" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.209014" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.209137" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.208598" elapsed="0.000612"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.209554" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.209484" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.209604" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.209733" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.209259" elapsed="0.000555"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.210167" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.210096" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.210217" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.210338" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.209867" elapsed="0.000545"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.210764" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.210687" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.210818" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.210952" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.210460" elapsed="0.000565"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.211357" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.211287" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.211407" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.211531" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.211073" elapsed="0.000533"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.205072" elapsed="0.006553"/>
</kw>
<var name="${ticker}">{'t': 1779971241930, 's': 'avax_usdt', 'c': '8.774', 'h': '9.288', 'l': '8.709', 'a': '1193517', 'v': '1074659', 'o': '9.196', 'r': '-0.0458'}</var>
<status status="PASS" start="2026-05-28T20:27:25.205008" elapsed="0.006628"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.211847" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.211950" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.212040" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.212130" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.212221" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.212309" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.212398" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.212526" elapsed="0.000073"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.212645" elapsed="0.000056"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.213031" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.213158" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.213333" level="INFO">${timestamp_str} = 1779971242350</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.213269" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.213424" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.213452" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.213383" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.213499" elapsed="0.000141"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.212761" elapsed="0.000903"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.213947" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.214077" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.214035" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.214131" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.213715" elapsed="0.000486"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.214552" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.214481" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.214601" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.214725" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.214249" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.215146" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.215077" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.215195" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.215316" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.214847" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.215756" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.215687" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.215804" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.215925" elapsed="0.000052"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.215456" elapsed="0.000545"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.216343" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.216274" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.216392" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.216516" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.216049" elapsed="0.000538"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.216924" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.216855" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.216971" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.217094" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.216634" elapsed="0.000532"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.217502" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.217434" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.217549" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.217667" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.217213" elapsed="0.000526"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.218073" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.218005" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.218121" elapsed="0.000064"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.218231" elapsed="0.000098"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.217786" elapsed="0.000568"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.211737" elapsed="0.006635"/>
</kw>
<var name="${ticker}">{'t': 1779971242350, 's': 'aave_usdt', 'c': '80.20', 'h': '87.00', 'l': '79.90', 'a': '1197879', 'v': '9940244', 'o': '85.60', 'r': '-0.0630'}</var>
<status status="PASS" start="2026-05-28T20:27:25.211668" elapsed="0.006715"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.218579" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.218668" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.218756" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.218843" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.218930" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.219039" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.219127" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.219213" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.219298" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.219614" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.219722" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.219889" level="INFO">${timestamp_str} = 1779971241725</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.219825" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.219978" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.220005" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.219938" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.220052" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.219396" elapsed="0.000763"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.220420" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.220551" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.220510" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.220604" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.220206" elapsed="0.000467"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.221011" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.220943" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.221059" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.221178" elapsed="0.000048"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.220719" elapsed="0.000531"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.221590" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.221523" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.221638" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.221756" elapsed="0.000048"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.221297" elapsed="0.000530"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.222206" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.222137" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.222255" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.222375" elapsed="0.000048"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.221874" elapsed="0.000573"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.222785" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.222717" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.222834" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.222953" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.222494" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.223376" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.223307" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.223425" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.223543" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.223084" elapsed="0.000531"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.223951" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.223883" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.223999" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.224117" elapsed="0.000048"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.223662" elapsed="0.000526"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.224517" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.224447" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.224565" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.224676" elapsed="0.000047"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.224235" elapsed="0.000511"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.218481" elapsed="0.006283"/>
</kw>
<var name="${ticker}">{'t': 1779971241725, 's': 'crv_usdt', 'c': '0.2101', 'h': '0.2231', 'l': '0.2072', 'a': '11970837', 'v': '2570439', 'o': '0.2187', 'r': '-0.0393'}</var>
<status status="PASS" start="2026-05-28T20:27:25.218417" elapsed="0.006357"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.224966" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225055" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225142" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225232" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225317" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225403" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225488" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225573" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225662" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.225977" elapsed="0.000066"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.226082" elapsed="0.000061"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.226244" level="INFO">${timestamp_str} = 1779971243428</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.226183" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.226377" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.226405" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.226292" elapsed="0.000121"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.226452" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.225761" elapsed="0.000807"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.226830" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.226955" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.226914" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.227007" elapsed="0.000048"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.226614" elapsed="0.000461"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.227411" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.227340" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.227459" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.227578" elapsed="0.000048"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.227120" elapsed="0.000529"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.227985" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.227916" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.228033" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.228153" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.227695" elapsed="0.000530"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.228568" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.228499" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.228615" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.228736" elapsed="0.000048"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.228272" elapsed="0.000536"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.229140" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.229073" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.229188" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.229308" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.228854" elapsed="0.000525"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.229714" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.229646" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.229762" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.229884" elapsed="0.000048"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.229425" elapsed="0.000530"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.230288" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.230220" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.230335" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.230453" elapsed="0.000048"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.230000" elapsed="0.000536"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.230869" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.230801" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.230917" elapsed="0.000064"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231024" elapsed="0.000091"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.230583" elapsed="0.000557"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.224868" elapsed="0.006290"/>
</kw>
<var name="${ticker}">{'t': 1779971243428, 's': 'inj_usdt', 'c': '5.325', 'h': '5.844', 'l': '5.302', 'a': '1196133', 'v': '6593072', 'o': '5.817', 'r': '-0.0845'}</var>
<status status="PASS" start="2026-05-28T20:27:25.224806" elapsed="0.006363"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231360" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231448" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231534" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231619" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231705" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231791" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231876" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.231959" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.232045" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.232366" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.232475" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.232639" level="INFO">${timestamp_str} = 1779971242150</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.232576" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.232729" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.232756" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.232687" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.232801" elapsed="0.000083"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.232143" elapsed="0.000762"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.233163" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.233289" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.233248" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.233341" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.232951" elapsed="0.000459"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.233741" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.233674" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.233789" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.233909" elapsed="0.000048"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.233455" elapsed="0.000524"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.234328" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.234259" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.234376" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.234494" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.234036" elapsed="0.000531"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.234941" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.234872" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.234990" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.235111" elapsed="0.000048"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.234614" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.235521" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.235452" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.235569" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.235690" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.235228" elapsed="0.000534"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.236100" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.236032" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.236149" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.236270" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.235808" elapsed="0.000533"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.236680" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.236612" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.236728" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.236845" elapsed="0.000048"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.236388" elapsed="0.000528"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.237246" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.237178" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.237293" elapsed="0.000063"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.237399" elapsed="0.000046"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.236962" elapsed="0.000506"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.231262" elapsed="0.006224"/>
</kw>
<var name="${ticker}">{'t': 1779971242150, 's': 'paxg_usdt', 'c': '4386.66', 'h': '4464.37', 'l': '4371.65', 'a': '138751', 'v': '613404', 'o': '4457.77', 'r': '-0.0159'}</var>
<status status="PASS" start="2026-05-28T20:27:25.231200" elapsed="0.006297"/>
</iter>
<var>${ticker}</var>
<value>@{tickers_list}</value>
<status status="PASS" start="2026-05-28T20:27:24.854023" elapsed="0.383484"/>
</for>
<doc>验证期货U本位Tickers接口功能</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:24.414791" elapsed="0.822772"/>
</test>
<test id="s1-s2-s2-s7-t2" name="获取期货U本位Tickers数据_仅预测" line="29">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.238834" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:25.238575" elapsed="0.000271"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:25.239102" elapsed="0.000008"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:25.238897" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:25.238888" elapsed="0.000246"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:25.239147" elapsed="0.000015"/>
</return>
<msg time="2026-05-28T20:27:25.239227" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:25.238282" elapsed="0.000955"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:25.367013" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/tickers?isPredict=true&amp;isDelivery=false 
 path_url=/v1/future-u/market/public/q/tickers?isPredict=true&amp;isDelivery=false 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:25.367123" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/tickers?isPredict=true&amp;isDelivery=false 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:25 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9999', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '65cba47ebf07bd9df2e05709853d937c', 'X-Transparent': '00-65cba47ebf07bd9df2e05709853d937c-1022b736004598d3-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40db5fc6ae17-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":[{"t":1779971241450,"s":"btc_usdt","c":"73282.6","h":"75959.9","l":"72689.3","a":"789157","v":"5865055","o":"75852.3","r":"-0.0338"},{"t":1779971243321,"s":"eth_usdt","c":"1982.68","h":"2086.99","l":"1966.37","a":"128179","v":"2592264","o":"2082.43","r":"-0.0479"},{"t":1779971242001,"s":"sol_usdt","c":"80.62","h":"84.78","l":"80.01","a":"253650","v":"2088282","o":"84.20","r":"-0.0425"},{"t":1779971244285,"s":"xrp_usdt","c":"1.2841","h":"1.3425","l":"1.2669","a":"1255262","v":"1639910","o":"1.3346","r":"-0.0378"},{"t":1779971243427,"s":"bnb_usdt","c":"631.06","h":"660.33","l":"630.65","a":"358250","v":"2312187","o":"656.39","r":"-0.0385"},{"t":1779971244639,"s":"trb_usdt","c":"16.129","h":"17.598","l":"16.030","a":"1194852","v":"2008788","o":"17.354","r":"-0.0705"},{"t":1779971244641,"s":"ordi_usdt","c":"3.400","h":"4.159","l":"3.375","a":"611711","v":"2323764","o":"4.032","r":"-0.1567"},{"t":1779971244362,"s":"1000shib_usdt","c":"0.005264","h":"0.005553","l":"0.005238","a":"4087527","v":"2210503","o":"0.005528","r":"-0.0477"},{"t":1779971242141,"s":"doge_usdt","c":"0.09748","h":"0.10331","l":"0.09705","a":"6971317","v":"6976452","o":"0.10196","r":"-0.0439"},{"t":1779971244288,"s":"trx_usdt","c":"0.34929","h":"0.37419","l":"0.34789","a":"122290","v":"4472524","o":"0.37399","r":"-0.0660"},{"t":1779971244136,"s":"dogs_usdt","c":"0.0000464","h":"0.0000522","l":"0.0000461","a":"39462754","v":"1947650","o":"0.0000511","r":"-0.0919"},{"t":1779971242433,"s":"sui_usdt","c":"0.9091","h":"1.0124","l":"0.9066","a":"1212202","v":"1158210","o":"1.0088","r":"-0.0988"},{"t":1779971242920,"s":"grass_usdt","c":"0.4882","h":"0.5340","l":"0.4762","a":"2409891","v":"1196686","o":"0.5093","r":"-0.0414"},{"t":1779971243472,"s":"ban_usdt","c":"0.0783","h":"0.0944","l":"0.0777","a":"2390539","v":"2059138","o":"0.0942","r":"-0.1687"},{"t":1779971242347,"s":"people_usdt","c":"0.00611","h":"0.00667","l":"0.00601","a":"9608910","v":"610034","o":"0.00660","r":"-0.0742"},{"t":1779971242725,"s":"ton_usdt","c":"1.7617","h":"1.9162","l":"1.7592","a":"1197294","v":"2201524","o":"1.8969","r":"-0.0712"},{"t":1779971241345,"s":"aixbt_usdt","c":"0.02653","h":"0.03109","l":"0.02635","a":"1800793","v":"512942","o":"0.03091","r":"-0.1417"},{"t":1779971244841,"s":"melania_usdt","c":"0.086","h":"0.092","l":"0.085","a":"3599632","v":"318809","o":"0.090","r":"-0.0444"},{"t":1779971244002,"s":"dot_usdt","c":"1.183","h":"1.278","l":"1.175","a":"942452","v":"1154592","o":"1.266","r":"-0.0655"},{"t":1779971244031,"s":"uni_usdt","c":"3.005","h":"3.318","l":"2.989","a":"598225","v":"1881141","o":"3.289","r":"-0.0863"},{"t":1779971244048,"s":"pol_usdt","c":"0.08701","h":"0.09179","l":"0.08635","a":"1194109","v":"1065970","o":"0.09175","r":"-0.0516"},{"t":1779971242991,"s":"arb_usdt","c":"0.1016","h":"0.1111","l":"0.1011","a":"5018605","v":"531905","o":"0.1099","r":"-0.0755"},{"t":1779971243722,"s":"fil_usdt","c":"0.943","h":"1.099","l":"0.938","a":"12133077","v":"1237613","o":"1.065","r":"-0.1145"},{"t":1779971243553,"s":"op_usdt","c":"0.1159","h":"0.1304","l":"0.1155","a":"2098414","v":"257050","o":"0.1281","r":"-0.0952"},{"t":1779971243577,"s":"dydx_usdt","c":"0.145","h":"0.172","l":"0.144","a":"3594237","v":"575333","o":"0.169","r":"-0.1420"},{"t":1779971243145,"s":"pengu_usdt","c":"0.007791","h":"0.008541","l":"0.007758","a":"3886068","v":"3172017","o":"0.008502","r":"-0.0836"},{"t":1779971242881,"s":"wif_usdt","c":"0.1754","h":"0.1964","l":"0.1746","a":"540140","v":"1003391","o":"0.1950","r":"-0.1005"},{"t":1779971243666,"s":"trump_usdt","c":"1.852","h":"2.031","l":"1.849","a":"1075580","v":"2087663","o":"2.013","r":"-0.0799"},{"t":1779971242746,"s":"not_usdt","c":"0.000427","h":"0.000470","l":"0.000421","a":"9126206","v":"405414","o":"0.000454","r":"-0.0594"},{"t":1779971243448,"s":"spell_usdt","c":"0.0001464","h":"0.0001542","l":"0.0001453","a":"53416218","v":"804629","o":"0.0001531","r":"-0.0437"},{"t":1779971244749,"s":"wld_usdt","c":"0.2927","h":"0.3708","l":"0.2910","a":"2449879","v":"813899","o":"0.3641","r":"-0.1960"},{"t":1779971242942,"s":"cookie_usdt","c":"0.0115","h":"0.0128","l":"0.0113","a":"2377610","v":"287119","o":"0.0125","r":"-0.0800"},{"t":1779971243819,"s":"jup_usdt","c":"0.1761","h":"0.1978","l":"0.1755","a":"600762","v":"1121890","o":"0.1934","r":"-0.0894"},{"t":1779971244759,"s":"turbo_usdt","c":"0.0010162","h":"0.0011198","l":"0.0010037","a":"497688","v":"5273246","o":"0.0011067","r":"-0.0817"},{"t":1779971242591,"s":"ldo_usdt","c":"0.3128","h":"0.3456","l":"0.3118","a":"2385772","v":"784566","o":"0.3425","r":"-0.0867"},{"t":1779971243317,"s":"jto_usdt","c":"0.4721","h":"0.5929","l":"0.4695","a":"1215281","v":"643655","o":"0.5259","r":"-0.1023"},{"t":1779971243951,"s":"act_usdt","c":"0.01152","h":"0.01293","l":"0.01143","a":"2369193","v":"289199","o":"0.01267","r":"-0.0907"},{"t":1779971242864,"s":"xmr_usdt","c":"369.43","h":"401.50","l":"366.97","a":"1194923","v":"4654412","o":"398.52","r":"-0.0729"},{"t":1779971241848,"s":"rune_usdt","c":"0.410","h":"0.443","l":"0.401","a":"3001437","v":"1266138","o":"0.437","r":"-0.0617"},{"t":1779971243400,"s":"link_usdt","c":"8.813","h":"9.480","l":"8.770","a":"1791528","v":"1632259","o":"9.429","r":"-0.0653"},{"t":1779971242591,"s":"xlm_usdt","c":"0.18206","h":"0.18251","l":"0.14831","a":"12070892","v":"2011057","o":"0.14959","r":"0.2170"},{"t":1779971241220,"s":"hbar_usdt","c":"0.08346","h":"0.08657","l":"0.08182","a":"2389010","v":"2025825","o":"0.08637","r":"-0.0336"},{"t":1779971242395,"s":"bera_usdt","c":"0.337","h":"0.378","l":"0.336","a":"575609","v":"203725","o":"0.369","r":"-0.0867"},{"t":1779971242894,"s":"vvv_usdt","c":"15.501","h":"17.921","l":"14.812","a":"1785909","v":"29407040","o":"17.388","r":"-0.1085"},{"t":1779971244372,"s":"ondo_usdt","c":"0.3553","h":"0.4074","l":"0.3513","a":"1204324","v":"4571750","o":"0.4057","r":"-0.1242"},{"t":1779971244703,"s":"atom_usdt","c":"2.012","h":"2.225","l":"2.009","a":"1190477","v":"2523728","o":"2.219","r":"-0.0932"},{"t":1779971244837,"s":"ada_usdt","c":"0.2293","h":"0.2433","l":"0.2278","a":"11969532","v":"28207541","o":"0.2403","r":"-0.0457"},{"t":1779971244638,"s":"avax_usdt","c":"8.774","h":"9.288","l":"8.709","a":"1193547","v":"1074685","o":"9.196","r":"-0.0458"},{"t":1779971244429,"s":"aave_usdt","c":"80.20","h":"87.00","l":"79.90","a":"1197912","v":"9940509","o":"85.60","r":"-0.0630"},{"t":1779971244643,"s":"crv_usdt","c":"0.2100","h":"0.2231","l":"0.2072","a":"11971169","v":"2570509","o":"0.2187","r":"-0.0397"},{"t":1779971243428,"s":"inj_usdt","c":"5.325","h":"5.844","l":"5.302","a":"1196133","v":"6593072","o":"5.817","r":"-0.0845"},{"t":1779971242150,"s":"paxg_usdt","c":"4386.66","h":"4464.37","l":"4371.65","a":"138751","v":"613404","o":"4457.77","r":"-0.0159"}],"ts":1779971245346} 
 </msg>
<msg time="2026-05-28T20:27:25.367223" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:25.367328" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:25.239429" elapsed="0.127921"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:25.367423" elapsed="0.000029"/>
</return>
<msg time="2026-05-28T20:27:25.367564" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/tickers</arg>
<arg>headers=${headers}</arg>
<arg>params=isPredict=true&amp;isDelivery=false</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:25.239291" elapsed="0.128295"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.368383" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:25.367986" elapsed="0.000450"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.368928" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:25.368536" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.369148" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:25.369041" elapsed="0.000143"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:25.367732" elapsed="0.001498"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.369905" level="INFO">Length is 52.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.369314" elapsed="0.000635"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.370586" level="INFO">${tickers_list} = [{'t': 1779971241450, 's': 'btc_usdt', 'c': '73282.6', 'h': '75959.9', 'l': '72689.3', 'a': '789157', 'v': '5865055', 'o': '75852.3', 'r': '-0.0338'}, {'t': 1779971243321, 's': 'eth_usdt', 'c': '1982....</msg>
<var>${tickers_list}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:25.370041" elapsed="0.000569"/>
</kw>
<for flavor="IN">
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.371155" elapsed="0.000111"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.371355" elapsed="0.000108"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.371549" elapsed="0.000108"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.371739" elapsed="0.000111"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.371932" elapsed="0.000110"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.372125" elapsed="0.000107"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.372316" elapsed="0.000103"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.372504" elapsed="0.000101"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.372691" elapsed="0.000108"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.373393" elapsed="0.000160"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.373646" elapsed="0.000148"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.374025" level="INFO">${timestamp_str} = 1779971241450</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.373884" elapsed="0.000162"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.374227" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.374287" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.374132" elapsed="0.000174"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.374390" elapsed="0.000196"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.372914" elapsed="0.001722"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.375219" elapsed="0.000105"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.375501" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.375407" elapsed="0.000130"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.375617" elapsed="0.000106"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.374740" elapsed="0.001030"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.376478" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.376344" elapsed="0.000153"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.376572" elapsed="0.000153"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.376836" elapsed="0.000100"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.375876" elapsed="0.001106"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.377722" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.377587" elapsed="0.000154"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.377818" elapsed="0.000149"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.378053" elapsed="0.000093"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.377075" elapsed="0.001117"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.378854" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.378715" elapsed="0.000158"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.378947" elapsed="0.000150"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.379181" elapsed="0.000096"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.378285" elapsed="0.001037"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.379990" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.379851" elapsed="0.000158"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.380084" elapsed="0.000148"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.380315" elapsed="0.000095"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.379412" elapsed="0.001043"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.381039" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.380921" elapsed="0.000135"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.381123" elapsed="0.000133"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.381330" elapsed="0.000086"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.380537" elapsed="0.000920"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.382042" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.381924" elapsed="0.000135"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.382128" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.382337" elapsed="0.000086"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.381539" elapsed="0.000924"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.383048" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.382928" elapsed="0.000137"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.383132" elapsed="0.000113"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.383318" elapsed="0.000083"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.382547" elapsed="0.000895"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.370934" elapsed="0.012538"/>
</kw>
<var name="${ticker}">{'t': 1779971241450, 's': 'btc_usdt', 'c': '73282.6', 'h': '75959.9', 'l': '72689.3', 'a': '789157', 'v': '5865055', 'o': '75852.3', 'r': '-0.0338'}</var>
<status status="PASS" start="2026-05-28T20:27:25.370783" elapsed="0.012723"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.383848" elapsed="0.000090"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.384007" elapsed="0.000085"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.384158" elapsed="0.000085"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.384309" elapsed="0.000083"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.384461" elapsed="0.000081"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.384613" elapsed="0.000081"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.384761" elapsed="0.000082"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.384903" elapsed="0.000079"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.385044" elapsed="0.000078"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.385613" elapsed="0.000109"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.385786" elapsed="0.000100"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.386050" level="INFO">${timestamp_str} = 1779971243321</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.385949" elapsed="0.000116"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.386193" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.386236" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.386127" elapsed="0.000123"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.386309" elapsed="0.000134"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.385202" elapsed="0.001275"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.386891" elapsed="0.000075"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.387096" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.387029" elapsed="0.000093"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.387179" elapsed="0.000078"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.386550" elapsed="0.000739"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.387813" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.387708" elapsed="0.000121"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.387890" elapsed="0.000122"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.388080" elapsed="0.000077"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.387363" elapsed="0.000830"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.388722" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.388615" elapsed="0.000122"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.388798" elapsed="0.000120"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.388985" elapsed="0.000077"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.388267" elapsed="0.000832"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.389632" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.389524" elapsed="0.000123"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.389710" elapsed="0.000120"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.389916" elapsed="0.000078"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.389173" elapsed="0.000858"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.390556" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.390450" elapsed="0.000122"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.390634" elapsed="0.000120"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.390822" elapsed="0.000082"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.390106" elapsed="0.000835"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.391469" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.391361" elapsed="0.000124"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.391546" elapsed="0.000120"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.391734" elapsed="0.000077"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.391016" elapsed="0.000832"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.392383" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.392276" elapsed="0.000122"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.392460" elapsed="0.000121"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.392648" elapsed="0.000077"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.391921" elapsed="0.000840"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.393696" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.393589" elapsed="0.000121"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.393767" elapsed="0.000097"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.393925" elapsed="0.000070"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.392834" elapsed="0.001196"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.383672" elapsed="0.010385"/>
</kw>
<var name="${ticker}">{'t': 1779971243321, 's': 'eth_usdt', 'c': '1982.68', 'h': '2086.99', 'l': '1966.37', 'a': '128179', 'v': '2592264', 'o': '2082.43', 'r': '-0.0479'}</var>
<status status="PASS" start="2026-05-28T20:27:25.383562" elapsed="0.010511"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.394354" elapsed="0.000073"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.394485" elapsed="0.000073"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.394613" elapsed="0.000072"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.394741" elapsed="0.000072"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.394870" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.394997" elapsed="0.000070"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.395124" elapsed="0.000072"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.395254" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.395380" elapsed="0.000070"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.395857" elapsed="0.000102"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.396018" elapsed="0.000093"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.396260" level="INFO">${timestamp_str} = 1779971242001</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.396168" elapsed="0.000106"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.396391" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.396431" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.396332" elapsed="0.000112"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.396501" elapsed="0.000124"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.395541" elapsed="0.001116"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.397035" elapsed="0.000073"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.397223" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.397164" elapsed="0.000083"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.397302" elapsed="0.000073"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.396726" elapsed="0.000680"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.397898" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.397799" elapsed="0.000113"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.397969" elapsed="0.000110"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.398138" elapsed="0.000066"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.397474" elapsed="0.000762"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.398702" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.398606" elapsed="0.000110"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.398770" elapsed="0.000109"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.398943" elapsed="0.000067"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.398302" elapsed="0.000740"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.399562" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.399468" elapsed="0.000107"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.399629" elapsed="0.000104"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.399793" elapsed="0.000067"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.399107" elapsed="0.000786"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.400354" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.400261" elapsed="0.000106"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.400421" elapsed="0.000105"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.400585" elapsed="0.000068"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.399958" elapsed="0.000727"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.401146" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.401052" elapsed="0.000108"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.401212" elapsed="0.000118"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.401390" elapsed="0.000068"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.400749" elapsed="0.000741"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.401947" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.401855" elapsed="0.000106"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.402014" elapsed="0.000106"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.402179" elapsed="0.000069"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.401554" elapsed="0.000726"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.402717" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.402627" elapsed="0.000103"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.402780" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.402927" elapsed="0.000063"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.402344" elapsed="0.000677"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.394210" elapsed="0.008834"/>
</kw>
<var name="${ticker}">{'t': 1779971242001, 's': 'sol_usdt', 'c': '80.62', 'h': '84.78', 'l': '80.01', 'a': '253650', 'v': '2088282', 'o': '84.20', 'r': '-0.0425'}</var>
<status status="PASS" start="2026-05-28T20:27:25.394119" elapsed="0.008939"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.403309" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.403427" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.403541" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.403656" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.403771" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.403884" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.403999" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.404112" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.404224" elapsed="0.000062"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.404635" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.404775" elapsed="0.000081"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.404990" level="INFO">${timestamp_str} = 1779971244285</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.404909" elapsed="0.000094"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.405116" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.405153" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.405055" elapsed="0.000109"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.405215" elapsed="0.000176"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.404352" elapsed="0.001069"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.405765" elapsed="0.000062"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.405933" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.405877" elapsed="0.000078"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.406004" elapsed="0.000062"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.405484" elapsed="0.000620"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.406544" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.406457" elapsed="0.000100"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.406609" elapsed="0.000101"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.406766" elapsed="0.000065"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.406166" elapsed="0.000698"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.407283" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.407197" elapsed="0.000098"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.407344" elapsed="0.000094"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.407493" elapsed="0.000061"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.406924" elapsed="0.000660"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.408004" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.407918" elapsed="0.000098"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.408065" elapsed="0.000095"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.408214" elapsed="0.000061"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.407644" elapsed="0.000660"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.408726" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.408641" elapsed="0.000097"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.408787" elapsed="0.000096"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.408937" elapsed="0.000062"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.408363" elapsed="0.000666"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.409449" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.409363" elapsed="0.000098"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.409510" elapsed="0.000096"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.409659" elapsed="0.000062"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.409088" elapsed="0.000661"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.410173" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.410086" elapsed="0.000099"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.410234" elapsed="0.000095"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.410382" elapsed="0.000061"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.409807" elapsed="0.000665"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.410888" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.410797" elapsed="0.000102"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.410948" elapsed="0.000096"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.411099" elapsed="0.000061"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.410532" elapsed="0.000657"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.403180" elapsed="0.008032"/>
</kw>
<var name="${ticker}">{'t': 1779971244285, 's': 'xrp_usdt', 'c': '1.2841', 'h': '1.3425', 'l': '1.2669', 'a': '1255262', 'v': '1639910', 'o': '1.3346', 'r': '-0.0378'}</var>
<status status="PASS" start="2026-05-28T20:27:25.403099" elapsed="0.008126"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.411515" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.411624" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.411733" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.411838" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.411944" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.412048" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.412153" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.412257" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.412361" elapsed="0.000059"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.412744" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.412872" elapsed="0.000076"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.413072" level="INFO">${timestamp_str} = 1779971243427</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.412996" elapsed="0.000088"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.413182" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.413215" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.413131" elapsed="0.000095"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.413272" elapsed="0.000104"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.412484" elapsed="0.000919"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.413716" elapsed="0.000057"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.413871" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.413819" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.413935" elapsed="0.000060"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.413459" elapsed="0.000562"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.414423" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.414342" elapsed="0.000092"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.414481" elapsed="0.000092"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.414625" elapsed="0.000058"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.414076" elapsed="0.000635"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.415121" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.415038" elapsed="0.000095"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.415180" elapsed="0.000091"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.415322" elapsed="0.000059"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.414771" elapsed="0.000648"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.415821" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.415743" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.415877" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.416012" elapsed="0.000056"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.415477" elapsed="0.000618"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.416526" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.416399" elapsed="0.000138"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.416582" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.416718" elapsed="0.000062"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.416149" elapsed="0.000658"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.417192" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.417116" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.417248" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.417385" elapsed="0.000056"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.416865" elapsed="0.000603"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.417846" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.417770" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.417901" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.418039" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.417521" elapsed="0.000599"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.418491" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.418415" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.418546" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.418671" elapsed="0.000055"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.418174" elapsed="0.000579"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.411337" elapsed="0.007437"/>
</kw>
<var name="${ticker}">{'t': 1779971243427, 's': 'bnb_usdt', 'c': '631.06', 'h': '660.33', 'l': '630.65', 'a': '358250', 'v': '2312187', 'o': '656.39', 'r': '-0.0385'}</var>
<status status="PASS" start="2026-05-28T20:27:25.411262" elapsed="0.007524"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419008" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419108" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419208" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419306" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419405" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419516" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419618" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419718" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.419822" elapsed="0.000055"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.420175" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.420293" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.420475" level="INFO">${timestamp_str} = 1779971244639</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.420405" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.420573" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.420603" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.420529" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.420654" elapsed="0.000096"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.419936" elapsed="0.000839"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.421059" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.421249" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.421154" elapsed="0.000113"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.421310" elapsed="0.000056"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.420826" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.421759" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.421682" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.421813" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.421946" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.421439" elapsed="0.000587"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.422401" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.422324" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.422455" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.422589" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.422078" elapsed="0.000592"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.423049" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.422974" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.423102" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.423232" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.422721" elapsed="0.000592"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.423682" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.423608" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.423736" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.423866" elapsed="0.000053"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.423364" elapsed="0.000590"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.424328" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.424251" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.424377" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.424499" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.424007" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.424913" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.424845" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.424962" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.425084" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.424621" elapsed="0.000536"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.425494" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.425420" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.425543" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.425652" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.425205" elapsed="0.000519"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.418896" elapsed="0.006847"/>
</kw>
<var name="${ticker}">{'t': 1779971244639, 's': 'trb_usdt', 'c': '16.129', 'h': '17.598', 'l': '16.030', 'a': '1194852', 'v': '2008788', 'o': '17.354', 'r': '-0.0705'}</var>
<status status="PASS" start="2026-05-28T20:27:25.418821" elapsed="0.006933"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.425949" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.426040" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.426131" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.426222" elapsed="0.000098"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.426360" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.426453" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.426542" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.426631" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.426720" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.427044" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.427152" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.427323" level="INFO">${timestamp_str} = 1779971244641</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.427258" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.427414" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.427442" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.427372" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.427490" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.426821" elapsed="0.000791"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.427879" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.428010" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.427968" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.428065" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.427660" elapsed="0.000477"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.428483" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.428413" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.428536" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.428658" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.428185" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.429072" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.429002" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.429121" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.429240" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.428781" elapsed="0.000532"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.429651" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.429581" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.429700" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.429820" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.429361" elapsed="0.000532"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.430232" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.430163" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.430281" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.430409" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.429941" elapsed="0.000541"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.430864" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.430794" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.430917" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.431038" elapsed="0.000048"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.430529" elapsed="0.000581"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.431450" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.431382" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.431499" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.431621" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.431157" elapsed="0.000544"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.432034" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.431964" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.432083" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.432192" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.431748" elapsed="0.000516"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.425849" elapsed="0.006433"/>
</kw>
<var name="${ticker}">{'t': 1779971244641, 's': 'ordi_usdt', 'c': '3.400', 'h': '4.159', 'l': '3.375', 'a': '611711', 'v': '2323764', 'o': '4.032', 'r': '-0.1567'}</var>
<status status="PASS" start="2026-05-28T20:27:25.425786" elapsed="0.006508"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.432503" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.432593" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.432682" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.432770" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.432858" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.432950" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.433038" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.433123" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.433210" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.433529" elapsed="0.000066"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.433636" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.433808" level="INFO">${timestamp_str} = 1779971244362</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.433739" elapsed="0.000079"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.433901" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.433932" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.433857" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.433982" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.433310" elapsed="0.000778"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.434353" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.434482" level="INFO">Length is 13.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.434439" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.434535" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.434135" elapsed="0.000473"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.435015" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.434895" elapsed="0.000130"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.435065" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.435186" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.434655" elapsed="0.000605"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.435612" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.435542" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.435662" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.435783" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.435316" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.436210" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.436141" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.436259" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.436379" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.435916" elapsed="0.000536"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.436808" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.436734" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.436863" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.436994" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.436499" elapsed="0.000567"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.437406" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.437336" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.437454" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.437580" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.437114" elapsed="0.000540"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.438011" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.437940" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.438060" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.438180" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.437701" elapsed="0.000551"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.438588" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.438520" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.438637" elapsed="0.000069"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.438752" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.438299" elapsed="0.000533"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.432396" elapsed="0.006457"/>
</kw>
<var name="${ticker}">{'t': 1779971244362, 's': '1000shib_usdt', 'c': '0.005264', 'h': '0.005553', 'l': '0.005238', 'a': '4087527', 'v': '2210503', 'o': '0.005528', 'r': '-0.0477'}</var>
<status status="PASS" start="2026-05-28T20:27:25.432328" elapsed="0.006539"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439075" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439175" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439266" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439355" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439444" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439532" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439620" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439710" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.439798" elapsed="0.000095"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.440167" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.440275" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.440443" level="INFO">${timestamp_str} = 1779971242141</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.440379" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.440535" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.440563" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.440493" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.440611" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.439947" elapsed="0.000772"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.440992" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.441121" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.441080" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.441177" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.440767" elapsed="0.000487"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.441613" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.441545" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.441662" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.441784" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.441306" elapsed="0.000551"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.442198" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.442130" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.442247" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.442372" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.441906" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.442787" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.442717" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.442835" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.442961" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.442493" elapsed="0.000552"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.443412" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.443332" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.443465" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.443591" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.443094" elapsed="0.000572"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.444011" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.443940" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.444061" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.444186" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.443717" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.444665" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.444554" elapsed="0.000121"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.444715" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.444837" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.444319" elapsed="0.000592"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.445245" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.445177" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.445295" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.445405" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.444959" elapsed="0.000519"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.438971" elapsed="0.006526"/>
</kw>
<var name="${ticker}">{'t': 1779971242141, 's': 'doge_usdt', 'c': '0.09748', 'h': '0.10331', 'l': '0.09705', 'a': '6971317', 'v': '6976452', 'o': '0.10196', 'r': '-0.0439'}</var>
<status status="PASS" start="2026-05-28T20:27:25.438901" elapsed="0.006608"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.445707" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.445807" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.445906" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.446000" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.446089" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.446177" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.446265" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.446356" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.446445" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.446779" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.446902" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.447088" level="INFO">${timestamp_str} = 1779971244288</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.447022" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.447179" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.447207" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.447137" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.447255" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.446546" elapsed="0.000818"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.447629" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.447760" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.447718" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.447814" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.447411" elapsed="0.000475"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.448240" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.448165" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.448294" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.448427" elapsed="0.000053"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.447934" elapsed="0.000570"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.448896" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.448776" elapsed="0.000130"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.448947" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.449072" elapsed="0.000048"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.448553" elapsed="0.000590"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.449514" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.449443" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.449564" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.449685" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.449193" elapsed="0.000565"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.450098" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.450028" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.450148" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.450277" elapsed="0.000053"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.449806" elapsed="0.000551"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.450715" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.450642" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.450764" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.450885" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.450409" elapsed="0.000561"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.451326" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.451252" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.451381" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.451510" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.451018" elapsed="0.000565"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.451918" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.451850" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.451968" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.452077" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.451632" elapsed="0.000519"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.445603" elapsed="0.006567"/>
</kw>
<var name="${ticker}">{'t': 1779971244288, 's': 'trx_usdt', 'c': '0.34929', 'h': '0.37419', 'l': '0.34789', 'a': '122290', 'v': '4472524', 'o': '0.37399', 'r': '-0.0660'}</var>
<status status="PASS" start="2026-05-28T20:27:25.445540" elapsed="0.006641"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.452394" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.452491" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.452579" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.452669" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.452757" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.452845" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.452933" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.453027" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.453115" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.453458" elapsed="0.000304"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.453804" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.453972" level="INFO">${timestamp_str} = 1779971244136</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.453909" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.454064" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.454092" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.454021" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.454140" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.453218" elapsed="0.001029"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.454519" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.454649" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.454607" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.454705" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.454294" elapsed="0.000489"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.455147" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.455077" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.455205" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.455327" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.454834" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.455755" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.455678" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.455809" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.455941" elapsed="0.000053"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.455450" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.456362" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.456293" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.456412" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.456534" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.456066" elapsed="0.000542"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.456974" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.456901" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.457023" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.457145" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.456656" elapsed="0.000562"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.457573" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.457503" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.457622" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.457756" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.457269" elapsed="0.000568"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.458193" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.458124" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.458244" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.458365" elapsed="0.000053"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.457890" elapsed="0.000553"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.458846" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.458715" elapsed="0.000142"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.458906" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459022" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.458490" elapsed="0.000618"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.452285" elapsed="0.006842"/>
</kw>
<var name="${ticker}">{'t': 1779971244136, 's': 'dogs_usdt', 'c': '0.0000464', 'h': '0.0000522', 'l': '0.0000461', 'a': '39462754', 'v': '1947650', 'o': '0.0000511', 'r': '-0.0919'}</var>
<status status="PASS" start="2026-05-28T20:27:25.452215" elapsed="0.006923"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459332" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459424" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459516" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459605" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459698" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459796" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459893" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.459988" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.460076" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.460398" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.460508" elapsed="0.000061"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.460675" level="INFO">${timestamp_str} = 1779971242433</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.460611" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.460774" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.460804" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.460729" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.460856" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.460178" elapsed="0.000794"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.461236" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.461365" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.461323" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.461419" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.461019" elapsed="0.000471"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.461852" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.461777" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.461906" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.462033" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.461537" elapsed="0.000570"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.462447" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.462379" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.462497" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.462620" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.462155" elapsed="0.000544"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.463113" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.463042" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.463174" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.463298" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.462751" elapsed="0.000622"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.463724" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.463648" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.463778" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.463914" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.463422" elapsed="0.000571"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.464332" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.464264" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.464383" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.464506" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.464041" elapsed="0.000539"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.464944" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.464869" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.464995" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.465118" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.464628" elapsed="0.000564"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.465538" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.465467" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.465587" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.465699" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.465240" elapsed="0.000539"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.459232" elapsed="0.006567"/>
</kw>
<var name="${ticker}">{'t': 1779971242433, 's': 'sui_usdt', 'c': '0.9091', 'h': '1.0124', 'l': '0.9066', 'a': '1212202', 'v': '1158210', 'o': '1.0088', 'r': '-0.0988'}</var>
<status status="PASS" start="2026-05-28T20:27:25.459169" elapsed="0.006642"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466019" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466110" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466200" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466290" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466379" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466469" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466557" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466657" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.466755" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.467101" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.467211" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.467380" level="INFO">${timestamp_str} = 1779971242920</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.467316" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.467472" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.467501" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.467430" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.467549" elapsed="0.000137"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.466871" elapsed="0.000838"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.467994" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.468125" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.468083" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.468179" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.467760" elapsed="0.000492"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.468605" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.468535" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.468659" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.468797" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.468299" elapsed="0.000579"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.469228" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.469159" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.469278" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.469400" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.468931" elapsed="0.000543"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.469831" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.469757" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.469886" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.470016" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.469522" elapsed="0.000567"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.470437" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.470367" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.470486" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.470607" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.470137" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.471064" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.470994" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.471114" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.471237" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.470734" elapsed="0.000577"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.471661" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.471591" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.471714" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.471847" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.471360" elapsed="0.000569"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.472271" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.472201" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.472320" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.472431" elapsed="0.000095"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.471981" elapsed="0.000570"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.465914" elapsed="0.006656"/>
</kw>
<var name="${ticker}">{'t': 1779971242920, 's': 'grass_usdt', 'c': '0.4882', 'h': '0.5340', 'l': '0.4762', 'a': '2409891', 'v': '1196686', 'o': '0.5093', 'r': '-0.0414'}</var>
<status status="PASS" start="2026-05-28T20:27:25.465845" elapsed="0.006736"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.472789" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.472889" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.472986" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.473078" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.473168" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.473259" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.473349" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.473438" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.473525" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.473866" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.473983" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.474154" level="INFO">${timestamp_str} = 1779971243472</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.474089" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.474250" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.474278" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.474207" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.474325" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.473628" elapsed="0.000807"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.474713" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.474873" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.474820" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.474934" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.474483" elapsed="0.000525"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.475354" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.475283" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.475404" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.475527" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.475055" elapsed="0.000547"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.475978" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.475903" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.476027" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.476149" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.475656" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.476616" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.476544" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.476666" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.476799" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.476270" elapsed="0.000609"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.477235" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.477164" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.477285" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.477408" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.476933" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.477847" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.477770" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.477902" elapsed="0.000091"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.478036" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.477531" elapsed="0.000580"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.478469" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.478392" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.478518" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.478640" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.478161" elapsed="0.000552"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.479074" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.479003" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.479125" elapsed="0.000072"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.479246" elapsed="0.000053"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.478769" elapsed="0.000557"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.472676" elapsed="0.006670"/>
</kw>
<var name="${ticker}">{'t': 1779971243472, 's': 'ban_usdt', 'c': '0.0783', 'h': '0.0944', 'l': '0.0777', 'a': '2390539', 'v': '2059138', 'o': '0.0942', 'r': '-0.1687'}</var>
<status status="PASS" start="2026-05-28T20:27:25.472612" elapsed="0.006746"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.479564" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.479655" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.479745" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.479833" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.479928" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.480016" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.480104" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.480196" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.480292" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.480629" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.480738" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.480907" level="INFO">${timestamp_str} = 1779971242347</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.480842" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.481042" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.481071" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.480956" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.481120" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.480403" elapsed="0.000828"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.481523" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.481659" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.481615" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.481715" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.481284" elapsed="0.000503"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.482143" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.482069" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.482198" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.482335" elapsed="0.000056"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.481835" elapsed="0.000582"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.482766" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.482697" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.482816" elapsed="0.000098"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.482959" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.482469" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.483406" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.483331" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.483460" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.483583" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.483082" elapsed="0.000574"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.483998" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.483930" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.484048" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.484181" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.483705" elapsed="0.000556"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.484622" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.484554" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.484672" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.484793" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.484317" elapsed="0.000548"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.485224" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.485150" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.485278" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.485410" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.484913" elapsed="0.000575"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.485822" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.485753" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.485876" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.485985" elapsed="0.000094"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.485537" elapsed="0.000567"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.479462" elapsed="0.006661"/>
</kw>
<var name="${ticker}">{'t': 1779971242347, 's': 'people_usdt', 'c': '0.00611', 'h': '0.00667', 'l': '0.00601', 'a': '9608910', 'v': '610034', 'o': '0.00660', 'r': '-0.0742'}</var>
<status status="PASS" start="2026-05-28T20:27:25.479392" elapsed="0.006741"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.486343" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.486442" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.486533" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.486638" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.486728" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.486818" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.486908" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.486996" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.487084" elapsed="0.000053"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.487435" elapsed="0.000071"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.487548" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.487719" level="INFO">${timestamp_str} = 1779971242725</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.487653" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.487811" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.487839" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.487769" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.487887" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.487194" elapsed="0.000801"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.488272" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.488415" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.488367" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.488474" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.488045" elapsed="0.000501"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.488887" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.488817" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.488937" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.489057" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.488593" elapsed="0.000537"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.489502" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.489427" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.489551" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.489673" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.489178" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.490138" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.490066" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.490195" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.490329" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.489794" elapsed="0.000615"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.490758" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.490688" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.490817" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.490945" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.490462" elapsed="0.000558"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.491386" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.491312" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.491442" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.491567" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.491068" elapsed="0.000573"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.491998" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.491923" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.492047" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.492169" elapsed="0.000053"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.491688" elapsed="0.000560"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.492604" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.492534" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.492654" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.492764" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.492300" elapsed="0.000537"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.486234" elapsed="0.006622"/>
</kw>
<var name="${ticker}">{'t': 1779971242725, 's': 'ton_usdt', 'c': '1.7617', 'h': '1.9162', 'l': '1.7592', 'a': '1197294', 'v': '2201524', 'o': '1.8969', 'r': '-0.0712'}</var>
<status status="PASS" start="2026-05-28T20:27:25.486165" elapsed="0.006702"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493065" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493155" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493258" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493355" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493453" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493542" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493631" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493720" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.493808" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.494136" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.494254" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.494437" level="INFO">${timestamp_str} = 1779971241345</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.494367" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.494577" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.494613" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.494490" elapsed="0.000133"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.494662" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.493909" elapsed="0.000862"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.495039" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.495175" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.495128" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.495233" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.494818" elapsed="0.000493"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.495666" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.495596" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.495716" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.495838" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.495362" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.496264" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.496188" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.496319" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.496451" elapsed="0.000052"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.495960" elapsed="0.000567"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.496874" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.496803" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.496924" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.497046" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.496575" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.497502" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.497427" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.497552" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.497675" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.497174" elapsed="0.000574"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.498099" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.498028" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.498152" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.498285" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.497795" elapsed="0.000571"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.498722" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.498653" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.498783" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.498911" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.498418" elapsed="0.000567"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.499341" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.499266" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.499402" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.499518" elapsed="0.000093"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.499034" elapsed="0.000602"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.492962" elapsed="0.006693"/>
</kw>
<var name="${ticker}">{'t': 1779971241345, 's': 'aixbt_usdt', 'c': '0.02653', 'h': '0.03109', 'l': '0.02635', 'a': '1800793', 'v': '512942', 'o': '0.03091', 'r': '-0.1417'}</var>
<status status="PASS" start="2026-05-28T20:27:25.492899" elapsed="0.006767"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.499862" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.499955" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.500045" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.500137" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.500233" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.500329" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.500426" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.500518" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.500606" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.500935" elapsed="0.000071"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.501048" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.501220" level="INFO">${timestamp_str} = 1779971244841</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.501153" elapsed="0.000078"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.501322" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.501353" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.501275" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.501405" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.500706" elapsed="0.000813"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.501787" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.501918" level="INFO">Length is 12.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.501874" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.501971" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.501566" elapsed="0.000476"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.502410" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.502334" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.502464" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.502586" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.502089" elapsed="0.000579"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.503025" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.502954" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.503075" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.503198" elapsed="0.000059"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.502716" elapsed="0.000567"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.503682" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.503611" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.503735" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.503858" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.503336" elapsed="0.000596"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.504290" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.504216" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.504345" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.504477" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.503980" elapsed="0.000571"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.504893" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.504826" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.504943" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.505062" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.504599" elapsed="0.000540"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.505505" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.505435" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.505555" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.505675" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.505191" elapsed="0.000558"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.506089" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.506019" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.506143" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.506261" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.505797" elapsed="0.000544"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.499762" elapsed="0.006599"/>
</kw>
<var name="${ticker}">{'t': 1779971244841, 's': 'melania_usdt', 'c': '0.086', 'h': '0.092', 'l': '0.085', 'a': '3599632', 'v': '318809', 'o': '0.090', 'r': '-0.0444'}</var>
<status status="PASS" start="2026-05-28T20:27:25.499698" elapsed="0.006675"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.506587" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.506678" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.506768" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.506857" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.506949" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.507037" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.507126" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.507222" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.507318" elapsed="0.000053"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.507652" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.507760" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.507928" level="INFO">${timestamp_str} = 1779971244002</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.507864" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.508246" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.508278" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.507977" elapsed="0.000312"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.508331" elapsed="0.000096"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.507428" elapsed="0.001024"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.508718" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.508849" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.508805" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.508904" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.508500" elapsed="0.000476"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.509339" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.509262" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.509392" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.509521" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.509024" elapsed="0.000570"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.509944" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.509869" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.509996" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.510118" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.509644" elapsed="0.000547"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.510556" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.510487" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.510605" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.510736" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.510244" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.511160" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.511086" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.511215" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.511348" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.510858" elapsed="0.000570"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.511780" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.511712" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.511830" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.511952" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.511486" elapsed="0.000540"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.512390" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.512316" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.512445" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.512569" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.512074" elapsed="0.000567"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.512988" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.512915" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.513038" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.513147" elapsed="0.000056"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.512689" elapsed="0.000539"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.506487" elapsed="0.006761"/>
</kw>
<var name="${ticker}">{'t': 1779971244002, 's': 'dot_usdt', 'c': '1.183', 'h': '1.278', 'l': '1.175', 'a': '942452', 'v': '1154592', 'o': '1.266', 'r': '-0.0655'}</var>
<status status="PASS" start="2026-05-28T20:27:25.506419" elapsed="0.006842"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522191" elapsed="0.000069"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522306" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522400" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522491" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522582" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522671" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522762" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522851" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.522948" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.523320" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.523437" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.523612" level="INFO">${timestamp_str} = 1779971244031</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.523544" elapsed="0.000079"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.523707" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.523736" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.523664" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.523784" elapsed="0.000090"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.523080" elapsed="0.000818"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.524173" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.524306" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.524262" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.524361" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.523948" elapsed="0.000485"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.524786" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.524713" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.524837" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.524964" elapsed="0.000087"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.524481" elapsed="0.000595"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.525433" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.525356" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.525487" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.525611" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.525126" elapsed="0.000559"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.526043" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.525974" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.526093" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.526217" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.525734" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.526639" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.526571" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.526690" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.526822" elapsed="0.000057"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.526339" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.527254" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.527184" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.527304" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.527439" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.526958" elapsed="0.000556"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.527877" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.527801" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.527931" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.528057" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.527563" elapsed="0.000568"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.528468" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.528398" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.528518" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.528628" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.528179" elapsed="0.000528"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.513364" elapsed="0.015364"/>
</kw>
<var name="${ticker}">{'t': 1779971244031, 's': 'uni_usdt', 'c': '3.005', 'h': '3.318', 'l': '2.989', 'a': '598225', 'v': '1881141', 'o': '3.289', 'r': '-0.0863'}</var>
<status status="PASS" start="2026-05-28T20:27:25.513294" elapsed="0.015446"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.528958" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.529050" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.529140" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.529228" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.529316" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.529404" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.529492" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.529579" elapsed="0.000096"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.529716" elapsed="0.000055"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.530061" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.530172" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.530345" level="INFO">${timestamp_str} = 1779971244048</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.530279" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.530439" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.530467" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.530396" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.530515" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.529828" elapsed="0.000796"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.530911" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.531047" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.531005" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.531102" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.530672" elapsed="0.000513"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.531539" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.531470" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.531590" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.531715" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.531232" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.532151" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.532082" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.532200" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.532322" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.531848" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.532751" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.532677" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.532806" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.532939" elapsed="0.000053"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.532444" elapsed="0.000572"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.533359" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.533290" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.533409" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.533529" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.533064" elapsed="0.000538"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.533972" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.533898" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.534022" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.534143" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.533655" elapsed="0.000561"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.534612" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.534542" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.534663" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.534795" elapsed="0.000056"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.534264" elapsed="0.000618"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.535226" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.535157" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.535276" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.535399" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.534935" elapsed="0.000539"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.528848" elapsed="0.006644"/>
</kw>
<var name="${ticker}">{'t': 1779971244048, 's': 'pol_usdt', 'c': '0.08701', 'h': '0.09179', 'l': '0.08635', 'a': '1194109', 'v': '1065970', 'o': '0.09175', 'r': '-0.0516'}</var>
<status status="PASS" start="2026-05-28T20:27:25.528778" elapsed="0.006725"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.535701" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.535800" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.535900" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.535996" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.536086" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.536175" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.536265" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.536353" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.536443" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.536778" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.536896" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.537071" level="INFO">${timestamp_str} = 1779971242991</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.537008" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.537162" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.537192" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.537121" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.537240" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.536545" elapsed="0.000804"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.537618" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.537761" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.537713" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.537820" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.537397" elapsed="0.000501"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.538247" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.538176" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.538295" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.538416" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.537950" elapsed="0.000540"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.538909" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.538776" elapsed="0.000144"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.538964" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.539087" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.538538" elapsed="0.000633"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.539526" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.539456" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.539576" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.539700" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.539219" elapsed="0.000562"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.540142" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.540073" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.540195" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.540317" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.539836" elapsed="0.000556"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.540742" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.540668" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.540797" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.540933" elapsed="0.000053"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.540440" elapsed="0.000569"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.541350" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.541280" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.541399" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.541520" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.541057" elapsed="0.000536"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.541955" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.541880" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.542006" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.542114" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.541645" elapsed="0.000543"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.535598" elapsed="0.006608"/>
</kw>
<var name="${ticker}">{'t': 1779971242991, 's': 'arb_usdt', 'c': '0.1016', 'h': '0.1111', 'l': '0.1011', 'a': '5018605', 'v': '531905', 'o': '0.1099', 'r': '-0.0755'}</var>
<status status="PASS" start="2026-05-28T20:27:25.535535" elapsed="0.006683"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.542414" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.542508" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.542596" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.542693" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.542791" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.542906" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.543001" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.543090" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.543178" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.543512" elapsed="0.000116"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.543674" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.543860" level="INFO">${timestamp_str} = 1779971243722</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.543788" elapsed="0.000082"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.543960" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.543989" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.543913" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.544037" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.543281" elapsed="0.000864"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.544418" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.544555" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.544511" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.544612" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.544192" elapsed="0.000490"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.545044" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.544976" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.545094" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.545217" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.544731" elapsed="0.000559"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.545639" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.545567" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.545693" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.545826" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.545338" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.546252" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.546185" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.546302" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.546423" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.545960" elapsed="0.000535"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.546859" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.546782" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.546917" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.547044" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.546543" elapsed="0.000583"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.547487" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.547413" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.547537" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.547658" elapsed="0.000053"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.547178" elapsed="0.000558"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.548098" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.548028" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.548148" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.548273" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.547789" elapsed="0.000558"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.548727" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.548610" elapsed="0.000128"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.548782" elapsed="0.000072"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.548902" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.548395" elapsed="0.000586"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.542312" elapsed="0.006687"/>
</kw>
<var name="${ticker}">{'t': 1779971243722, 's': 'fil_usdt', 'c': '0.943', 'h': '1.099', 'l': '0.938', 'a': '12133077', 'v': '1237613', 'o': '1.065', 'r': '-0.1145'}</var>
<status status="PASS" start="2026-05-28T20:27:25.542249" elapsed="0.006762"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549203" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549294" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549384" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549472" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549560" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549656" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549752" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549849" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.549947" elapsed="0.000052"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.550273" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.550382" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.550550" level="INFO">${timestamp_str} = 1779971243553</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.550486" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.550646" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.550677" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.550600" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.550728" elapsed="0.000093"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.550052" elapsed="0.000806"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.551138" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.551268" level="INFO">Length is 7.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.551226" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.551323" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.550915" elapsed="0.000481"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.551751" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.551675" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.551806" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.551937" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.551443" elapsed="0.000572"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.552356" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.552288" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.552406" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.552527" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.552064" elapsed="0.000535"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.553019" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.552948" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.553069" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.553191" elapsed="0.000048"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.552652" elapsed="0.000611"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.553614" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.553544" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.553668" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.553801" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.553311" elapsed="0.000572"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.554234" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.554165" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.554283" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.554405" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.553936" elapsed="0.000542"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.554837" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.554762" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.554895" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.555024" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.554526" elapsed="0.000581"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.555453" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.555379" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.555505" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.555615" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.555156" elapsed="0.000533"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.549104" elapsed="0.006606"/>
</kw>
<var name="${ticker}">{'t': 1779971243553, 's': 'op_usdt', 'c': '0.1159', 'h': '0.1304', 'l': '0.1155', 'a': '2098414', 'v': '257050', 'o': '0.1281', 'r': '-0.0952'}</var>
<status status="PASS" start="2026-05-28T20:27:25.549041" elapsed="0.006680"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.555934" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556029" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556116" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556205" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556294" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556383" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556471" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556560" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556652" elapsed="0.000052"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.556997" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.557105" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.557329" level="INFO">${timestamp_str} = 1779971243577</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.557210" elapsed="0.000129"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.557429" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.557459" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.557383" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.557509" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.556761" elapsed="0.000855"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.557886" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.558023" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.557981" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.558077" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.557663" elapsed="0.000486"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.558516" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.558443" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.558567" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.558689" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.558197" elapsed="0.000567"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.559123" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.559053" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.559178" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.559311" elapsed="0.000054"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.558812" elapsed="0.000580"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.559738" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.559670" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.559788" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.559909" elapsed="0.000048"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.559444" elapsed="0.000537"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.560343" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.560266" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.560397" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.560523" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.560029" elapsed="0.000569"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.560951" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.560875" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.561002" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.561123" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.560645" elapsed="0.000552"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.561561" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.561493" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.561611" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.561737" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.561252" elapsed="0.000565"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.562164" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.562096" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.562213" elapsed="0.000112"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.562369" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.561870" elapsed="0.000571"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.555824" elapsed="0.006636"/>
</kw>
<var name="${ticker}">{'t': 1779971243577, 's': 'dydx_usdt', 'c': '0.145', 'h': '0.172', 'l': '0.144', 'a': '3594237', 'v': '575333', 'o': '0.169', 'r': '-0.1420'}</var>
<status status="PASS" start="2026-05-28T20:27:25.555755" elapsed="0.006715"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.562671" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.562770" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.562880" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.562987" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.563077" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.563165" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.563252" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.563341" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.563429" elapsed="0.000051"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.563764" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.563884" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.564059" level="INFO">${timestamp_str} = 1779971243145</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.563996" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.564149" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.564177" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.564108" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.564225" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.563532" elapsed="0.000800"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.564596" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.564740" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.564692" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.564799" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.564380" elapsed="0.000497"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.565231" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.565157" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.565281" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.565404" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.564929" elapsed="0.000554"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.565846" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.565772" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.565901" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.566027" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.565532" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.566501" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.566428" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.566551" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.566675" elapsed="0.000053"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.566149" elapsed="0.000605"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.567124" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.567057" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.567175" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.567298" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.566816" elapsed="0.000555"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.567724" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.567650" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.567780" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.567916" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.567420" elapsed="0.000575"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.568336" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.568266" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.568387" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.568508" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.568043" elapsed="0.000540"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.568945" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.568869" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.568998" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.569107" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.568633" elapsed="0.000548"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.562564" elapsed="0.006636"/>
</kw>
<var name="${ticker}">{'t': 1779971243145, 's': 'pengu_usdt', 'c': '0.007791', 'h': '0.008541', 'l': '0.007758', 'a': '3886068', 'v': '3172017', 'o': '0.008502', 'r': '-0.0836'}</var>
<status status="PASS" start="2026-05-28T20:27:25.562502" elapsed="0.006708"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.569402" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.569497" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.569585" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.569680" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.569779" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.569873" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.569967" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.570056" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.570144" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.570472" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.570580" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.570813" level="INFO">${timestamp_str} = 1779971242881</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.570692" elapsed="0.000132"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.570914" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.570944" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.570867" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.570995" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.570245" elapsed="0.000858"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.571375" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.571514" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.571470" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.571568" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.571150" elapsed="0.000490"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.572010" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.571936" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.572060" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.572182" elapsed="0.000057"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.571687" elapsed="0.000578"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.572635" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.572565" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.572685" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.572805" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.572317" elapsed="0.000562"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.573231" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.573157" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.573285" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.573420" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.572927" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.573835" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.573767" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.573884" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.574005" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.573545" elapsed="0.000532"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.574445" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.574371" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.574497" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.574619" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.574128" elapsed="0.000575"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.575059" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.574989" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.575109" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.575243" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.574752" elapsed="0.000572"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.575669" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.575601" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.575720" elapsed="0.000306"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.576071" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.575376" elapsed="0.000769"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.569304" elapsed="0.006860"/>
</kw>
<var name="${ticker}">{'t': 1779971242881, 's': 'wif_usdt', 'c': '0.1754', 'h': '0.1964', 'l': '0.1746', 'a': '540140', 'v': '1003391', 'o': '0.1950', 'r': '-0.1005'}</var>
<status status="PASS" start="2026-05-28T20:27:25.569241" elapsed="0.006934"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.576386" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.576484" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.576574" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.576666" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.576754" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.576845" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.576933" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.577020" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.577109" elapsed="0.000053"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.577455" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.577565" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.577737" level="INFO">${timestamp_str} = 1779971243666</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.577670" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.577829" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.577858" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.577786" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.577906" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.577219" elapsed="0.000796"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.578294" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.578437" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.578391" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.578497" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.578062" elapsed="0.000507"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.578922" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.578841" elapsed="0.000092"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.578988" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.579112" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.578617" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.579550" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.579482" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.579599" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.579721" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.579239" elapsed="0.000556"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.580194" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.580117" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.580249" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.580381" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.579844" elapsed="0.000616"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.580806" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.580738" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.580856" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.580976" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.580510" elapsed="0.000540"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.581416" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.581341" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.581471" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.581593" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.581098" elapsed="0.000569"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.582033" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.581962" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.582084" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.582204" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.581718" elapsed="0.000561"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.582624" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.582551" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.582679" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.582799" elapsed="0.000055"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.582328" elapsed="0.000561"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.576277" elapsed="0.006636"/>
</kw>
<var name="${ticker}">{'t': 1779971243666, 's': 'trump_usdt', 'c': '1.852', 'h': '2.031', 'l': '1.849', 'a': '1075580', 'v': '2087663', 'o': '2.013', 'r': '-0.0799'}</var>
<status status="PASS" start="2026-05-28T20:27:25.576208" elapsed="0.006717"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583125" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583216" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583304" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583393" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583481" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583569" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583663" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583759" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.583857" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.584192" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.584300" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.584469" level="INFO">${timestamp_str} = 1779971242746</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.584404" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.584561" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.584589" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.584518" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.584639" elapsed="0.000146"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.583972" elapsed="0.000839"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.585094" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.585224" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.585183" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.585279" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.584863" elapsed="0.000487"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.585702" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.585628" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.585756" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.585890" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.585398" elapsed="0.000573"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.586315" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.586244" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.586365" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.586486" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.586020" elapsed="0.000540"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.586934" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.586855" elapsed="0.000101"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.586999" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.587123" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.586608" elapsed="0.000590"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.587554" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.587485" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.587604" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.587738" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.587246" elapsed="0.000573"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.588174" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.588106" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.588224" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.588346" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.587872" elapsed="0.000548"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.588777" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.588703" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.588831" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.588963" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.588468" elapsed="0.000569"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.589374" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.589305" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.589423" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.589533" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.589086" elapsed="0.000521"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.583025" elapsed="0.006602"/>
</kw>
<var name="${ticker}">{'t': 1779971242746, 's': 'not_usdt', 'c': '0.000427', 'h': '0.000470', 'l': '0.000421', 'a': '9126206', 'v': '405414', 'o': '0.000454', 'r': '-0.0594'}</var>
<status status="PASS" start="2026-05-28T20:27:25.582959" elapsed="0.006680"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.589906" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.590005" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.590095" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.590186" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.590280" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.590369" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.590459" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.590558" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.590653" elapsed="0.000055"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.591008" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.591118" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.591297" level="INFO">${timestamp_str} = 1779971243448</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.591227" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.591400" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.591431" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.591353" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.591483" elapsed="0.000090"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.590766" elapsed="0.000829"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.591859" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.592001" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.591956" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.592056" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.591642" elapsed="0.000485"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.592493" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.592418" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.592542" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.592665" elapsed="0.000053"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.592174" elapsed="0.000570"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.593104" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.593036" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.593154" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.593275" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.592796" elapsed="0.000553"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.593698" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.593624" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.593752" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.593884" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.593397" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.594351" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.594236" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.594401" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.594525" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.594013" elapsed="0.000585"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.594983" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.594905" elapsed="0.000099"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.595045" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.595167" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.594651" elapsed="0.000590"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.595596" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.595526" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.595648" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.595783" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.595290" elapsed="0.000573"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.596212" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.596142" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.596262" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.596372" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.595919" elapsed="0.000526"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.589742" elapsed="0.006722"/>
</kw>
<var name="${ticker}">{'t': 1779971243448, 's': 'spell_usdt', 'c': '0.0001464', 'h': '0.0001542', 'l': '0.0001453', 'a': '53416218', 'v': '804629', 'o': '0.0001531', 'r': '-0.0437'}</var>
<status status="PASS" start="2026-05-28T20:27:25.589673" elapsed="0.006802"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.596679" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.596779" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.596878" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.596976" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.597065" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.597154" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.597243" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.597331" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.597420" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.597754" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.597873" elapsed="0.000070"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.598051" level="INFO">${timestamp_str} = 1779971244749</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.597987" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.598143" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.598172" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.598101" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.598219" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.597521" elapsed="0.000806"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.598592" elapsed="0.000055"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.598797" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.598689" elapsed="0.000127"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.598859" elapsed="0.000060"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.598375" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.599288" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.599219" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.599338" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.599460" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.598993" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.599907" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.599830" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.599962" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.600086" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.599581" elapsed="0.000579"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.600513" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.600440" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.600563" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.600684" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.600207" elapsed="0.000558"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.601121" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.601054" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.601171" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.601300" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.600817" elapsed="0.000563"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.601738" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.601660" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.601792" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.601924" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.601432" elapsed="0.000570"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.602342" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.602274" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.602390" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.602516" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.602051" elapsed="0.000537"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.602971" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.602889" elapsed="0.000093"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.603022" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.603132" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.602636" elapsed="0.000569"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.596569" elapsed="0.006655"/>
</kw>
<var name="${ticker}">{'t': 1779971244749, 's': 'wld_usdt', 'c': '0.2927', 'h': '0.3708', 'l': '0.2910', 'a': '2449879', 'v': '813899', 'o': '0.3641', 'r': '-0.1960'}</var>
<status status="PASS" start="2026-05-28T20:27:25.596506" elapsed="0.006729"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.603432" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.603528" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.603619" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.603715" elapsed="0.000105"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.603864" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.603961" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.604052" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.604139" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.604228" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.604557" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.604670" elapsed="0.000070"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.604854" level="INFO">${timestamp_str} = 1779971242942</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.604784" elapsed="0.000080"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.604954" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.604985" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.604909" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.605033" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.604330" elapsed="0.000812"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.605420" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.605554" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.605513" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.605609" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.605190" elapsed="0.000490"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.606041" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.605973" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.606091" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.606216" elapsed="0.000053"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.605730" elapsed="0.000565"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.606648" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.606581" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.606698" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.606829" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.606347" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.607267" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.607192" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.607321" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.607454" elapsed="0.000053"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.606956" elapsed="0.000575"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.607871" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.607802" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.607923" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.608046" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.607579" elapsed="0.000541"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.608533" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.608462" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.608583" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.608704" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.608173" elapsed="0.000604"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.609125" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.609055" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.609180" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.609313" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.608825" elapsed="0.000568"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.609737" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.609667" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.609788" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.609898" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.609446" elapsed="0.000524"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.603330" elapsed="0.006659"/>
</kw>
<var name="${ticker}">{'t': 1779971242942, 's': 'cookie_usdt', 'c': '0.0115', 'h': '0.0128', 'l': '0.0113', 'a': '2377610', 'v': '287119', 'o': '0.0125', 'r': '-0.0800'}</var>
<status status="PASS" start="2026-05-28T20:27:25.603266" elapsed="0.006733"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610206" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610304" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610402" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610499" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610599" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610691" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610780" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610868" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.610964" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.611302" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.611422" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.611599" level="INFO">${timestamp_str} = 1779971243819</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.611531" elapsed="0.000077"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.611691" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.611723" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.611649" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.611775" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.611066" elapsed="0.000826"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.612163" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.612292" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.612248" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.612345" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.611943" elapsed="0.000474"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.612821" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.612697" elapsed="0.000135"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.612875" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.613006" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.612464" elapsed="0.000615"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.613427" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.613351" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.613482" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.613604" elapsed="0.000054"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.613127" elapsed="0.000558"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.614053" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.613984" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.614103" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.614228" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.613737" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.614662" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.614593" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.614711" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.614840" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.614360" elapsed="0.000562"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.615273" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.615199" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.615328" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.615461" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.614971" elapsed="0.000565"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.615880" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.615812" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.615929" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.616051" elapsed="0.000048"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.615585" elapsed="0.000539"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.616486" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.616412" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.616536" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.616645" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.616177" elapsed="0.000544"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.610096" elapsed="0.006646"/>
</kw>
<var name="${ticker}">{'t': 1779971243819, 's': 'jup_usdt', 'c': '0.1761', 'h': '0.1978', 'l': '0.1755', 'a': '600762', 'v': '1121890', 'o': '0.1934', 'r': '-0.0894'}</var>
<status status="PASS" start="2026-05-28T20:27:25.610031" elapsed="0.006723"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.616966" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.617056" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.617144" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.617232" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.617321" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.617410" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.617499" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.617587" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.617681" elapsed="0.000106"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.618074" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.618183" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.618351" level="INFO">${timestamp_str} = 1779971244759</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.618287" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.618442" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.618470" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.618400" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.618529" elapsed="0.000088"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.617844" elapsed="0.000797"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.618934" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.619068" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.619026" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.619123" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.618692" elapsed="0.000503"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.619559" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.619490" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.619610" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.619735" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.619246" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.620175" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.620105" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.620225" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.620348" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.619868" elapsed="0.000553"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.620779" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.620704" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.620833" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.620966" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.620469" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.621400" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.621325" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.621454" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.621577" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.621088" elapsed="0.000562"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.622006" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.621934" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.622056" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.622178" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.621698" elapsed="0.000559"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.622664" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.622550" elapsed="0.000124"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.622716" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.622860" elapsed="0.000060"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.622309" elapsed="0.000636"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.623282" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.623214" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.623331" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.623440" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.622996" elapsed="0.000518"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.616857" elapsed="0.006676"/>
</kw>
<var name="${ticker}">{'t': 1779971244759, 's': 'turbo_usdt', 'c': '0.0010162', 'h': '0.0011198', 'l': '0.0010037', 'a': '497688', 'v': '5273246', 'o': '0.0011067', 'r': '-0.0817'}</var>
<status status="PASS" start="2026-05-28T20:27:25.616788" elapsed="0.006756"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.623750" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.623849" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.623946" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.624038" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.624127" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.624216" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.624304" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.624393" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.624481" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.624819" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.624939" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.625111" level="INFO">${timestamp_str} = 1779971242591</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.625046" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.625203" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.625231" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.625160" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.625279" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.624584" elapsed="0.000803"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.625656" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.625797" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.625749" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.625855" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.625434" elapsed="0.000498"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.626276" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.626206" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.626325" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.626446" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.625984" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.626954" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.626824" elapsed="0.000142"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.627007" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.627129" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.626580" elapsed="0.000624"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.627555" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.627487" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.627606" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.627740" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.627252" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.628177" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.628109" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.628227" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.628349" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.627873" elapsed="0.000549"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.628779" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.628703" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.628834" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.628967" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.628470" elapsed="0.000574"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.629389" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.629320" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.629438" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.629559" elapsed="0.000053"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.629093" elapsed="0.000545"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.630001" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.629928" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.630051" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.630160" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.629691" elapsed="0.000546"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.623641" elapsed="0.006616"/>
</kw>
<var name="${ticker}">{'t': 1779971242591, 's': 'ldo_usdt', 'c': '0.3128', 'h': '0.3456', 'l': '0.3118', 'a': '2385772', 'v': '784566', 'o': '0.3425', 'r': '-0.0867'}</var>
<status status="PASS" start="2026-05-28T20:27:25.623575" elapsed="0.006695"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.630492" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.630583" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.630673" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.630761" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.630850" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.630943" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.631031" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.631121" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.631223" elapsed="0.000053"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.631564" elapsed="0.000306"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.631913" elapsed="0.000070"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.632089" level="INFO">${timestamp_str} = 1779971243317</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.632024" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.632185" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.632214" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.632143" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.632266" elapsed="0.000093"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.631336" elapsed="0.001053"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.632663" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.632793" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.632749" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.632847" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.632443" elapsed="0.000476"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.633278" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.633201" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.633332" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.633465" elapsed="0.000052"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.632966" elapsed="0.000575"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.633902" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.633825" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.633956" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.634080" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.633589" elapsed="0.000565"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.634515" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.634444" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.634566" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.634690" elapsed="0.000052"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.634202" elapsed="0.000576"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.635143" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.635074" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.635193" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.635325" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.634832" elapsed="0.000575"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.635768" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.635689" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.635818" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.635948" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.635461" elapsed="0.000560"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.636396" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.636320" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.636451" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.636576" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.636069" elapsed="0.000581"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.637050" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.636927" elapsed="0.000133"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.637100" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.637211" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.636699" elapsed="0.000593"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.630383" elapsed="0.006929"/>
</kw>
<var name="${ticker}">{'t': 1779971243317, 's': 'jto_usdt', 'c': '0.4721', 'h': '0.5929', 'l': '0.4695', 'a': '1215281', 'v': '643655', 'o': '0.5259', 'r': '-0.1023'}</var>
<status status="PASS" start="2026-05-28T20:27:25.630313" elapsed="0.007011"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.637535" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.637626" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.637717" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.637814" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.637912" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.638007" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.638096" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.638185" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.638279" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.638601" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.638732" elapsed="0.000071"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.638925" level="INFO">${timestamp_str} = 1779971243951</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.638849" elapsed="0.000087"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.639023" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.639051" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.638979" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.639098" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.638381" elapsed="0.000827"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.639484" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.639615" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.639572" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.639675" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.639255" elapsed="0.000496"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.640112" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.640042" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.640162" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.640291" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.639802" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.640723" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.640655" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.640773" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.640894" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.640425" elapsed="0.000543"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.641384" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.641307" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.641440" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.641568" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.641016" elapsed="0.000627"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.642013" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.641943" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.642063" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.642186" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.641691" elapsed="0.000575"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.642631" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.642563" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.642681" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.642817" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.642320" elapsed="0.000600"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.643274" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.643206" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.643325" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.643450" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.642978" elapsed="0.000550"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.643898" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.643818" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.643953" elapsed="0.000071"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.644068" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.643576" elapsed="0.000565"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.637430" elapsed="0.006730"/>
</kw>
<var name="${ticker}">{'t': 1779971243951, 's': 'act_usdt', 'c': '0.01152', 'h': '0.01293', 'l': '0.01143', 'a': '2369193', 'v': '289199', 'o': '0.01267', 'r': '-0.0907'}</var>
<status status="PASS" start="2026-05-28T20:27:25.637358" elapsed="0.006813"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.644367" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.644459" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.644552" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.644650" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.644750" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.644847" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.644945" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.645044" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.645134" elapsed="0.000059"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.645486" elapsed="0.000070"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.645597" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.645778" level="INFO">${timestamp_str} = 1779971242864</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.645709" elapsed="0.000080"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.645878" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.645909" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.645832" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.645962" elapsed="0.000139"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.645255" elapsed="0.000868"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.646395" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.646532" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.646490" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.646588" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.646171" elapsed="0.000489"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.647714" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.646965" elapsed="0.000760"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.647769" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.647902" elapsed="0.000052"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.646708" elapsed="0.001271"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.648334" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.648262" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.648385" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.648509" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.648028" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.648931" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.648860" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.648980" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.649102" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.648633" elapsed="0.000543"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.649519" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.649449" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.649569" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.649695" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.649224" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.650111" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.650041" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.650160" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.650282" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.649816" elapsed="0.000540"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.650698" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.650627" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.650747" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.650868" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.650405" elapsed="0.000537"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.651276" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.651206" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.651325" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.651435" elapsed="0.000103"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.650990" elapsed="0.000583"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.644266" elapsed="0.007325"/>
</kw>
<var name="${ticker}">{'t': 1779971242864, 's': 'xmr_usdt', 'c': '369.43', 'h': '401.50', 'l': '366.97', 'a': '1194923', 'v': '4654412', 'o': '398.52', 'r': '-0.0729'}</var>
<status status="PASS" start="2026-05-28T20:27:25.644202" elapsed="0.007400"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.651800" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.651891" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.651980" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.652068" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.652157" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.652246" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.652336" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.652425" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.652512" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.652830" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.652939" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.653108" level="INFO">${timestamp_str} = 1779971241848</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.653043" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.653200" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.653229" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.653158" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.653277" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.652613" elapsed="0.000774"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.653654" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.653786" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.653744" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.653841" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.653435" elapsed="0.000477"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.654260" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.654189" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.654310" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.654432" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.653965" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.654848" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.654778" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.654896" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.655016" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.654555" elapsed="0.000534"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.655482" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.655410" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.655532" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.655653" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.655146" elapsed="0.000580"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.656068" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.655998" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.656118" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.656241" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.655775" elapsed="0.000539"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.656663" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.656593" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.656713" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.656836" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.656363" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.657250" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.657180" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.657300" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.657421" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.656958" elapsed="0.000537"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.657831" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.657761" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.657880" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.657991" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.657544" elapsed="0.000521"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.651699" elapsed="0.006385"/>
</kw>
<var name="${ticker}">{'t': 1779971241848, 's': 'rune_usdt', 'c': '0.410', 'h': '0.443', 'l': '0.401', 'a': '3001437', 'v': '1266138', 'o': '0.437', 'r': '-0.0617'}</var>
<status status="PASS" start="2026-05-28T20:27:25.651634" elapsed="0.006460"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.658290" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.658379" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.658472" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.658562" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.658651" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.658738" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.658826" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.658927" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.659020" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.659341" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.659467" elapsed="0.000066"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.659641" level="INFO">${timestamp_str} = 1779971243400</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.659576" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.659779" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.659809" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.659692" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.659858" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.659121" elapsed="0.000844"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.660229" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.660361" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.660317" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.660415" elapsed="0.000053"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.660013" elapsed="0.000479"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.660835" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.660765" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.660884" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.661007" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.660539" elapsed="0.000542"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.661444" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.661367" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.661497" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.661619" elapsed="0.000060"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.661128" elapsed="0.000574"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.662043" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.661974" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.662093" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.662217" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.661750" elapsed="0.000547"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.662652" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.662583" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.662701" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.662821" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.662349" elapsed="0.000545"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.663245" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.663174" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.663294" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.663416" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.662950" elapsed="0.000539"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.663845" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.663770" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.663899" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.664030" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.663537" elapsed="0.000566"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.664434" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.664366" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.664483" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.664592" elapsed="0.000099"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.664150" elapsed="0.000566"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.658189" elapsed="0.006545"/>
</kw>
<var name="${ticker}">{'t': 1779971243400, 's': 'link_usdt', 'c': '8.813', 'h': '9.480', 'l': '8.770', 'a': '1791528', 'v': '1632259', 'o': '9.429', 'r': '-0.0653'}</var>
<status status="PASS" start="2026-05-28T20:27:25.658125" elapsed="0.006619"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.664939" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.665034" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.665124" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.665212" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.665309" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.665404" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.665499" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.665588" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.665679" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.666000" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.666110" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.666287" level="INFO">${timestamp_str} = 1779971242591</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.666217" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.666389" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.666420" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.666342" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.666473" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.665781" elapsed="0.000802"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.666847" elapsed="0.000061"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.666990" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.666948" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.667045" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.666631" elapsed="0.000486"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.667471" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.667396" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.667523" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.667644" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.667164" elapsed="0.000555"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.668080" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.668002" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.668130" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.668250" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.667767" elapsed="0.000556"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.668713" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.668642" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.668764" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.668893" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.668372" elapsed="0.000595"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.669331" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.669253" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.669386" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.669520" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.669018" elapsed="0.000577"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.669943" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.669874" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.669993" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.670118" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.669649" elapsed="0.000542"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.670544" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.670473" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.670594" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.670715" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.670239" elapsed="0.000556"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.671139" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.671068" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.671189" elapsed="0.000071"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.671310" elapsed="0.000052"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.670845" elapsed="0.000543"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.664839" elapsed="0.006569"/>
</kw>
<var name="${ticker}">{'t': 1779971242591, 's': 'xlm_usdt', 'c': '0.18206', 'h': '0.18251', 'l': '0.14831', 'a': '12070892', 'v': '2011057', 'o': '0.14959', 'r': '0.2170'}</var>
<status status="PASS" start="2026-05-28T20:27:25.664776" elapsed="0.006644"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.671626" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.671717" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.671806" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.671894" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.671981" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.672068" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.672157" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.672244" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.672331" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.672653" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.672770" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.672957" level="INFO">${timestamp_str} = 1779971241220</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.672886" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.673096" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.673125" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.673008" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.673174" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.672434" elapsed="0.000848"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.673545" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.673677" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.673634" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.673735" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.673330" elapsed="0.000482"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.674165" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.674097" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.674215" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.674339" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.673863" elapsed="0.000549"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.674761" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.674685" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.674825" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.674963" elapsed="0.000053"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.674460" elapsed="0.000580"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.675380" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.675310" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.675429" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.675552" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.675088" elapsed="0.000537"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.675978" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.675902" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.676031" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.676152" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.675672" elapsed="0.000553"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.676574" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.676505" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.676623" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.676744" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.676273" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.677163" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.677094" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.677214" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.677346" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.676865" elapsed="0.000561"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.677768" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.677698" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.677816" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.677925" elapsed="0.000096"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.677479" elapsed="0.000567"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.671523" elapsed="0.006542"/>
</kw>
<var name="${ticker}">{'t': 1779971241220, 's': 'hbar_usdt', 'c': '0.08346', 'h': '0.08657', 'l': '0.08182', 'a': '2389010', 'v': '2025825', 'o': '0.08637', 'r': '-0.0336'}</var>
<status status="PASS" start="2026-05-28T20:27:25.671456" elapsed="0.006619"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.678282" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.678381" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.678479" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.678576" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.678665" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.678754" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.678843" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.678932" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.679022" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.679358" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.679478" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.679648" level="INFO">${timestamp_str} = 1779971242395</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.679585" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.679739" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.679767" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.679698" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.679815" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.679123" elapsed="0.000799"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.680186" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.680315" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.680273" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.680369" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.679969" elapsed="0.000472"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.680791" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.680715" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.680844" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.680976" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.680488" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.681389" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.681319" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.681438" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.681558" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.681098" elapsed="0.000538"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.682040" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.681968" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.682089" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.682210" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.681684" elapsed="0.000599"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.682625" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.682553" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.682686" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.682817" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.682331" elapsed="0.000567"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.683246" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.683176" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.683295" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.683418" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.682950" elapsed="0.000542"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.683850" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.683773" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.683903" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.684030" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.683540" elapsed="0.000565"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.684433" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.684365" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.684484" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.684593" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.684152" elapsed="0.000513"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.678170" elapsed="0.006514"/>
</kw>
<var name="${ticker}">{'t': 1779971242395, 's': 'bera_usdt', 'c': '0.337', 'h': '0.378', 'l': '0.336', 'a': '575609', 'v': '203725', 'o': '0.369', 'r': '-0.0867'}</var>
<status status="PASS" start="2026-05-28T20:27:25.678107" elapsed="0.006589"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.684909" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685006" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685096" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685185" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685274" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685361" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685452" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685541" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685634" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.685974" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.686083" elapsed="0.000061"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.686249" level="INFO">${timestamp_str} = 1779971242894</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.686185" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.686598" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.686628" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.686309" elapsed="0.000328"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.686680" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.685739" elapsed="0.001050"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.687059" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.687192" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.687147" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.687251" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.686836" elapsed="0.000494"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.687683" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.687614" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.687733" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.687853" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.687381" elapsed="0.000547"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.688280" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.688204" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.688334" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.688471" elapsed="0.000052"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.687976" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.688889" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.688818" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.688939" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.689061" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.688595" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.689501" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.689426" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.689550" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.689681" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.689184" elapsed="0.000570"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.690094" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.690024" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.690143" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.690273" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.689802" elapsed="0.000551"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.690702" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.690632" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.690761" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.690882" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.690405" elapsed="0.000552"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.691306" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.691229" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.691361" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.691484" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.691005" elapsed="0.000553"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.684799" elapsed="0.006777"/>
</kw>
<var name="${ticker}">{'t': 1779971242894, 's': 'vvv_usdt', 'c': '15.501', 'h': '17.921', 'l': '14.812', 'a': '1785909', 'v': '29407040', 'o': '17.388', 'r': '-0.1085'}</var>
<status status="PASS" start="2026-05-28T20:27:25.684730" elapsed="0.006857"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.691834" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.691925" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.692015" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.692105" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.692194" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.692283" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.692371" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.692461" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.692554" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.692890" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.693006" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.693174" level="INFO">${timestamp_str} = 1779971244372</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.693110" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.693266" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.693294" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.693224" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.693342" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.692655" elapsed="0.000794"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.693720" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.693862" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.693816" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.693921" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.693497" elapsed="0.000500"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.694335" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.694265" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.694384" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.694516" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.694044" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.694960" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.694883" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.695011" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.695134" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.694643" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.695554" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.695483" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.695603" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.695729" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.695257" elapsed="0.000554"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.696221" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.696104" elapsed="0.000127"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.696271" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.696396" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.695869" elapsed="0.000600"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.696814" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.696743" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.696863" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.696986" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.696517" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.697426" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.697349" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.697479" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.697602" elapsed="0.000053"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.697111" elapsed="0.000567"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.698010" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.697940" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.698059" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.698169" elapsed="0.000052"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.697726" elapsed="0.000522"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.691683" elapsed="0.006585"/>
</kw>
<var name="${ticker}">{'t': 1779971244372, 's': 'ondo_usdt', 'c': '0.3553', 'h': '0.4074', 'l': '0.3513', 'a': '1204324', 'v': '4571750', 'o': '0.4057', 'r': '-0.1242'}</var>
<status status="PASS" start="2026-05-28T20:27:25.691618" elapsed="0.006674"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.698506" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.698598" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.698687" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.698776" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.698865" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.698955" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.699045" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.699134" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.699227" elapsed="0.000053"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.699565" elapsed="0.000066"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.699672" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.699842" level="INFO">${timestamp_str} = 1779971244703</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.699776" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.699934" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.699962" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.699891" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.700010" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.699338" elapsed="0.000779"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.700394" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.700531" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.700490" elapsed="0.000106"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.700635" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.700164" elapsed="0.000545"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.701052" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.700983" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.701102" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.701231" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.700756" elapsed="0.000556"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.701677" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.701602" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.701727" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.701848" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.701364" elapsed="0.000558"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.702274" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.702197" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.702328" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.702472" elapsed="0.000053"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.701970" elapsed="0.000579"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.702894" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.702824" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.702945" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.703067" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.702600" elapsed="0.000541"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.703508" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.703435" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.703559" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.703680" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.703189" elapsed="0.000565"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.704094" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.704024" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.704143" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.704273" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.703801" elapsed="0.000551"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.704696" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.704627" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.704745" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.704854" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.704405" elapsed="0.000522"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.698397" elapsed="0.006548"/>
</kw>
<var name="${ticker}">{'t': 1779971244703, 's': 'atom_usdt', 'c': '2.012', 'h': '2.225', 'l': '2.009', 'a': '1190477', 'v': '2523728', 'o': '2.219', 'r': '-0.0932'}</var>
<status status="PASS" start="2026-05-28T20:27:25.698327" elapsed="0.006629"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705149" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705245" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705340" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705435" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705527" elapsed="0.000098"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705675" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705766" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705854" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.705942" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.706283" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.706403" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.706579" level="INFO">${timestamp_str} = 1779971244837</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.706514" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.706672" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.706699" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.706630" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.706747" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.706056" elapsed="0.000799"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.707119" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.707251" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.707208" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.707306" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.706903" elapsed="0.000476"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.707726" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.707651" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.707781" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.707914" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.707427" elapsed="0.000567"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.708337" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.708267" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.708386" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.708507" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.708043" elapsed="0.000538"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.708942" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.708868" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.708996" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.709116" elapsed="0.000048"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.708628" elapsed="0.000560"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.709527" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.709458" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.709576" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.709698" elapsed="0.000053"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.709237" elapsed="0.000539"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.710178" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.710062" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.710227" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.710357" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.709829" elapsed="0.000601"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.710780" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.710702" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.710833" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.710966" elapsed="0.000052"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.710477" elapsed="0.000565"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.711376" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.711305" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.711426" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.711535" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.711089" elapsed="0.000518"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.705050" elapsed="0.006576"/>
</kw>
<var name="${ticker}">{'t': 1779971244837, 's': 'ada_usdt', 'c': '0.2293', 'h': '0.2433', 'l': '0.2278', 'a': '11969532', 'v': '28207541', 'o': '0.2403', 'r': '-0.0457'}</var>
<status status="PASS" start="2026-05-28T20:27:25.704987" elapsed="0.006650"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.711845" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.711945" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.712039" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.712127" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.712217" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.712307" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.712396" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.712485" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.712574" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.712914" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.713028" elapsed="0.000060"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.713206" level="INFO">${timestamp_str} = 1779971244638</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.713130" elapsed="0.000088"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.713299" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.713327" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.713258" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.713375" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.712676" elapsed="0.000806"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.713751" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.713892" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.713845" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.713950" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.713529" elapsed="0.000505"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.714419" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.714305" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.714470" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.714595" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.714082" elapsed="0.000587"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.715037" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.714965" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.715086" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.715208" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.714720" elapsed="0.000560"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.715620" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.715550" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.715669" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.715800" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.715329" elapsed="0.000552"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.716228" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.716160" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.716278" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.716398" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.715933" elapsed="0.000539"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.716823" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.716747" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.716877" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.717008" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.716520" elapsed="0.000561"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.717419" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.717349" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.717468" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.717589" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.717128" elapsed="0.000536"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.718020" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.717947" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.718068" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.718188" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.717713" elapsed="0.000549"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.711736" elapsed="0.006545"/>
</kw>
<var name="${ticker}">{'t': 1779971244638, 's': 'avax_usdt', 'c': '8.774', 'h': '9.288', 'l': '8.709', 'a': '1193547', 'v': '1074685', 'o': '9.196', 'r': '-0.0458'}</var>
<status status="PASS" start="2026-05-28T20:27:25.711668" elapsed="0.006624"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.718485" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.718576" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.718666" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.718762" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.718861" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.718958" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.719049" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.719139" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.719227" elapsed="0.000096"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.719591" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.719701" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.719885" level="INFO">${timestamp_str} = 1779971244429</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.719815" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.719983" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.720011" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.719938" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.720057" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.719377" elapsed="0.000788"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.720428" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.720558" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.720515" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.720613" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.720213" elapsed="0.000472"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.721049" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.720977" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.721098" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.721220" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.720736" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.721630" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.721560" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.721682" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.721811" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.721341" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.722252" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.722182" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.722301" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.722422" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.721955" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.722853" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.722776" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.722906" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.723033" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.722544" elapsed="0.000562"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.723446" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.723376" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.723495" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.723615" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.723155" elapsed="0.000534"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.724098" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.723984" elapsed="0.000124"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.724148" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.724270" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.723742" elapsed="0.000602"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.724679" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.724609" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.724733" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.724852" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.724393" elapsed="0.000540"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.718386" elapsed="0.006568"/>
</kw>
<var name="${ticker}">{'t': 1779971244429, 's': 'aave_usdt', 'c': '80.20', 'h': '87.00', 'l': '79.90', 'a': '1197912', 'v': '9940509', 'o': '85.60', 'r': '-0.0630'}</var>
<status status="PASS" start="2026-05-28T20:27:25.718323" elapsed="0.006643"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725161" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725254" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725344" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725432" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725521" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725620" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725714" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725812" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.725910" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.726234" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.726343" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.726513" level="INFO">${timestamp_str} = 1779971244643</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.726448" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.726604" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.726632" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.726563" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.726680" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.726020" elapsed="0.000777"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.727075" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.727204" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.727162" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.727258" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.726849" elapsed="0.000480"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.727665" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.727595" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.727718" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.727850" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.727376" elapsed="0.000555"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.728320" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.728205" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.728370" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.728492" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.727982" elapsed="0.000584"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.728925" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.728849" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.728979" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.729102" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.728613" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.729517" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.729446" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.729567" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.729690" elapsed="0.000053"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.729224" elapsed="0.000555"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.730139" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.730070" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.730189" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.730310" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.729832" elapsed="0.000553"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.730731" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.730654" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.730786" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.730919" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.730432" elapsed="0.000566"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.731329" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.731260" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.731378" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.731487" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.731045" elapsed="0.000516"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.725062" elapsed="0.006517"/>
</kw>
<var name="${ticker}">{'t': 1779971244643, 's': 'crv_usdt', 'c': '0.2100', 'h': '0.2231', 'l': '0.2072', 'a': '11971169', 'v': '2570509', 'o': '0.2187', 'r': '-0.0397'}</var>
<status status="PASS" start="2026-05-28T20:27:25.724999" elapsed="0.006591"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.731792" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.731891" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.731988" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.732077" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.732165" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.732254" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.732341" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.732429" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.732516" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.732848" elapsed="0.000130"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.733020" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.733189" level="INFO">${timestamp_str} = 1779971243428</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.733124" elapsed="0.000077"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.733296" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.733324" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.733252" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.733379" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.732618" elapsed="0.000884"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.733767" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.733898" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.733856" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.733953" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.733550" elapsed="0.000476"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.734387" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.734311" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.734443" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.734577" elapsed="0.000067"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.734073" elapsed="0.000605"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.735036" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.734964" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.735086" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.735211" elapsed="0.000063"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.734727" elapsed="0.000570"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.735703" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.735626" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.735767" elapsed="0.000098"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.735918" elapsed="0.000067"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.735346" elapsed="0.000663"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.736350" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.736280" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.736399" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.736520" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.736057" elapsed="0.000537"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.736960" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.736883" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.737012" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.737133" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.736641" elapsed="0.000564"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.737545" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.737475" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.737594" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.737717" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.737253" elapsed="0.000558"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.738210" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.738093" elapsed="0.000127"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.738260" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.738370" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.737864" elapsed="0.000579"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.731684" elapsed="0.006778"/>
</kw>
<var name="${ticker}">{'t': 1779971243428, 's': 'inj_usdt', 'c': '5.325', 'h': '5.844', 'l': '5.302', 'a': '1196133', 'v': '6593072', 'o': '5.817', 'r': '-0.0845'}</var>
<status status="PASS" start="2026-05-28T20:27:25.731621" elapsed="0.006853"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.738671" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.738772" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.738870" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.738966" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.739058" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.739147" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.739236" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.739325" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.739412" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.739733" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.739854" elapsed="0.000071"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.740037" level="INFO">${timestamp_str} = 1779971242150</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.739970" elapsed="0.000077"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.740129" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.740158" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.740088" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.740205" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.739513" elapsed="0.000800"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.740575" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.740707" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.740663" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.740768" elapsed="0.000056"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.740362" elapsed="0.000485"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.741196" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.741128" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.741245" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.741393" elapsed="0.000060"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.740899" elapsed="0.000581"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.741894" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.741821" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.741943" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.742063" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.741554" elapsed="0.000583"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.742798" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.742729" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.742849" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.742970" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.742185" elapsed="0.000859"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.743400" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.743330" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.743449" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.743571" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.743092" elapsed="0.000553"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.744015" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.743940" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.744065" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.744187" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.743694" elapsed="0.000567"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.744601" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.744530" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.744652" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.744782" elapsed="0.000059"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.744308" elapsed="0.000560"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.745250" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.745170" elapsed="0.000092"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.745307" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.745433" elapsed="0.000055"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.744922" elapsed="0.000593"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.738571" elapsed="0.006968"/>
</kw>
<var name="${ticker}">{'t': 1779971242150, 's': 'paxg_usdt', 'c': '4386.66', 'h': '4464.37', 'l': '4371.65', 'a': '138751', 'v': '613404', 'o': '4457.77', 'r': '-0.0159'}</var>
<status status="PASS" start="2026-05-28T20:27:25.738507" elapsed="0.007047"/>
</iter>
<var>${ticker}</var>
<value>@{tickers_list}</value>
<status status="PASS" start="2026-05-28T20:27:25.370660" elapsed="0.374911"/>
</for>
<doc>验证期货U本位Tickers接口功能（仅预测交易对）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:25.237665" elapsed="0.507977"/>
</test>
<test id="s1-s2-s2-s7-t3" name="获取期货U本位Tickers数据_仅交割" line="51">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.747053" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:25.746754" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:25.747356" elapsed="0.000009"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:25.747129" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:25.747117" elapsed="0.000277"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:25.747410" elapsed="0.000017"/>
</return>
<msg time="2026-05-28T20:27:25.747504" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:25.746427" elapsed="0.001089"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:25.877906" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/future-u/market/public/q/tickers?isPredict=false&amp;isDelivery=true 
 path_url=/v1/future-u/market/public/q/tickers?isPredict=false&amp;isDelivery=true 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:25.878051" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/future-u/market/public/q/tickers?isPredict=false&amp;isDelivery=true 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:25 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-RateLimit-Remaining': '9998', 'X-RateLimit-Requested-Tokens': '1', 'X-RateLimit-Burst-Capacity': '10000', 'X-RateLimit-Replenish-Rate': '10000', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '3cfe103b14fd5e13bee131c259fc093b', 'X-Transparent': '00-3cfe103b14fd5e13bee131c259fc093b-317aac04d6564f93-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40de8ab2ae17-NRT'} 
 body={"code":0,"msg":"success","msgInfo":null,"data":[{"t":1779971241450,"s":"btc_usdt","c":"73282.6","h":"75959.9","l":"72689.3","a":"789157","v":"5865055","o":"75852.3","r":"-0.0338"},{"t":1779971243321,"s":"eth_usdt","c":"1982.68","h":"2086.99","l":"1966.37","a":"128179","v":"2592264","o":"2082.43","r":"-0.0479"},{"t":1779971242001,"s":"sol_usdt","c":"80.62","h":"84.78","l":"80.01","a":"253650","v":"2088282","o":"84.20","r":"-0.0425"},{"t":1779971244285,"s":"xrp_usdt","c":"1.2841","h":"1.3425","l":"1.2669","a":"1255262","v":"1639910","o":"1.3346","r":"-0.0378"},{"t":1779971243427,"s":"bnb_usdt","c":"631.06","h":"660.33","l":"630.65","a":"358250","v":"2312187","o":"656.39","r":"-0.0385"},{"t":1779971244639,"s":"trb_usdt","c":"16.129","h":"17.598","l":"16.030","a":"1194852","v":"2008788","o":"17.354","r":"-0.0705"},{"t":1779971244641,"s":"ordi_usdt","c":"3.400","h":"4.159","l":"3.375","a":"611711","v":"2323764","o":"4.032","r":"-0.1567"},{"t":1779971244362,"s":"1000shib_usdt","c":"0.005264","h":"0.005553","l":"0.005238","a":"4087527","v":"2210503","o":"0.005528","r":"-0.0477"},{"t":1779971242141,"s":"doge_usdt","c":"0.09748","h":"0.10331","l":"0.09705","a":"6971317","v":"6976452","o":"0.10196","r":"-0.0439"},{"t":1779971244288,"s":"trx_usdt","c":"0.34929","h":"0.37419","l":"0.34789","a":"122290","v":"4472524","o":"0.37399","r":"-0.0660"},{"t":1779971244136,"s":"dogs_usdt","c":"0.0000464","h":"0.0000522","l":"0.0000461","a":"39462754","v":"1947650","o":"0.0000511","r":"-0.0919"},{"t":1779971244841,"s":"sui_usdt","c":"0.9092","h":"1.0124","l":"0.9066","a":"1212228","v":"1158234","o":"1.0088","r":"-0.0987"},{"t":1779971242920,"s":"grass_usdt","c":"0.4882","h":"0.5340","l":"0.4762","a":"2409891","v":"1196686","o":"0.5093","r":"-0.0414"},{"t":1779971243472,"s":"ban_usdt","c":"0.0783","h":"0.0944","l":"0.0777","a":"2390539","v":"2059138","o":"0.0942","r":"-0.1687"},{"t":1779971242347,"s":"people_usdt","c":"0.00611","h":"0.00667","l":"0.00601","a":"9608910","v":"610034","o":"0.00660","r":"-0.0742"},{"t":1779971242725,"s":"ton_usdt","c":"1.7617","h":"1.9162","l":"1.7592","a":"1197294","v":"2201524","o":"1.8969","r":"-0.0712"},{"t":1779971241345,"s":"aixbt_usdt","c":"0.02653","h":"0.03109","l":"0.02635","a":"1800793","v":"512942","o":"0.03091","r":"-0.1417"},{"t":1779971244841,"s":"melania_usdt","c":"0.086","h":"0.092","l":"0.085","a":"3599632","v":"318809","o":"0.090","r":"-0.0444"},{"t":1779971244002,"s":"dot_usdt","c":"1.183","h":"1.278","l":"1.175","a":"942452","v":"1154592","o":"1.266","r":"-0.0655"},{"t":1779971244031,"s":"uni_usdt","c":"3.005","h":"3.318","l":"2.989","a":"598225","v":"1881141","o":"3.289","r":"-0.0863"},{"t":1779971244048,"s":"pol_usdt","c":"0.08701","h":"0.09179","l":"0.08635","a":"1194109","v":"1065970","o":"0.09175","r":"-0.0516"},{"t":1779971242991,"s":"arb_usdt","c":"0.1016","h":"0.1111","l":"0.1011","a":"5018605","v":"531905","o":"0.1099","r":"-0.0755"},{"t":1779971243722,"s":"fil_usdt","c":"0.943","h":"1.099","l":"0.938","a":"12133077","v":"1237613","o":"1.065","r":"-0.1145"},{"t":1779971243553,"s":"op_usdt","c":"0.1159","h":"0.1304","l":"0.1155","a":"2098414","v":"257050","o":"0.1281","r":"-0.0952"},{"t":1779971243577,"s":"dydx_usdt","c":"0.145","h":"0.172","l":"0.144","a":"3594237","v":"575333","o":"0.169","r":"-0.1420"},{"t":1779971244845,"s":"pengu_usdt","c":"0.007792","h":"0.008541","l":"0.007758","a":"3886164","v":"3172091","o":"0.008502","r":"-0.0835"},{"t":1779971245238,"s":"wif_usdt","c":"0.1755","h":"0.1964","l":"0.1746","a":"539763","v":"1002651","o":"0.1950","r":"-0.1000"},{"t":1779971243666,"s":"trump_usdt","c":"1.852","h":"2.031","l":"1.849","a":"1075580","v":"2087663","o":"2.013","r":"-0.0799"},{"t":1779971242746,"s":"not_usdt","c":"0.000427","h":"0.000470","l":"0.000421","a":"9126206","v":"405414","o":"0.000454","r":"-0.0594"},{"t":1779971243448,"s":"spell_usdt","c":"0.0001464","h":"0.0001542","l":"0.0001453","a":"53416218","v":"804629","o":"0.0001531","r":"-0.0437"},{"t":1779971244749,"s":"wld_usdt","c":"0.2927","h":"0.3708","l":"0.2910","a":"2449879","v":"813899","o":"0.3641","r":"-0.1960"},{"t":1779971242942,"s":"cookie_usdt","c":"0.0115","h":"0.0128","l":"0.0113","a":"2377610","v":"287119","o":"0.0125","r":"-0.0800"},{"t":1779971243819,"s":"jup_usdt","c":"0.1761","h":"0.1978","l":"0.1755","a":"600762","v":"1121890","o":"0.1934","r":"-0.0894"},{"t":1779971244759,"s":"turbo_usdt","c":"0.0010162","h":"0.0011198","l":"0.0010037","a":"497688","v":"5273246","o":"0.0011067","r":"-0.0817"},{"t":1779971242591,"s":"ldo_usdt","c":"0.3128","h":"0.3456","l":"0.3118","a":"2385772","v":"784566","o":"0.3425","r":"-0.0867"},{"t":1779971243317,"s":"jto_usdt","c":"0.4721","h":"0.5929","l":"0.4695","a":"1215281","v":"643655","o":"0.5259","r":"-0.1023"},{"t":1779971243951,"s":"act_usdt","c":"0.01152","h":"0.01293","l":"0.01143","a":"2369193","v":"289199","o":"0.01267","r":"-0.0907"},{"t":1779971242864,"s":"xmr_usdt","c":"369.43","h":"401.50","l":"366.97","a":"1194923","v":"4654412","o":"398.52","r":"-0.0729"},{"t":1779971243989,"s":"rune_usdt","c":"0.411","h":"0.443","l":"0.401","a":"3001512","v":"1266169","o":"0.437","r":"-0.0594"},{"t":1779971244959,"s":"link_usdt","c":"8.812","h":"9.480","l":"8.770","a":"1791577","v":"1632303","o":"9.429","r":"-0.0654"},{"t":1779971244708,"s":"xlm_usdt","c":"0.18211","h":"0.18251","l":"0.14831","a":"12071132","v":"2011100","o":"0.14959","r":"0.2173"},{"t":1779971241220,"s":"hbar_usdt","c":"0.08346","h":"0.08657","l":"0.08182","a":"2389010","v":"2025825","o":"0.08637","r":"-0.0336"},{"t":1779971242395,"s":"bera_usdt","c":"0.337","h":"0.378","l":"0.336","a":"575609","v":"203725","o":"0.369","r":"-0.0867"},{"t":1779971242894,"s":"vvv_usdt","c":"15.501","h":"17.921","l":"14.812","a":"1785909","v":"29407040","o":"17.388","r":"-0.1085"},{"t":1779971244372,"s":"ondo_usdt","c":"0.3553","h":"0.4074","l":"0.3513","a":"1204324","v":"4571750","o":"0.4057","r":"-0.1242"},{"t":1779971244703,"s":"atom_usdt","c":"2.012","h":"2.225","l":"2.009","a":"1190477","v":"2523728","o":"2.219","r":"-0.0932"},{"t":1779971244837,"s":"ada_usdt","c":"0.2293","h":"0.2433","l":"0.2278","a":"11969532","v":"28207541","o":"0.2403","r":"-0.0457"},{"t":1779971244638,"s":"avax_usdt","c":"8.774","h":"9.288","l":"8.709","a":"1193547","v":"1074685","o":"9.196","r":"-0.0458"},{"t":1779971244429,"s":"aave_usdt","c":"80.20","h":"87.00","l":"79.90","a":"1197912","v":"9940509","o":"85.60","r":"-0.0630"},{"t":1779971244643,"s":"crv_usdt","c":"0.2100","h":"0.2231","l":"0.2072","a":"11971169","v":"2570509","o":"0.2187","r":"-0.0397"},{"t":1779971244771,"s":"inj_usdt","c":"5.326","h":"5.844","l":"5.302","a":"1196164","v":"6593238","o":"5.817","r":"-0.0844"},{"t":1779971244429,"s":"paxg_usdt","c":"4386.65","h":"4464.37","l":"4371.65","a":"138754","v":"613417","o":"4457.77","r":"-0.0159"}],"ts":1779971245855} 
 </msg>
<msg time="2026-05-28T20:27:25.878180" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:25.878332" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:25.747746" elapsed="0.130612"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:25.878451" elapsed="0.000046"/>
</return>
<msg time="2026-05-28T20:27:25.878646" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/future-u/market/public/q/tickers</arg>
<arg>headers=${headers}</arg>
<arg>params=isPredict=false&amp;isDelivery=true</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:25.747579" elapsed="0.131092"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.879924" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:25.879198" elapsed="0.000788"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.880549" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:25.880105" elapsed="0.000469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.880811" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:25.880682" elapsed="0.000176"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:25.878876" elapsed="0.002037"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.881515" level="INFO">Length is 52.</msg>
<arg>${response.json()['data']}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.881012" elapsed="0.000554"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.882292" level="INFO">${tickers_list} = [{'t': 1779971241450, 's': 'btc_usdt', 'c': '73282.6', 'h': '75959.9', 'l': '72689.3', 'a': '789157', 'v': '5865055', 'o': '75852.3', 'r': '-0.0338'}, {'t': 1779971243321, 's': 'eth_usdt', 'c': '1982....</msg>
<var>${tickers_list}</var>
<arg>${response.json()['data']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:25.881669" elapsed="0.000650"/>
</kw>
<for flavor="IN">
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.882961" elapsed="0.000133"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.883197" elapsed="0.000126"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.883419" elapsed="0.000124"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.883641" elapsed="0.000123"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.883862" elapsed="0.000122"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.884081" elapsed="0.000122"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.884297" elapsed="0.000123"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.884517" elapsed="0.000123"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.884737" elapsed="0.000119"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.885547" elapsed="0.000194"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.885844" elapsed="0.000154"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.886229" level="INFO">${timestamp_str} = 1779971241450</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.886088" elapsed="0.000161"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.886432" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.886492" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.886334" elapsed="0.000177"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.886599" elapsed="0.000194"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.884992" elapsed="0.001850"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.887420" elapsed="0.000108"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.887702" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.887612" elapsed="0.000126"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.887820" elapsed="0.000107"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.886946" elapsed="0.001025"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.888717" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.888558" elapsed="0.000181"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.888825" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.889233" elapsed="0.000115"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.888073" elapsed="0.001329"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.890155" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.890003" elapsed="0.000174"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.890263" elapsed="0.000158"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.890506" elapsed="0.000097"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.889507" elapsed="0.001143"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.891301" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.891170" elapsed="0.000150"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.891396" elapsed="0.000149"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.891628" elapsed="0.000096"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.890743" elapsed="0.001041"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.892443" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.892309" elapsed="0.000153"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.892539" elapsed="0.000147"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.892771" elapsed="0.000095"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.891876" elapsed="0.001036"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.893572" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.893436" elapsed="0.000156"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.893667" elapsed="0.000151"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.893902" elapsed="0.000095"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.893003" elapsed="0.001039"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.894688" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.894556" elapsed="0.000151"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.894782" elapsed="0.000148"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.895011" elapsed="0.000095"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.894132" elapsed="0.001019"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.895782" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.895651" elapsed="0.000150"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.895876" elapsed="0.000126"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.896084" elapsed="0.000093"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.895242" elapsed="0.000980"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.882705" elapsed="0.013552"/>
</kw>
<var name="${ticker}">{'t': 1779971241450, 's': 'btc_usdt', 'c': '73282.6', 'h': '75959.9', 'l': '72689.3', 'a': '789157', 'v': '5865055', 'o': '75852.3', 'r': '-0.0338'}</var>
<status status="PASS" start="2026-05-28T20:27:25.882525" elapsed="0.013769"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.896672" elapsed="0.000097"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.896846" elapsed="0.000095"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.897016" elapsed="0.000096"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.897187" elapsed="0.000094"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.897355" elapsed="0.000096"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.897526" elapsed="0.000098"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.897699" elapsed="0.000100"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.897871" elapsed="0.000092"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.898039" elapsed="0.000187"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.898741" elapsed="0.000128"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.898942" elapsed="0.000107"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.899229" level="INFO">${timestamp_str} = 1779971243321</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.899119" elapsed="0.000127"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.899387" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.899434" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.899314" elapsed="0.000135"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.899514" elapsed="0.000153"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.898329" elapsed="0.001376"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.900157" elapsed="0.000084"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.900378" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.900307" elapsed="0.000099"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.900471" elapsed="0.000085"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.899786" elapsed="0.000807"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.901165" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.901048" elapsed="0.000134"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.901250" elapsed="0.000134"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.901460" elapsed="0.000085"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.900673" elapsed="0.000913"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.902173" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.902054" elapsed="0.000135"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.902255" elapsed="0.000132"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.902461" elapsed="0.000085"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.901668" elapsed="0.000918"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.903167" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.903048" elapsed="0.000135"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.903247" elapsed="0.000120"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.903453" elapsed="0.000078"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.902670" elapsed="0.000900"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.904099" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.903990" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.904176" elapsed="0.000122"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.904367" elapsed="0.000077"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.903644" elapsed="0.000837"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.905011" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.904903" elapsed="0.000124"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.905089" elapsed="0.000124"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.905281" elapsed="0.000078"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.904559" elapsed="0.000838"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.906014" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.905824" elapsed="0.000206"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.906091" elapsed="0.000122"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.906281" elapsed="0.000078"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.905470" elapsed="0.000926"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.906914" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.906804" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.906990" elapsed="0.000104"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.907161" elapsed="0.000077"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.906470" elapsed="0.000806"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.896482" elapsed="0.010822"/>
</kw>
<var name="${ticker}">{'t': 1779971243321, 's': 'eth_usdt', 'c': '1982.68', 'h': '2086.99', 'l': '1966.37', 'a': '128179', 'v': '2592264', 'o': '2082.43', 'r': '-0.0479'}</var>
<status status="PASS" start="2026-05-28T20:27:25.896359" elapsed="0.010962"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.907628" elapsed="0.000078"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.907769" elapsed="0.000078"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.907907" elapsed="0.000077"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.908045" elapsed="0.000076"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.908182" elapsed="0.000077"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.908321" elapsed="0.000077"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.908458" elapsed="0.000075"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.908596" elapsed="0.000075"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.908733" elapsed="0.000077"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.909249" elapsed="0.000108"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.909422" elapsed="0.000102"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.909688" level="INFO">${timestamp_str} = 1779971242001</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.909587" elapsed="0.000121"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.909839" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.909882" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.909772" elapsed="0.000124"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.909956" elapsed="0.000133"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.908908" elapsed="0.001216"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.910533" elapsed="0.000077"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.910735" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.910669" elapsed="0.000091"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.910822" elapsed="0.000078"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.910198" elapsed="0.000735"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.911457" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.911348" elapsed="0.000124"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.911534" elapsed="0.000123"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.911725" elapsed="0.000077"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.911006" elapsed="0.000832"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.912431" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.912259" elapsed="0.000187"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.912504" elapsed="0.000113"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.912680" elapsed="0.000073"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.911914" elapsed="0.000874"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.913283" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.913182" elapsed="0.000115"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.913353" elapsed="0.000113"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.913527" elapsed="0.000073"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.912859" elapsed="0.000775"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.914129" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.914028" elapsed="0.000115"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.914200" elapsed="0.000112"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.914374" elapsed="0.000072"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.913709" elapsed="0.000771"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.914971" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.914869" elapsed="0.000116"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.915040" elapsed="0.000130"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.915233" elapsed="0.000072"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.914549" elapsed="0.000791"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.915830" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.915731" elapsed="0.000113"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.915901" elapsed="0.000110"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.916075" elapsed="0.000072"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.915408" elapsed="0.000775"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.916654" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.916559" elapsed="0.000109"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.916721" elapsed="0.000097"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.916892" elapsed="0.000079"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.916263" elapsed="0.000741"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.907472" elapsed="0.009558"/>
</kw>
<var name="${ticker}">{'t': 1779971242001, 's': 'sol_usdt', 'c': '80.62', 'h': '84.78', 'l': '80.01', 'a': '253650', 'v': '2088282', 'o': '84.20', 'r': '-0.0425'}</var>
<status status="PASS" start="2026-05-28T20:27:25.907371" elapsed="0.009674"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.917327" elapsed="0.000068"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.917450" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.917569" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.917688" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.917811" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.917930" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.918050" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.918168" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.918287" elapsed="0.000065"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.918719" elapsed="0.000157"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.918931" elapsed="0.000087"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.919160" level="INFO">${timestamp_str} = 1779971244285</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.919073" elapsed="0.000100"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.919285" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.919322" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.919228" elapsed="0.000105"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.919385" elapsed="0.000117"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.918425" elapsed="0.001107"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.919888" elapsed="0.000067"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.920063" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.920006" elapsed="0.000079"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.920136" elapsed="0.000073"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.919596" elapsed="0.000657"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.920708" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.920618" elapsed="0.000102"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.920771" elapsed="0.000101"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.920928" elapsed="0.000064"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.920322" elapsed="0.000700"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.921459" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.921371" elapsed="0.000101"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.921522" elapsed="0.000102"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.921678" elapsed="0.000069"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.921084" elapsed="0.000694"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.922215" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.922124" elapsed="0.000103"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.922279" elapsed="0.000100"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.922435" elapsed="0.000064"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.921839" elapsed="0.000691"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.922966" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.922878" elapsed="0.000101"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.923029" elapsed="0.000099"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.923183" elapsed="0.000064"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.922591" elapsed="0.000686"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.923715" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.923625" elapsed="0.000102"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.923777" elapsed="0.000099"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.923931" elapsed="0.000064"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.923341" elapsed="0.000684"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.924459" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.924370" elapsed="0.000102"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.924523" elapsed="0.000100"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.924677" elapsed="0.000068"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.924086" elapsed="0.000688"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.925242" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.925101" elapsed="0.000154"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.925304" elapsed="0.000096"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.925452" elapsed="0.000061"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.924832" elapsed="0.000710"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.917190" elapsed="0.008375"/>
</kw>
<var name="${ticker}">{'t': 1779971244285, 's': 'xrp_usdt', 'c': '1.2841', 'h': '1.3425', 'l': '1.2669', 'a': '1255262', 'v': '1639910', 'o': '1.3346', 'r': '-0.0378'}</var>
<status status="PASS" start="2026-05-28T20:27:25.917096" elapsed="0.008483"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.925827" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.925938" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.926048" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.926157" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.926266" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.926375" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.926482" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.926589" elapsed="0.000062"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.926700" elapsed="0.000062"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.927096" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.927230" elapsed="0.000077"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.927439" level="INFO">${timestamp_str} = 1779971243427</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.927359" elapsed="0.000092"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.927552" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.927585" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.927501" elapsed="0.000095"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.927644" elapsed="0.000105"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.926826" elapsed="0.000950"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.928098" elapsed="0.000060"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.928256" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.928205" elapsed="0.000071"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.928322" elapsed="0.000062"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.927834" elapsed="0.000575"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.928826" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.928740" elapsed="0.000098"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.928888" elapsed="0.000096"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.929038" elapsed="0.000062"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.928467" elapsed="0.000665"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.929521" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.929441" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.929580" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.929723" elapsed="0.000056"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.929187" elapsed="0.000631"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.930259" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.930179" elapsed="0.000092"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.930316" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.930455" elapsed="0.000057"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.929874" elapsed="0.000666"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.930929" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.930849" elapsed="0.000092"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.930986" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.931125" elapsed="0.000061"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.930595" elapsed="0.000618"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.931600" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.931523" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.931657" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.931797" elapsed="0.000057"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.931268" elapsed="0.000613"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.932273" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.932194" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.932329" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.932469" elapsed="0.000057"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.931936" elapsed="0.000616"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.932935" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.932855" elapsed="0.000091"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.932991" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.933117" elapsed="0.000057"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.932608" elapsed="0.000593"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.925696" elapsed="0.007526"/>
</kw>
<var name="${ticker}">{'t': 1779971243427, 's': 'bnb_usdt', 'c': '631.06', 'h': '660.33', 'l': '630.65', 'a': '358250', 'v': '2312187', 'o': '656.39', 'r': '-0.0385'}</var>
<status status="PASS" start="2026-05-28T20:27:25.925618" elapsed="0.007617"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.933454" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.933554" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.933654" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.933759" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.933857" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.933968" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.934070" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.934170" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.934269" elapsed="0.000055"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.934625" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.934749" elapsed="0.000072"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.934987" level="INFO">${timestamp_str} = 1779971244639</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.934867" elapsed="0.000131"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.935089" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.935120" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.935043" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.935172" elapsed="0.000094"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.934382" elapsed="0.000909"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.935587" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.935732" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.935683" elapsed="0.000067"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.935792" elapsed="0.000060"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.935344" elapsed="0.000532"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.936255" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.936177" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.936309" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.936444" elapsed="0.000056"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.935928" elapsed="0.000598"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.936901" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.936825" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.936956" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.937092" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.936580" elapsed="0.000594"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.937552" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.937476" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.937606" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.937742" elapsed="0.000057"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.937228" elapsed="0.000597"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.938191" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.938116" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.938244" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.938374" elapsed="0.000056"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.937876" elapsed="0.000589"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.938836" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.938761" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.938889" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.939025" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.938517" elapsed="0.000589"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.939476" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.939401" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.939530" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.939661" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.939161" elapsed="0.000580"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.940103" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.940027" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.940155" elapsed="0.000120"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.940322" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.939792" elapsed="0.000609"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.933343" elapsed="0.007079"/>
</kw>
<var name="${ticker}">{'t': 1779971244639, 's': 'trb_usdt', 'c': '16.129', 'h': '17.598', 'l': '16.030', 'a': '1194852', 'v': '2008788', 'o': '17.354', 'r': '-0.0705'}</var>
<status status="PASS" start="2026-05-28T20:27:25.933271" elapsed="0.007163"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.940644" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.940741" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.940837" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.940934" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.941030" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.941126" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.941222" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.941318" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.941415" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.941767" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.941885" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.942070" level="INFO">${timestamp_str} = 1779971244641</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.941999" elapsed="0.000082"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.942165" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.942194" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.942124" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.942241" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.941526" elapsed="0.000835"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.942629" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.942759" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.942717" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.942814" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.942410" elapsed="0.000476"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.943226" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.943158" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.943276" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.943398" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.942933" elapsed="0.000538"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.943817" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.943747" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.943867" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.943987" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.943522" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.944448" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.944379" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.944497" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.944621" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.944109" elapsed="0.000585"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.945036" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.944965" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.945086" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.945210" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.944742" elapsed="0.000542"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.945629" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.945558" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.945678" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.945805" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.945332" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.946221" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.946151" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.946270" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.946392" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.945927" elapsed="0.000547"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.946813" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.946742" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.946862" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.946972" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.946526" elapsed="0.000519"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.940535" elapsed="0.006529"/>
</kw>
<var name="${ticker}">{'t': 1779971244641, 's': 'ordi_usdt', 'c': '3.400', 'h': '4.159', 'l': '3.375', 'a': '611711', 'v': '2323764', 'o': '4.032', 'r': '-0.1567'}</var>
<status status="PASS" start="2026-05-28T20:27:25.940467" elapsed="0.006607"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947271" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947361" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947451" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947539" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947626" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947716" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947803" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947891" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.947979" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.948294" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.948404" elapsed="0.000061"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.948846" level="INFO">${timestamp_str} = 1779971244362</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.948506" elapsed="0.000350"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.948939" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.948966" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.948896" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.949013" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.948080" elapsed="0.001040"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.949382" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.949509" level="INFO">Length is 13.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.949468" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.949563" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.949167" elapsed="0.000468"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.949979" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.949911" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.950028" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.950150" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.949681" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.950569" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.950500" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.950618" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.950740" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.950280" elapsed="0.000533"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.951153" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.951083" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.951203" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.951323" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.950861" elapsed="0.000536"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.951737" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.951668" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.951785" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.951905" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.951447" elapsed="0.000532"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.952314" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.952246" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.952363" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.952484" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.952026" elapsed="0.000531"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.952915" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.952838" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.952968" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.953094" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.952604" elapsed="0.000563"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.953500" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.953429" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.953549" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.953659" elapsed="0.000101"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.953214" elapsed="0.000571"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.947169" elapsed="0.006635"/>
</kw>
<var name="${ticker}">{'t': 1779971244362, 's': '1000shib_usdt', 'c': '0.005264', 'h': '0.005553', 'l': '0.005238', 'a': '4087527', 'v': '2210503', 'o': '0.005528', 'r': '-0.0477'}</var>
<status status="PASS" start="2026-05-28T20:27:25.947106" elapsed="0.006708"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954007" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954106" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954197" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954287" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954381" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954480" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954572" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954660" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.954749" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.955064" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.955172" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.955340" level="INFO">${timestamp_str} = 1779971242141</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.955276" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.955440" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.955470" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.955394" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.955522" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.954850" elapsed="0.000778"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.955890" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.956021" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.955977" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.956076" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.955676" elapsed="0.000471"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.956506" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.956429" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.956556" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.956678" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.956196" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.957095" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.957025" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.957145" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.957267" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.956802" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.957728" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.957655" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.957779" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.957902" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.957389" elapsed="0.000595"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.958326" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.958256" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.958376" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.958498" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.958033" elapsed="0.000540"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.958915" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.958846" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.958965" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.959088" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.958620" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.959520" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.959444" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.959571" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.959694" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.959211" elapsed="0.000557"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.960102" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.960033" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.960152" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.960264" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.959817" elapsed="0.000522"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.953908" elapsed="0.006450"/>
</kw>
<var name="${ticker}">{'t': 1779971242141, 's': 'doge_usdt', 'c': '0.09748', 'h': '0.10331', 'l': '0.09705', 'a': '6971317', 'v': '6976452', 'o': '0.10196', 'r': '-0.0439'}</var>
<status status="PASS" start="2026-05-28T20:27:25.953845" elapsed="0.006524"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.960571" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.960662" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.960753" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.960843" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.960934" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.961025" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.961114" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.961205" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.961295" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.961619" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.961730" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.961909" level="INFO">${timestamp_str} = 1779971244288</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.961843" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.962002" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.962030" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.961960" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.962078" elapsed="0.000135"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.961398" elapsed="0.000838"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.962513" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.962645" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.962603" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.962701" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.962284" elapsed="0.000489"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.963116" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.963045" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.963167" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.963289" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.962820" elapsed="0.000544"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.963707" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.963636" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.963757" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.963880" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.963412" elapsed="0.000543"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.964298" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.964228" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.964347" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.964469" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.964003" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.964885" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.964815" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.964934" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.965055" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.964593" elapsed="0.000537"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.965485" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.965409" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.965537" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.965658" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.965178" elapsed="0.000568"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.966093" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.966023" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.966143" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.966266" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.965794" elapsed="0.000547"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.966683" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.966613" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.966733" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.966849" elapsed="0.000096"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.966390" elapsed="0.000579"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.960465" elapsed="0.006524"/>
</kw>
<var name="${ticker}">{'t': 1779971244288, 's': 'trx_usdt', 'c': '0.34929', 'h': '0.37419', 'l': '0.34789', 'a': '122290', 'v': '4472524', 'o': '0.37399', 'r': '-0.0660'}</var>
<status status="PASS" start="2026-05-28T20:27:25.960401" elapsed="0.006599"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967196" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967287" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967377" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967466" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967555" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967643" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967732" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967825" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.967914" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.968233" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.968343" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.968513" level="INFO">${timestamp_str} = 1779971244136</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.968448" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.968605" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.968633" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.968564" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.968681" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.968017" elapsed="0.000772"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.969061" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.969192" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.969150" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.969247" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.968836" elapsed="0.000482"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.969664" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.969596" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.969724" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.969861" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.969366" elapsed="0.000576"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.970293" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.970223" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.970343" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.970466" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.969996" elapsed="0.000545"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.970926" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.970854" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.970976" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.971100" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.970589" elapsed="0.000584"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.971530" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.971455" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.971580" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.971703" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.971222" elapsed="0.000555"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.972122" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.972051" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.972171" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.972301" elapsed="0.000056"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.971825" elapsed="0.000558"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.972735" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.972666" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.972785" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.972909" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.972436" elapsed="0.000547"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.973318" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.973248" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.973368" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.973478" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.973031" elapsed="0.000532"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.967096" elapsed="0.006486"/>
</kw>
<var name="${ticker}">{'t': 1779971244136, 's': 'dogs_usdt', 'c': '0.0000464', 'h': '0.0000522', 'l': '0.0000461', 'a': '39462754', 'v': '1947650', 'o': '0.0000511', 'r': '-0.0919'}</var>
<status status="PASS" start="2026-05-28T20:27:25.967032" elapsed="0.006560"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.973798" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.973889" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.973978" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.974068" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.974158" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.974249" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.974340" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.974428" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.974518" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.974836" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.974945" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.975113" level="INFO">${timestamp_str} = 1779971244841</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.975049" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.975249" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.975279" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.975162" elapsed="0.000127"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.975333" elapsed="0.000095"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.974620" elapsed="0.000833"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.975722" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.975853" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.975810" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.975908" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.975506" elapsed="0.000474"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.976319" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.976249" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.976369" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.976493" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.976026" elapsed="0.000543"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.976910" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.976840" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.976959" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.977081" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.976616" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.977519" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.977443" elapsed="0.000096"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.977580" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.977704" elapsed="0.000057"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.977203" elapsed="0.000582"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.978131" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.978061" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.978181" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.978307" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.977833" elapsed="0.000548"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.978723" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.978652" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.978772" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.978895" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.978429" elapsed="0.000539"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.979322" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.979245" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.979375" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.979508" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.979017" elapsed="0.000565"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.979915" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.979845" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.979964" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.980073" elapsed="0.000096"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.979629" elapsed="0.000564"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.973687" elapsed="0.006525"/>
</kw>
<var name="${ticker}">{'t': 1779971244841, 's': 'sui_usdt', 'c': '0.9092', 'h': '1.0124', 'l': '0.9066', 'a': '1212228', 'v': '1158234', 'o': '1.0088', 'r': '-0.0987'}</var>
<status status="PASS" start="2026-05-28T20:27:25.973624" elapsed="0.006599"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.980417" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.980510" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.980600" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.980691" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.980780" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.980869" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.980959" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.981057" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.981147" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.981490" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.981602" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.981779" level="INFO">${timestamp_str} = 1779971242920</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.981708" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.981871" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.981899" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.981829" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.981947" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.981252" elapsed="0.000804"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.982321" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.982452" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.982409" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.982508" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.982104" elapsed="0.000476"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.982921" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.982851" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.982970" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.983091" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.982627" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.983532" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.983458" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.983581" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.983703" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.983215" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.984157" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.984086" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.984206" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.984341" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.983823" elapsed="0.000598"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.984776" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.984706" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.984826" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.984948" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.984476" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.985376" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.985307" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.985426" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.985551" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.985070" elapsed="0.000555"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.985994" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.985919" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.986045" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.986167" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.985673" elapsed="0.000568"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.986573" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.986506" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.986623" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.986732" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.986289" elapsed="0.000517"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.980318" elapsed="0.006506"/>
</kw>
<var name="${ticker}">{'t': 1779971242920, 's': 'grass_usdt', 'c': '0.4882', 'h': '0.5340', 'l': '0.4762', 'a': '2409891', 'v': '1196686', 'o': '0.5093', 'r': '-0.0414'}</var>
<status status="PASS" start="2026-05-28T20:27:25.980254" elapsed="0.006581"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987037" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987128" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987216" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987309" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987397" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987485" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987574" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987662" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.987750" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.988076" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.988186" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.988369" level="INFO">${timestamp_str} = 1779971243472</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.988298" elapsed="0.000082"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.988520" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.988548" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.988423" elapsed="0.000134"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.988596" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.987852" elapsed="0.000853"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.988972" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.989114" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.989072" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.989169" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.988752" elapsed="0.000488"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.989594" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.989523" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.989645" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.989774" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.989287" elapsed="0.000562"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.990198" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.990128" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.990250" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.990383" elapsed="0.000056"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.989897" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.990810" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.990742" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.990860" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.990982" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.990518" elapsed="0.000537"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.991397" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.991327" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.991446" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.991568" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.991102" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.992009" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.991933" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.992062" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.992186" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.991693" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.992604" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.992533" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.992653" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.992781" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.992307" elapsed="0.000555"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.993226" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.993156" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.993276" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.993387" elapsed="0.000095"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.992926" elapsed="0.000580"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.986930" elapsed="0.006596"/>
</kw>
<var name="${ticker}">{'t': 1779971243472, 's': 'ban_usdt', 'c': '0.0783', 'h': '0.0944', 'l': '0.0777', 'a': '2390539', 'v': '2059138', 'o': '0.0942', 'r': '-0.1687'}</var>
<status status="PASS" start="2026-05-28T20:27:25.986867" elapsed="0.006669"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.993737" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.993829" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.993919" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.994009" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.994098" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.994186" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.994274" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.994363" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.994451" elapsed="0.000052"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.994784" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.994905" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.995082" level="INFO">${timestamp_str} = 1779971242347</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.995018" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.995174" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:25.995204" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:25.995133" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.995252" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.994557" elapsed="0.000804"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:25.995624" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.995757" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:25.995713" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:25.995811" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.995409" elapsed="0.000472"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.996223" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.996153" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.996278" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.996409" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.995928" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.996835" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.996764" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.996884" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.997017" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.996539" elapsed="0.000553"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.997477" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.997406" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.997528" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.997651" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.997140" elapsed="0.000591"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.998099" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.998029" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.998148" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.998270" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.997788" elapsed="0.000557"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.998688" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.998618" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.998739" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.998872" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.998393" elapsed="0.000560"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.999305" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.999236" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.999354" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.999477" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.999005" elapsed="0.000546"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:25.999881" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:25.999812" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:25.999930" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.000040" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.999598" elapsed="0.000515"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:25.993631" elapsed="0.006501"/>
</kw>
<var name="${ticker}">{'t': 1779971242347, 's': 'people_usdt', 'c': '0.00611', 'h': '0.00667', 'l': '0.00601', 'a': '9608910', 'v': '610034', 'o': '0.00660', 'r': '-0.0742'}</var>
<status status="PASS" start="2026-05-28T20:27:25.993568" elapsed="0.006575"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.000348" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.000448" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.000544" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.000641" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.000732" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.000823" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.000912" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.001001" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.001092" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.001422" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.001540" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.001708" level="INFO">${timestamp_str} = 1779971242725</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.001644" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.002037" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.002067" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.001762" elapsed="0.000315"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.002116" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.001198" elapsed="0.001026"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.002489" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.002621" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.002578" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.002675" elapsed="0.000053"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.002272" elapsed="0.000479"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.003114" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.003044" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.003165" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.003297" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.002802" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.003714" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.003642" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.003764" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.003887" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.003418" elapsed="0.000543"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.004317" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.004239" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.004371" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.004505" elapsed="0.000052"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.004010" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.004925" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.004854" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.004984" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.005107" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.004630" elapsed="0.000551"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.005544" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.005470" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.005595" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.005718" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.005233" elapsed="0.000565"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.006148" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.006078" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.006198" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.006329" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.005846" elapsed="0.000565"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.006756" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.006686" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.006807" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.006917" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.006464" elapsed="0.000527"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.000238" elapsed="0.006772"/>
</kw>
<var name="${ticker}">{'t': 1779971242725, 's': 'ton_usdt', 'c': '1.7617', 'h': '1.9162', 'l': '1.7592', 'a': '1197294', 'v': '2201524', 'o': '1.8969', 'r': '-0.0712'}</var>
<status status="PASS" start="2026-05-28T20:27:26.000174" elapsed="0.006847"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.007265" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.007357" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.007447" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.007537" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.007627" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.007717" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.007815" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.007911" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.008009" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.008330" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.008439" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.008610" level="INFO">${timestamp_str} = 1779971241345</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.008545" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.008701" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.008739" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.008659" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.008792" elapsed="0.000095"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.008112" elapsed="0.000800"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.009187" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.009318" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.009275" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.009372" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.008964" elapsed="0.000481"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.009785" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.009716" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.009836" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.009960" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.009493" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.010395" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.010318" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.010450" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.010583" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.010082" elapsed="0.000575"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.010999" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.010930" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.011050" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.011173" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.010705" elapsed="0.000544"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.011658" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.011543" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.011709" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.011835" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.011301" elapsed="0.000609"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.012255" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.012185" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.012304" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.012427" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.011958" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.012860" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.012783" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.012925" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.013058" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.012549" elapsed="0.000584"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.013474" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.013403" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.013524" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.013636" elapsed="0.000057"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.013181" elapsed="0.000537"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.007116" elapsed="0.006625"/>
</kw>
<var name="${ticker}">{'t': 1779971241345, 's': 'aixbt_usdt', 'c': '0.02653', 'h': '0.03109', 'l': '0.02635', 'a': '1800793', 'v': '512942', 'o': '0.03091', 'r': '-0.1417'}</var>
<status status="PASS" start="2026-05-28T20:27:26.007052" elapsed="0.006700"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.013949" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.014039" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.014128" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.014219" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.014326" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.014423" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.014527" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.014617" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.014706" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.015050" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.015160" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.015341" level="INFO">${timestamp_str} = 1779971244841</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.015270" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.015441" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.015472" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.015395" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.015533" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.014809" elapsed="0.000832"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.015911" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.016042" level="INFO">Length is 12.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.016000" elapsed="0.000107"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.016146" elapsed="0.000053"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.015689" elapsed="0.000532"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.016580" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.016507" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.016630" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.016755" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.016269" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.017192" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.017124" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.017244" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.017383" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.016888" elapsed="0.000576"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.017818" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.017748" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.017869" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.017994" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.017517" elapsed="0.000552"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.018414" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.018344" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.018466" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.018588" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.018118" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.019032" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.018955" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.019082" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.019204" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.018710" elapsed="0.000568"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.019621" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.019551" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.019670" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.019799" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.019327" elapsed="0.000552"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.020227" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.020156" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.020277" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.020387" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.019932" elapsed="0.000528"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.013847" elapsed="0.006632"/>
</kw>
<var name="${ticker}">{'t': 1779971244841, 's': 'melania_usdt', 'c': '0.086', 'h': '0.092', 'l': '0.085', 'a': '3599632', 'v': '318809', 'o': '0.090', 'r': '-0.0444'}</var>
<status status="PASS" start="2026-05-28T20:27:26.013784" elapsed="0.006706"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.020699" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.020791" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.020881" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.020970" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.021060" elapsed="0.000099"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.021200" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.021295" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.021393" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.021490" elapsed="0.000052"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.021818" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.021928" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.022098" level="INFO">${timestamp_str} = 1779971244002</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.022032" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.022190" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.022218" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.022148" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.022267" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.021594" elapsed="0.000782"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.022641" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.022777" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.022732" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.022837" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.022424" elapsed="0.000491"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.023267" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.023195" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.023317" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.023441" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.022967" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.023874" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.023798" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.023928" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.024056" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.023565" elapsed="0.000565"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.024471" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.024401" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.024521" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.024653" elapsed="0.000052"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.024178" elapsed="0.000551"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.025102" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.025030" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.025154" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.025279" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.024783" elapsed="0.000569"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.025747" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.025624" elapsed="0.000133"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.025800" elapsed="0.000088"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.025936" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.025400" elapsed="0.000617"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.026364" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.026293" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.026414" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.026537" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.026066" elapsed="0.000545"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.026967" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.026890" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027022" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027133" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.026659" elapsed="0.000549"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.020598" elapsed="0.006628"/>
</kw>
<var name="${ticker}">{'t': 1779971244002, 's': 'dot_usdt', 'c': '1.183', 'h': '1.278', 'l': '1.175', 'a': '942452', 'v': '1154592', 'o': '1.266', 'r': '-0.0655'}</var>
<status status="PASS" start="2026-05-28T20:27:26.020533" elapsed="0.006704"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027433" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027524" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027614" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027704" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027803" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027900" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.027998" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.028089" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.028177" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.028508" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.028618" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.028793" level="INFO">${timestamp_str} = 1779971244031</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.028722" elapsed="0.000082"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.028894" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.028924" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.028848" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.028976" elapsed="0.000088"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.028288" elapsed="0.000799"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.029351" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.029483" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.029441" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.029538" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.029134" elapsed="0.000475"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.030021" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.029894" elapsed="0.000138"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.030072" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.030196" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.029656" elapsed="0.000615"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.030613" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.030543" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.030663" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.030793" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.030319" elapsed="0.000555"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.031228" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.031157" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.031277" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.031399" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.030927" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.031814" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.031744" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.031864" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.031985" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.031521" elapsed="0.000538"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.032417" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.032341" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.032471" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.032606" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.032107" elapsed="0.000574"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.033028" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.032955" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.033077" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.033203" elapsed="0.000053"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.032730" elapsed="0.000553"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.033640" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.033567" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.033690" elapsed="0.000069"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.033802" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.033336" elapsed="0.000540"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.027333" elapsed="0.006561"/>
</kw>
<var name="${ticker}">{'t': 1779971244031, 's': 'uni_usdt', 'c': '3.005', 'h': '3.318', 'l': '2.989', 'a': '598225', 'v': '1881141', 'o': '3.289', 'r': '-0.0863'}</var>
<status status="PASS" start="2026-05-28T20:27:26.027269" elapsed="0.006635"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034101" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034193" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034283" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034372" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034461" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034552" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034641" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034730" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.034826" elapsed="0.000107"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.035215" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.035324" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.035492" level="INFO">${timestamp_str} = 1779971244048</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.035428" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.035583" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.035610" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.035541" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.035658" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.034992" elapsed="0.000778"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.036056" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.036187" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.036145" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.036241" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.035821" elapsed="0.000500"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.036663" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.036594" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.036714" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.036851" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.036368" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.037281" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.037211" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.037330" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.037452" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.036984" elapsed="0.000542"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.037870" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.037800" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.037920" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.038043" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.037575" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.038480" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.038404" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.038533" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.038655" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.038165" elapsed="0.000563"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.039070" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.039000" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.039119" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.039241" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.038776" elapsed="0.000546"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.039725" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.039609" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.039776" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.039899" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.039375" elapsed="0.000598"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.040319" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.040242" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.040372" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.040502" elapsed="0.000052"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.040020" elapsed="0.000558"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.034000" elapsed="0.006597"/>
</kw>
<var name="${ticker}">{'t': 1779971244048, 's': 'pol_usdt', 'c': '0.08701', 'h': '0.09179', 'l': '0.08635', 'a': '1194109', 'v': '1065970', 'o': '0.09175', 'r': '-0.0516'}</var>
<status status="PASS" start="2026-05-28T20:27:26.033936" elapsed="0.006672"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.040802" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.040893" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.040981" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.041070" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.041158" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.041247" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.041337" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.041427" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.041516" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.041847" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.041967" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.042141" level="INFO">${timestamp_str} = 1779971242991</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.042076" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.042232" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.042259" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.042191" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.042306" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.041618" elapsed="0.000796"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.042677" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.042819" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.042771" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.042878" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.042462" elapsed="0.000495"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.043303" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.043233" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.043352" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.043474" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.043009" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.043957" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.043829" elapsed="0.000140"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.044012" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.044134" elapsed="0.000048"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.043596" elapsed="0.000619"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.044558" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.044488" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.044608" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.044730" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.044264" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.045170" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.045100" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.045219" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.045340" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.044864" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.045758" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.045686" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.045806" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.045929" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.045462" elapsed="0.000542"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.046357" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.046281" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.046411" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.046541" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.046051" elapsed="0.000563"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.046949" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.046880" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.046998" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.047108" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.046663" elapsed="0.000518"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.040703" elapsed="0.006496"/>
</kw>
<var name="${ticker}">{'t': 1779971242991, 's': 'arb_usdt', 'c': '0.1016', 'h': '0.1111', 'l': '0.1011', 'a': '5018605', 'v': '531905', 'o': '0.1099', 'r': '-0.0755'}</var>
<status status="PASS" start="2026-05-28T20:27:26.040639" elapsed="0.006571"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.047421" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.047520" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.047609" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.047698" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.047787" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.047882" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.047973" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.048063" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.048152" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.048497" elapsed="0.000114"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.048653" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.048824" level="INFO">${timestamp_str} = 1779971243722</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.048758" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.048916" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.048944" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.048873" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.048991" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.048259" elapsed="0.000841"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.049362" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.049493" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.049450" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.049551" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.049147" elapsed="0.000475"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.049983" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.049908" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.050037" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.050159" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.049669" elapsed="0.000563"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.050571" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.050502" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.050620" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.050743" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.050279" elapsed="0.000545"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.051183" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.051112" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.051233" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.051354" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.050877" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.051768" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.051698" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.051817" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.051940" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.051475" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.052381" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.052306" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.052435" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.052565" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.052070" elapsed="0.000568"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.052977" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.052908" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.053026" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.053148" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.052687" elapsed="0.000534"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.053625" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.053509" elapsed="0.000126"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.053675" elapsed="0.000069"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.053787" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.053273" elapsed="0.000587"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.047312" elapsed="0.006566"/>
</kw>
<var name="${ticker}">{'t': 1779971243722, 's': 'fil_usdt', 'c': '0.943', 'h': '1.099', 'l': '0.938', 'a': '12133077', 'v': '1237613', 'o': '1.065', 'r': '-0.1145'}</var>
<status status="PASS" start="2026-05-28T20:27:26.047242" elapsed="0.006648"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054090" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054180" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054274" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054372" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054469" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054561" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054651" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054740" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.054829" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.055148" elapsed="0.000070"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.055263" elapsed="0.000070"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.055449" level="INFO">${timestamp_str} = 1779971243553</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.055378" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.055547" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.055575" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.055503" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.055622" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.054931" elapsed="0.000807"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.056002" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.056133" level="INFO">Length is 7.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.056090" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.056188" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.055786" elapsed="0.000477"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.056626" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.056555" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.056676" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.056800" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.056315" elapsed="0.000560"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.057220" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.057148" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.057274" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.057409" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.056924" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.058077" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.058006" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.058127" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.058250" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.057540" elapsed="0.000784"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.058672" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.058601" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.058721" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.058853" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.058372" elapsed="0.000563"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.059285" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.059215" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.059334" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.059458" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.058987" elapsed="0.000544"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.059887" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.059813" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.059941" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.060070" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.059579" elapsed="0.000573"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.060484" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.060416" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.060534" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.060643" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.060199" elapsed="0.000518"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.053986" elapsed="0.006750"/>
</kw>
<var name="${ticker}">{'t': 1779971243553, 's': 'op_usdt', 'c': '0.1159', 'h': '0.1304', 'l': '0.1155', 'a': '2098414', 'v': '257050', 'o': '0.1281', 'r': '-0.0952'}</var>
<status status="PASS" start="2026-05-28T20:27:26.053922" elapsed="0.006826"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.060961" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.061058" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.061148" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.061239" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.061329" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.061419" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.061508" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.061598" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.061688" elapsed="0.000052"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.062038" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.062148" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.062320" level="INFO">${timestamp_str} = 1779971243577</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.062254" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.062458" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.062487" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.062370" elapsed="0.000127"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.062537" elapsed="0.000088"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.061798" elapsed="0.000849"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.062920" elapsed="0.000052"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.063059" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.063014" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.063114" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.062695" elapsed="0.000492"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.063543" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.063469" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.063593" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.063715" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.063235" elapsed="0.000553"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.064146" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.064076" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.064196" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.064327" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.063836" elapsed="0.000572"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.064761" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.064691" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.064811" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.064932" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.064462" elapsed="0.000545"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.065365" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.065288" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.065419" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.065550" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.065055" elapsed="0.000570"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.065971" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.065900" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.066021" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.066144" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.065673" elapsed="0.000546"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.066588" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.066518" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.066638" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.066760" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.066271" elapsed="0.000563"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.067170" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.067100" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.067221" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.067343" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.066882" elapsed="0.000542"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.060851" elapsed="0.006594"/>
</kw>
<var name="${ticker}">{'t': 1779971243577, 's': 'dydx_usdt', 'c': '0.145', 'h': '0.172', 'l': '0.144', 'a': '3594237', 'v': '575333', 'o': '0.169', 'r': '-0.1420'}</var>
<status status="PASS" start="2026-05-28T20:27:26.060782" elapsed="0.006675"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.067711" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.067805" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.067903" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.067995" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.068086" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.068176" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.068267" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.068356" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.068446" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.068775" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.068896" elapsed="0.000070"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.069076" level="INFO">${timestamp_str} = 1779971244845</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.069012" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.069169" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.069197" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.069127" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.069245" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.068548" elapsed="0.000806"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.069617" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.069752" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.069705" elapsed="0.000065"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.069813" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.069401" elapsed="0.000491"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.070242" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.070172" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.070292" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.070417" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.069943" elapsed="0.000549"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.070848" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.070771" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.070902" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.071034" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.070541" elapsed="0.000567"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.071450" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.071380" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.071500" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.071622" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.071156" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.072118" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.072003" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.072168" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.072291" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.071756" elapsed="0.000608"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.072706" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.072637" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.072761" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.072896" elapsed="0.000056"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.072412" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.073324" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.073255" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.073374" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.073498" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.073030" elapsed="0.000542"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.073930" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.073852" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.073984" elapsed="0.000070"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.074098" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.073620" elapsed="0.000552"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.067558" elapsed="0.006633"/>
</kw>
<var name="${ticker}">{'t': 1779971244845, 's': 'pengu_usdt', 'c': '0.007792', 'h': '0.008541', 'l': '0.007758', 'a': '3886164', 'v': '3172091', 'o': '0.008502', 'r': '-0.0835'}</var>
<status status="PASS" start="2026-05-28T20:27:26.067492" elapsed="0.006709"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.074396" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.074489" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.074580" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.074670" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.074763" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.074860" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.074954" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.075047" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.075136" elapsed="0.000051"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.075456" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.075564" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.075745" level="INFO">${timestamp_str} = 1779971245238</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.075677" elapsed="0.000079"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.075846" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.075876" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.075800" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.075929" elapsed="0.000094"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.075239" elapsed="0.000806"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.076310" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.076440" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.076399" elapsed="0.000102"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.076541" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.076093" elapsed="0.000522"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.076966" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.076891" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.077021" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.077146" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.076663" elapsed="0.000557"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.077575" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.077502" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.077625" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.077749" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.077268" elapsed="0.000556"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.078174" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.078101" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.078228" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.078363" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.077872" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.078789" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.078720" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.078839" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.078960" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.078496" elapsed="0.000537"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.079389" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.079315" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.079442" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.079572" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.079081" elapsed="0.000572"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.080000" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.079930" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.080050" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.080173" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.079703" elapsed="0.000546"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.080606" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.080536" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.080656" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.080766" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.080302" elapsed="0.000538"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.074296" elapsed="0.006570"/>
</kw>
<var name="${ticker}">{'t': 1779971245238, 's': 'wif_usdt', 'c': '0.1755', 'h': '0.1964', 'l': '0.1746', 'a': '539763', 'v': '1002651', 'o': '0.1950', 'r': '-0.1000'}</var>
<status status="PASS" start="2026-05-28T20:27:26.074233" elapsed="0.006649"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081079" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081170" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081259" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081348" elapsed="0.000098"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081487" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081575" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081665" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081759" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.081855" elapsed="0.000055"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.082189" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.082297" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.082466" level="INFO">${timestamp_str} = 1779971243666</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.082402" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.082556" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.082586" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.082515" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.082634" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.081968" elapsed="0.000778"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.083036" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.083168" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.083126" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.083224" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.082799" elapsed="0.000496"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.083636" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.083565" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.083695" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.083826" elapsed="0.000056"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.083342" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.084262" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.084192" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.084312" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.084433" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.083962" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.084865" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.084789" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.084919" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.085051" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.084556" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.085463" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.085395" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.085512" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.085633" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.085173" elapsed="0.000533"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.086124" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.086053" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.086175" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.086299" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.085758" elapsed="0.000614"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.086713" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.086646" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.086767" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.086902" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.086421" elapsed="0.000561"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.087321" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.087250" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.087370" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.087480" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.087034" elapsed="0.000528"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.080979" elapsed="0.006602"/>
</kw>
<var name="${ticker}">{'t': 1779971243666, 's': 'trump_usdt', 'c': '1.852', 'h': '2.031', 'l': '1.849', 'a': '1075580', 'v': '2087663', 'o': '2.013', 'r': '-0.0799'}</var>
<status status="PASS" start="2026-05-28T20:27:26.080916" elapsed="0.006676"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.087794" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.087894" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.087993" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.088086" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.088176" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.088266" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.088355" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.088443" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.088532" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.088863" elapsed="0.000073"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.088981" elapsed="0.000066"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.089152" level="INFO">${timestamp_str} = 1779971242746</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.089088" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.089245" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.089273" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.089202" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.089320" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.088634" elapsed="0.000794"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.089691" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.089833" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.089787" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.089892" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.089475" elapsed="0.000494"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.090363" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.090244" elapsed="0.000129"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.090414" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.090538" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.090021" elapsed="0.000591"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.090976" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.090902" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.091031" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.091153" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.090660" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.091571" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.091500" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.091629" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.091755" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.091276" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.092196" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.092126" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.092246" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.092368" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.091890" elapsed="0.000552"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.092792" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.092716" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.092846" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.092979" elapsed="0.000054"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.092490" elapsed="0.000567"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.093397" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.093326" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.093446" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.093568" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.093104" elapsed="0.000536"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.093998" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.093923" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.094049" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.094160" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.093689" elapsed="0.000544"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.087687" elapsed="0.006565"/>
</kw>
<var name="${ticker}">{'t': 1779971242746, 's': 'not_usdt', 'c': '0.000427', 'h': '0.000470', 'l': '0.000421', 'a': '9126206', 'v': '405414', 'o': '0.000454', 'r': '-0.0594'}</var>
<status status="PASS" start="2026-05-28T20:27:26.087623" elapsed="0.006640"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.094458" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.094551" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.094641" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.094731" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.094828" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.094925" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.095022" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.095118" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.095207" elapsed="0.000098"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.095575" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.095684" elapsed="0.000066"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.095866" level="INFO">${timestamp_str} = 1779971243448</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.095795" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.095966" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.095997" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.095920" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.096047" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.095358" elapsed="0.000797"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.096417" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.096548" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.096504" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.096602" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.096202" elapsed="0.000471"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.097040" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.096965" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.097090" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.097212" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.096721" elapsed="0.000565"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.097626" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.097556" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.097675" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.097806" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.097334" elapsed="0.000554"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.098241" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.098171" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.098291" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.098413" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.097941" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.098839" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.098763" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.098893" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.099025" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.098535" elapsed="0.000563"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.099440" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.099371" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.099499" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.099621" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.099146" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.100107" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.099991" elapsed="0.000127"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.100158" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.100281" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.099745" elapsed="0.000609"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.100689" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.100620" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.100742" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.100861" elapsed="0.000054"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.100402" elapsed="0.000539"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.094357" elapsed="0.006604"/>
</kw>
<var name="${ticker}">{'t': 1779971243448, 's': 'spell_usdt', 'c': '0.0001464', 'h': '0.0001542', 'l': '0.0001453', 'a': '53416218', 'v': '804629', 'o': '0.0001531', 'r': '-0.0437'}</var>
<status status="PASS" start="2026-05-28T20:27:26.094294" elapsed="0.006679"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101171" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101262" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101352" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101441" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101531" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101621" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101710" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101809" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.101908" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.102236" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.102344" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.102512" level="INFO">${timestamp_str} = 1779971244749</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.102448" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.102602" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.102629" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.102561" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.102675" elapsed="0.000090"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.102020" elapsed="0.000769"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.103072" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.103210" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.103161" elapsed="0.000066"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.103265" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.102841" elapsed="0.000496"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.103683" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.103614" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.103732" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.103866" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.103384" elapsed="0.000562"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.104342" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.104225" elapsed="0.000128"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.104393" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.104516" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.104000" elapsed="0.000589"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.104951" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.104875" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.105005" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.105129" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.104637" elapsed="0.000567"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.105543" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.105474" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.105593" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.105715" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.105252" elapsed="0.000543"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.106154" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.106087" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.106204" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.106327" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.105847" elapsed="0.000553"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.106743" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.106672" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.106796" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.106930" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.106449" elapsed="0.000561"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.107356" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.107286" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.107406" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.107516" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.107059" elapsed="0.000530"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.101072" elapsed="0.006536"/>
</kw>
<var name="${ticker}">{'t': 1779971244749, 's': 'wld_usdt', 'c': '0.2927', 'h': '0.3708', 'l': '0.2910', 'a': '2449879', 'v': '813899', 'o': '0.3641', 'r': '-0.1960'}</var>
<status status="PASS" start="2026-05-28T20:27:26.101007" elapsed="0.006611"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.107822" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.107921" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.108018" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.108108" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.108196" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.108285" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.108371" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.108458" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.108547" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.108878" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.109046" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.109216" level="INFO">${timestamp_str} = 1779971242942</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.109151" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.109308" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.109336" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.109266" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.109383" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.108648" elapsed="0.000843"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.109763" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.109903" level="INFO">Length is 11.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.109858" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.109964" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.109538" elapsed="0.000504"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.110382" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.110312" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.110432" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.110555" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.110089" elapsed="0.000539"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.110992" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.110916" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.111044" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.111174" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.110676" elapsed="0.000572"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.111592" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.111521" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.111641" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.111767" elapsed="0.000052"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.111297" elapsed="0.000549"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.112201" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.112132" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.112251" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.112373" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.111899" elapsed="0.000548"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.112796" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.112720" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.112850" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.112983" elapsed="0.000053"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.112495" elapsed="0.000564"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.113398" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.113329" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.113447" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.113567" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.113107" elapsed="0.000534"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.114246" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.113922" elapsed="0.000335"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.114296" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.114406" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.113689" elapsed="0.000790"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.107713" elapsed="0.006785"/>
</kw>
<var name="${ticker}">{'t': 1779971242942, 's': 'cookie_usdt', 'c': '0.0115', 'h': '0.0128', 'l': '0.0113', 'a': '2377610', 'v': '287119', 'o': '0.0125', 'r': '-0.0800'}</var>
<status status="PASS" start="2026-05-28T20:27:26.107650" elapsed="0.006859"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.114703" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.114794" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.114883" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.114972" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.115074" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.115164" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.115255" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.115352" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.115450" elapsed="0.000054"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.115775" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.115884" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.116053" level="INFO">${timestamp_str} = 1779971243819</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.115988" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.116144" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.116172" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.116103" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.116221" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.115558" elapsed="0.000779"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.116619" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.116750" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.116707" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.116805" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.116389" elapsed="0.000488"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.117220" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.117149" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.117274" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.117408" elapsed="0.000055"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.116924" elapsed="0.000565"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.117838" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.117767" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.117887" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.118010" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.117541" elapsed="0.000543"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.118494" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.118416" elapsed="0.000090"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.118547" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.118670" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.118132" elapsed="0.000612"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.119086" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.119016" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.119135" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.119268" elapsed="0.000056"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.118792" elapsed="0.000558"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.119708" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.119637" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.119758" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.119881" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.119403" elapsed="0.000553"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.120309" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.120233" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.120364" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.120498" elapsed="0.000053"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.120005" elapsed="0.000570"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.120911" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.120840" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.120961" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.121072" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.120622" elapsed="0.000522"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.114603" elapsed="0.006559"/>
</kw>
<var name="${ticker}">{'t': 1779971243819, 's': 'jup_usdt', 'c': '0.1761', 'h': '0.1978', 'l': '0.1755', 'a': '600762', 'v': '1121890', 'o': '0.1934', 'r': '-0.0894'}</var>
<status status="PASS" start="2026-05-28T20:27:26.114539" elapsed="0.006634"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.121381" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.121481" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.121575" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.121662" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.121753" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.121842" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.121931" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.122021" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.122109" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.122452" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.122568" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.122739" level="INFO">${timestamp_str} = 1779971244759</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.122673" elapsed="0.000076"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.122832" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.122860" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.122789" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.122921" elapsed="0.000135"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.122212" elapsed="0.000868"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.123348" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.123478" level="INFO">Length is 10.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.123436" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.123533" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.123128" elapsed="0.000477"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.123970" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.123893" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.124025" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.124148" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.123653" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.124578" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.124506" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.124629" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.124751" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.124270" elapsed="0.000555"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.125174" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.125105" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.125224" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.125358" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.124874" elapsed="0.000565"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.125794" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.125722" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.125844" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.125967" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.125492" elapsed="0.000550"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.126404" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.126327" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.126459" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.126587" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.126090" elapsed="0.000572"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.127006" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.126935" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.127055" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.127185" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.126710" elapsed="0.000552"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.127625" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.127554" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.127675" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.127786" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.127315" elapsed="0.000544"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.121272" elapsed="0.006606"/>
</kw>
<var name="${ticker}">{'t': 1779971244759, 's': 'turbo_usdt', 'c': '0.0010162', 'h': '0.0011198', 'l': '0.0010037', 'a': '497688', 'v': '5273246', 'o': '0.0011067', 'r': '-0.0817'}</var>
<status status="PASS" start="2026-05-28T20:27:26.121205" elapsed="0.006683"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128135" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128228" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128326" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128426" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128525" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128615" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128704" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128793" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.128881" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.129201" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.129321" elapsed="0.000069"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.129507" level="INFO">${timestamp_str} = 1779971242591</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.129436" elapsed="0.000082"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.129601" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.129628" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.129559" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.129676" elapsed="0.000089"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.128982" elapsed="0.000805"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.130055" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.130186" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.130144" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.130243" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.129836" elapsed="0.000485"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.130682" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.130611" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.130731" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.130853" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.130373" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.131290" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.131214" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.131346" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.131479" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.130986" elapsed="0.000573"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.131904" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.131833" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.131953" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.132075" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.131607" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.132561" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.132438" elapsed="0.000133"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.132611" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.132734" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.132197" elapsed="0.000610"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.133150" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.133082" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.133200" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.133333" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.132856" elapsed="0.000559"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.133770" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.133698" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.133820" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.133943" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.133468" elapsed="0.000549"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.134365" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.134289" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.134419" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.134539" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.134065" elapsed="0.000547"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.127983" elapsed="0.006647"/>
</kw>
<var name="${ticker}">{'t': 1779971242591, 's': 'ldo_usdt', 'c': '0.3128', 'h': '0.3456', 'l': '0.3118', 'a': '2385772', 'v': '784566', 'o': '0.3425', 'r': '-0.0867'}</var>
<status status="PASS" start="2026-05-28T20:27:26.127919" elapsed="0.006722"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.134847" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.134939" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.135030" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.135120" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.135210" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.135307" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.135404" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.135501" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.135593" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.135912" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.136028" elapsed="0.000075"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.136210" level="INFO">${timestamp_str} = 1779971243317</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.136145" elapsed="0.000079"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.136323" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.136354" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.136268" elapsed="0.000096"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.136406" elapsed="0.000093"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.135695" elapsed="0.000828"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.136787" elapsed="0.000051"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.136965" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.136876" elapsed="0.000106"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.137021" elapsed="0.000052"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.136571" elapsed="0.000523"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.137458" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.137381" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.137514" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.137639" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.137142" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.138057" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.137989" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.138108" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.138232" elapsed="0.000054"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.137763" elapsed="0.000549"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.138674" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.138603" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.138724" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.138846" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.138365" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.139292" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.139204" elapsed="0.000099"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.139347" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.139482" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.138978" elapsed="0.000582"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.139903" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.139835" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.139953" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.140076" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.139609" elapsed="0.000541"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.140516" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.140440" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.140567" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.140687" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.140198" elapsed="0.000563"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.141106" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.141036" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.141155" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.141264" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.140809" elapsed="0.000528"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.134745" elapsed="0.006611"/>
</kw>
<var name="${ticker}">{'t': 1779971243317, 's': 'jto_usdt', 'c': '0.4721', 'h': '0.5929', 'l': '0.4695', 'a': '1215281', 'v': '643655', 'o': '0.5259', 'r': '-0.1023'}</var>
<status status="PASS" start="2026-05-28T20:27:26.134681" elapsed="0.006686"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.141566" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.141658" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.141750" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.141847" elapsed="0.000106"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.141997" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.142088" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.142178" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.142267" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.142357" elapsed="0.000049"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.142687" elapsed="0.000069"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.142812" elapsed="0.000071"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.142998" level="INFO">${timestamp_str} = 1779971243951</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.142928" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.143093" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.143121" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.143051" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.143169" elapsed="0.000087"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.142460" elapsed="0.000818"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.143546" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.143676" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.143634" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.143730" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.143326" elapsed="0.000482"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.144166" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.144097" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.144216" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.144338" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.143859" elapsed="0.000553"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.144760" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.144684" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.144813" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.144945" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.144460" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.145369" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.145300" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.145420" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.145541" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.145077" elapsed="0.000538"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.145981" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.145905" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.146034" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.146154" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.145663" elapsed="0.000566"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.146618" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.146545" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.146668" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.146794" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.146277" elapsed="0.000610"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.147239" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.147169" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.147288" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.147409" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.146940" elapsed="0.000543"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.147837" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.147760" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.147900" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148023" elapsed="0.000051"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.147531" elapsed="0.000567"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.141462" elapsed="0.006655"/>
</kw>
<var name="${ticker}">{'t': 1779971243951, 's': 'act_usdt', 'c': '0.01152', 'h': '0.01293', 'l': '0.01143', 'a': '2369193', 'v': '289199', 'o': '0.01267', 'r': '-0.0907'}</var>
<status status="PASS" start="2026-05-28T20:27:26.141398" elapsed="0.006730"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148324" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148416" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148505" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148593" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148682" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148777" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148873" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.148969" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.149062" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.149382" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.149491" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.149659" level="INFO">${timestamp_str} = 1779971242864</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.149594" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.149755" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.149786" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.149707" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.149838" elapsed="0.000093"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.149164" elapsed="0.000791"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.150224" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.150353" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.150312" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.150407" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.150007" elapsed="0.000471"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.150884" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.150753" elapsed="0.000142"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.150939" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.151070" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.150525" elapsed="0.000618"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.151485" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.151415" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.151535" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.151657" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.151191" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.152109" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.152038" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.152158" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.152282" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.151784" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.152695" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.152628" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.152755" elapsed="0.000093"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.152901" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.152404" elapsed="0.000578"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.153335" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.153256" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.153384" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.153504" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.153034" elapsed="0.000545"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.153940" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.153863" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.153994" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.154118" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.153627" elapsed="0.000565"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.154534" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.154466" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.154584" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.154698" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.154247" elapsed="0.000541"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.148224" elapsed="0.006585"/>
</kw>
<var name="${ticker}">{'t': 1779971242864, 's': 'xmr_usdt', 'c': '369.43', 'h': '401.50', 'l': '366.97', 'a': '1194923', 'v': '4654412', 'o': '398.52', 'r': '-0.0729'}</var>
<status status="PASS" start="2026-05-28T20:27:26.148160" elapsed="0.006661"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155034" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155128" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155218" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155308" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155397" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155486" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155574" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155663" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.155754" elapsed="0.000105"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.156147" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.156256" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.156425" level="INFO">${timestamp_str} = 1779971243989</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.156360" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.156517" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.156544" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.156475" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.156591" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.155917" elapsed="0.000783"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.156984" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.157118" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.157076" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.157173" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.156748" elapsed="0.000496"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.157589" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.157519" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.157639" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.157768" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.157294" elapsed="0.000554"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.158207" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.158137" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.158257" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.158378" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.157901" elapsed="0.000550"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.158814" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.158738" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.158869" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.159003" elapsed="0.000052"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.158507" elapsed="0.000571"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.159418" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.159349" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.159468" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.159589" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.159126" elapsed="0.000537"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.160029" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.159953" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.160078" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.160200" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.159711" elapsed="0.000563"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.160666" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.160553" elapsed="0.000123"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.160717" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.160851" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.160322" elapsed="0.000609"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.161275" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.161205" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.161324" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.161432" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.160984" elapsed="0.000520"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.154925" elapsed="0.006597"/>
</kw>
<var name="${ticker}">{'t': 1779971243989, 's': 'rune_usdt', 'c': '0.411', 'h': '0.443', 'l': '0.401', 'a': '3001512', 'v': '1266169', 'o': '0.437', 'r': '-0.0594'}</var>
<status status="PASS" start="2026-05-28T20:27:26.154855" elapsed="0.006677"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.161730" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.161834" elapsed="0.000061"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.161937" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.162034" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.162122" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.162210" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.162300" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.162401" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.162491" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.162813" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.162922" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.163092" level="INFO">${timestamp_str} = 1779971244959</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.163027" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.163183" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.163211" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.163141" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.163260" elapsed="0.000092"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.162594" elapsed="0.000787"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.163662" elapsed="0.000049"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.163791" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.163749" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.163845" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.163434" elapsed="0.000482"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.164264" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.164186" elapsed="0.000089"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.164319" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.164454" elapsed="0.000054"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.163964" elapsed="0.000570"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.164924" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.164806" elapsed="0.000129"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.164975" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.165097" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.164583" elapsed="0.000589"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.165545" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.165471" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.165594" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.165716" elapsed="0.000055"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.165220" elapsed="0.000575"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.166139" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.166069" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.166188" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.166316" elapsed="0.000055"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.165843" elapsed="0.000553"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.166771" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.166702" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.166821" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.166944" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.166460" elapsed="0.000558"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.167374" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.167300" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.167428" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.167559" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.167066" elapsed="0.000567"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.167966" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.167896" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168015" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168123" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.167681" elapsed="0.000515"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.161627" elapsed="0.006588"/>
</kw>
<var name="${ticker}">{'t': 1779971244959, 's': 'link_usdt', 'c': '8.812', 'h': '9.480', 'l': '8.770', 'a': '1791577', 'v': '1632303', 'o': '9.429', 'r': '-0.0654'}</var>
<status status="PASS" start="2026-05-28T20:27:26.161563" elapsed="0.006663"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168438" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168537" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168626" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168715" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168804" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168893" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.168981" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.169071" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.169159" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.169498" elapsed="0.000318"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.169859" elapsed="0.000064"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.170028" level="INFO">${timestamp_str} = 1779971244708</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.169964" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.170120" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.170149" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.170078" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.170199" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.169263" elapsed="0.001044"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.170577" elapsed="0.000060"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.170717" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.170676" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.170773" elapsed="0.000054"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.170354" elapsed="0.000496"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.171206" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.171136" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.171255" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.171376" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.170902" elapsed="0.000548"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.171797" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.171721" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.171851" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.171984" elapsed="0.000054"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.171498" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.172410" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.172334" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.172459" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.172582" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.172110" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.173022" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.172945" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.173072" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.173194" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.172703" elapsed="0.000565"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.173623" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.173554" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.173673" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.173800" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.173316" elapsed="0.000563"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.174221" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.174153" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.174275" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.174408" elapsed="0.000054"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.173928" elapsed="0.000567"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.174887" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.174768" elapsed="0.000129"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.174937" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175048" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.174548" elapsed="0.000573"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.168330" elapsed="0.006810"/>
</kw>
<var name="${ticker}">{'t': 1779971244708, 's': 'xlm_usdt', 'c': '0.18211', 'h': '0.18251', 'l': '0.14831', 'a': '12071132', 'v': '2011100', 'o': '0.14959', 'r': '0.2173'}</var>
<status status="PASS" start="2026-05-28T20:27:26.168261" elapsed="0.006889"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175353" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175451" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175547" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175637" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175726" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175815" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175903" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.175992" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.176081" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.176414" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.176536" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.176705" level="INFO">${timestamp_str} = 1779971241220</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.176640" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.176796" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.176825" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.176755" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.176872" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.176181" elapsed="0.000799"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.177249" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.177390" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.177345" elapsed="0.000063"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.177450" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.177028" elapsed="0.000500"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.177875" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.177807" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.177925" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.178049" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.177576" elapsed="0.000547"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.178493" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.178416" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.178565" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.178689" elapsed="0.000051"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.178172" elapsed="0.000592"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.179157" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.179084" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.179208" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.179340" elapsed="0.000053"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.178813" elapsed="0.000607"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.179776" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.179703" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.179825" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.179946" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.179473" elapsed="0.000547"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.180376" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.180301" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.180433" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.180563" elapsed="0.000051"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.180068" elapsed="0.000570"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.180982" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.180911" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.181034" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.181155" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.180686" elapsed="0.000545"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.181593" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.181521" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.181642" elapsed="0.000068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.181756" elapsed="0.000049"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.181283" elapsed="0.000547"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.175246" elapsed="0.006602"/>
</kw>
<var name="${ticker}">{'t': 1779971241220, 's': 'hbar_usdt', 'c': '0.08346', 'h': '0.08657', 'l': '0.08182', 'a': '2389010', 'v': '2025825', 'o': '0.08637', 'r': '-0.0336'}</var>
<status status="PASS" start="2026-05-28T20:27:26.175181" elapsed="0.006677"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182061" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182152" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182242" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182348" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182446" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182544" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182633" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182722" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.182811" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.183130" elapsed="0.000070"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.183243" elapsed="0.000068"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.183426" level="INFO">${timestamp_str} = 1779971242395</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.183357" elapsed="0.000080"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.183526" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.183554" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.183481" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.183602" elapsed="0.000134"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.182913" elapsed="0.000846"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.184034" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.184165" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.184123" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.184220" elapsed="0.000053"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.183807" elapsed="0.000489"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.184659" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.184587" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.184709" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.184834" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.184347" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.185256" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.185183" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.185311" elapsed="0.000085"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.185445" elapsed="0.000054"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.184957" elapsed="0.000568"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.185877" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.185807" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.185926" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.186048" elapsed="0.000051"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.185577" elapsed="0.000546"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.186489" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.186413" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.186554" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.186677" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.186172" elapsed="0.000579"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.187095" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.187024" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.187144" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.187269" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.186799" elapsed="0.000552"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.187709" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.187640" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.187759" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.187881" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.187404" elapsed="0.000551"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.188298" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.188223" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.188352" elapsed="0.000073"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.188472" elapsed="0.000102"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.188003" elapsed="0.000597"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.181953" elapsed="0.006666"/>
</kw>
<var name="${ticker}">{'t': 1779971242395, 's': 'bera_usdt', 'c': '0.337', 'h': '0.378', 'l': '0.336', 'a': '575609', 'v': '203725', 'o': '0.369', 'r': '-0.0867'}</var>
<status status="PASS" start="2026-05-28T20:27:26.181890" elapsed="0.006739"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.188825" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.188917" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.189006" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.189097" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.189186" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.189282" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.189379" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.189477" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.189570" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.189893" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.190002" elapsed="0.000065"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.190169" level="INFO">${timestamp_str} = 1779971242894</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.190106" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.190274" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.190305" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.190228" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.190358" elapsed="0.000094"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.189673" elapsed="0.000804"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.190749" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.190880" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.190838" elapsed="0.000059"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.190935" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.190529" elapsed="0.000479"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.191363" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.191288" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.191418" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.191550" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.191055" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.191965" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.191894" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.192014" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.192135" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.191673" elapsed="0.000535"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.192619" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.192547" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.192671" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.192795" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.192259" elapsed="0.000610"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.193218" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.193148" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.193271" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.193409" elapsed="0.000054"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.192918" elapsed="0.000571"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.193841" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.193773" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.193890" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.194016" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.193543" elapsed="0.000548"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.194454" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.194378" elapsed="0.000099"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.194522" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.194646" elapsed="0.000051"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.194140" elapsed="0.000581"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.195058" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.194988" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.195108" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.195219" elapsed="0.000052"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.194769" elapsed="0.000529"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.188725" elapsed="0.006594"/>
</kw>
<var name="${ticker}">{'t': 1779971242894, 's': 'vvv_usdt', 'c': '15.501', 'h': '17.921', 'l': '14.812', 'a': '1785909', 'v': '29407040', 'o': '17.388', 'r': '-0.1085'}</var>
<status status="PASS" start="2026-05-28T20:27:26.188661" elapsed="0.006671"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.195544" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.195635" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.195726" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.195814" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.195902" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.195991" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.196079" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.196167" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.196258" elapsed="0.000055"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.196602" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.196711" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.196879" level="INFO">${timestamp_str} = 1779971244372</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.196814" elapsed="0.000074"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.197015" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.197044" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.196928" elapsed="0.000125"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.197092" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.196370" elapsed="0.000829"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.197489" elapsed="0.000054"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.197625" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.197581" elapsed="0.000060"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.197678" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.197247" elapsed="0.000508"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.198107" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.198036" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.198157" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.198291" elapsed="0.000051"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.197802" elapsed="0.000564"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.198716" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.198646" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.198769" elapsed="0.000086"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.198903" elapsed="0.000056"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.198415" elapsed="0.000570"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.199337" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.199267" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.199386" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.199508" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.199038" elapsed="0.000544"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.199946" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.199869" elapsed="0.000088"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.200000" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.200126" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.199630" elapsed="0.000569"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.200558" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.200483" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.200607" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.200731" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.200247" elapsed="0.000558"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.201153" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.201083" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.201203" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.201331" elapsed="0.000055"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.200853" elapsed="0.000559"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.201766" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.201690" elapsed="0.000086"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.201815" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.201924" elapsed="0.000095"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.201468" elapsed="0.000576"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.195435" elapsed="0.006627"/>
</kw>
<var name="${ticker}">{'t': 1779971244372, 's': 'ondo_usdt', 'c': '0.3553', 'h': '0.4074', 'l': '0.3513', 'a': '1204324', 'v': '4571750', 'o': '0.4057', 'r': '-0.1242'}</var>
<status status="PASS" start="2026-05-28T20:27:26.195366" elapsed="0.006718"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.202287" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.202387" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.202485" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.202579" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.202668" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.202758" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.202848" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.202937" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.203026" elapsed="0.000050"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.203359" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.203480" elapsed="0.000067"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.203654" level="INFO">${timestamp_str} = 1779971244703</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.203589" elapsed="0.000075"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.203745" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.203772" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.203704" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.203820" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.203128" elapsed="0.000799"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.204191" elapsed="0.000053"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.204331" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.204285" elapsed="0.000064"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.204390" elapsed="0.000055"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.203974" elapsed="0.000495"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.204815" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.204745" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.204865" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.204988" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.204520" elapsed="0.000541"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.205422" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.205346" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.205475" elapsed="0.000083"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.205602" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.205109" elapsed="0.000566"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.206064" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.205993" elapsed="0.000081"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.206113" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.206247" elapsed="0.000054"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.205723" elapsed="0.000604"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.206691" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.206621" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.206741" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.206864" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.206380" elapsed="0.000559"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.207289" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.207215" elapsed="0.000085"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.207344" elapsed="0.000087"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.207479" elapsed="0.000055"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.206987" elapsed="0.000572"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.207901" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.207831" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.207950" elapsed="0.000081"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.208074" elapsed="0.000050"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.207607" elapsed="0.000541"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.208502" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.208426" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.208554" elapsed="0.000067"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.208664" elapsed="0.000050"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.208196" elapsed="0.000542"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.202182" elapsed="0.006575"/>
</kw>
<var name="${ticker}">{'t': 1779971244703, 's': 'atom_usdt', 'c': '2.012', 'h': '2.225', 'l': '2.009', 'a': '1190477', 'v': '2523728', 'o': '2.219', 'r': '-0.0932'}</var>
<status status="PASS" start="2026-05-28T20:27:26.202116" elapsed="0.006652"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.208963" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.209058" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.209149" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.209239" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.209336" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.209432" elapsed="0.000054"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.209529" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.209617" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.209704" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.210034" elapsed="0.000068"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.210143" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.210319" level="INFO">${timestamp_str} = 1779971244837</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.210248" elapsed="0.000081"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.210466" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.210497" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.210373" elapsed="0.000134"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.210548" elapsed="0.000086"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.209817" elapsed="0.000840"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.210921" elapsed="0.000050"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.211052" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.211010" elapsed="0.000058"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.211106" elapsed="0.000051"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.210704" elapsed="0.000474"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.211547" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.211474" elapsed="0.000083"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.211597" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.211720" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.211225" elapsed="0.000569"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.212143" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.212073" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.212191" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.212322" elapsed="0.000055"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.211842" elapsed="0.000561"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.212755" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.212685" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.212807" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.212928" elapsed="0.000050"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.212455" elapsed="0.000547"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.213359" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.213283" elapsed="0.000087"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.213414" elapsed="0.000082"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.213543" elapsed="0.000050"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.213050" elapsed="0.000567"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.214030" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.213945" elapsed="0.000096"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.214085" elapsed="0.000098"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.214231" elapsed="0.000053"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.213668" elapsed="0.000641"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.214678" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.214606" elapsed="0.000082"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.214728" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.214851" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.214362" elapsed="0.000562"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.215267" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.215198" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.215316" elapsed="0.000065"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.215425" elapsed="0.000102"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.214973" elapsed="0.000579"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.208863" elapsed="0.006707"/>
</kw>
<var name="${ticker}">{'t': 1779971244837, 's': 'ada_usdt', 'c': '0.2293', 'h': '0.2433', 'l': '0.2278', 'a': '11969532', 'v': '28207541', 'o': '0.2403', 'r': '-0.0457'}</var>
<status status="PASS" start="2026-05-28T20:27:26.208800" elapsed="0.006781"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.215777" elapsed="0.000052"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.215868" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.215957" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216042" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216128" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216214" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216299" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216385" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216471" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216787" elapsed="0.000067"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216893" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.217059" level="INFO">${timestamp_str} = 1779971244638</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.216996" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.217150" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.217178" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.217109" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.217225" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.216569" elapsed="0.000763"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.217593" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.217722" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.217681" elapsed="0.000056"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.217779" elapsed="0.000048"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.217378" elapsed="0.000483"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.218202" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.218132" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.218250" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.218369" elapsed="0.000049"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.217907" elapsed="0.000534"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.218781" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.218713" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.218829" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.218947" elapsed="0.000048"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.218489" elapsed="0.000529"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.219401" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.219332" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.219449" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.219571" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.219068" elapsed="0.000575"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.219980" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.219912" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.220029" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.220147" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.219689" elapsed="0.000529"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.220553" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.220485" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.220601" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.220718" elapsed="0.000050"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.220265" elapsed="0.000527"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.221127" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.221060" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.221176" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.221296" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.220839" elapsed="0.000529"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.221693" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.221626" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.221742" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.221862" elapsed="0.000046"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.221414" elapsed="0.000518"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.215679" elapsed="0.006271"/>
</kw>
<var name="${ticker}">{'t': 1779971244638, 's': 'avax_usdt', 'c': '8.774', 'h': '9.288', 'l': '8.709', 'a': '1193547', 'v': '1074685', 'o': '9.196', 'r': '-0.0458'}</var>
<status status="PASS" start="2026-05-28T20:27:26.215615" elapsed="0.006345"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222151" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222240" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222326" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222411" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222496" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222579" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222668" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222754" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.222840" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.223151" elapsed="0.000066"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.223256" elapsed="0.000061"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.223420" level="INFO">${timestamp_str} = 1779971244429</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.223357" elapsed="0.000073"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.223730" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.223759" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.223468" elapsed="0.000300"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.223806" elapsed="0.000085"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.222938" elapsed="0.000974"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.224170" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.224294" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.224254" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.224346" elapsed="0.000048"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.223957" elapsed="0.000457"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.224744" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.224676" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.224792" elapsed="0.000078"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.224913" elapsed="0.000048"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.224458" elapsed="0.000526"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.225317" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.225250" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.225366" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.225485" elapsed="0.000048"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.225030" elapsed="0.000538"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.225905" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.225838" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.225954" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.226072" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.225615" elapsed="0.000529"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.226477" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.226410" elapsed="0.000076"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.226525" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.226644" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.226191" elapsed="0.000525"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.227049" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.226981" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.227097" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.227215" elapsed="0.000048"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.226762" elapsed="0.000525"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.227622" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.227554" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.227669" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.227787" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.227333" elapsed="0.000525"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.228189" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.228122" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.228237" elapsed="0.000064"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.228345" elapsed="0.000047"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.227905" elapsed="0.000509"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.222054" elapsed="0.006378"/>
</kw>
<var name="${ticker}">{'t': 1779971244429, 's': 'aave_usdt', 'c': '80.20', 'h': '87.00', 'l': '79.90', 'a': '1197912', 'v': '9940509', 'o': '85.60', 'r': '-0.0630'}</var>
<status status="PASS" start="2026-05-28T20:27:26.221992" elapsed="0.006450"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.228678" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.228766" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.228853" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.228939" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.229026" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.229120" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.229206" elapsed="0.000047"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.229292" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.229378" elapsed="0.000046"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.229687" elapsed="0.000065"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.229793" elapsed="0.000063"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.229958" level="INFO">${timestamp_str} = 1779971244643</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.229897" elapsed="0.000070"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.230045" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.230072" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.230006" elapsed="0.000074"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.230118" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.229475" elapsed="0.000749"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.230481" elapsed="0.000047"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.230607" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.230567" elapsed="0.000055"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.230660" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.230269" elapsed="0.000460"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.231064" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.230996" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.231115" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.231232" elapsed="0.000048"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.230774" elapsed="0.000530"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.231644" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.231575" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.231692" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.231809" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.231350" elapsed="0.000531"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.232220" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.232153" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.232268" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.232386" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.231928" elapsed="0.000530"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.232838" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.232727" elapsed="0.000121"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.232887" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.233006" elapsed="0.000049"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.232504" elapsed="0.000586"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.233428" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.233360" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.233475" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.233593" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.233137" elapsed="0.000528"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.234004" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.233936" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.234052" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.234171" elapsed="0.000049"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.233712" elapsed="0.000531"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.234569" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.234501" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.234617" elapsed="0.000063"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.234723" elapsed="0.000046"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.234289" elapsed="0.000503"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.228536" elapsed="0.006274"/>
</kw>
<var name="${ticker}">{'t': 1779971244643, 's': 'crv_usdt', 'c': '0.2100', 'h': '0.2231', 'l': '0.2072', 'a': '11971169', 'v': '2570509', 'o': '0.2187', 'r': '-0.0397'}</var>
<status status="PASS" start="2026-05-28T20:27:26.228474" elapsed="0.006347"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235010" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235099" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235186" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235272" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235357" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235441" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235526" elapsed="0.000049"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235612" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.235699" elapsed="0.000048"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.236015" elapsed="0.000066"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.236121" elapsed="0.000062"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.236285" level="INFO">${timestamp_str} = 1779971244771</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.236223" elapsed="0.000071"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.236375" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.236402" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.236334" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.236449" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.235799" elapsed="0.000763"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.236824" elapsed="0.000048"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.236950" level="INFO">Length is 8.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.236910" elapsed="0.000100"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.237049" elapsed="0.000050"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.236608" elapsed="0.000513"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.237458" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.237390" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.237507" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.237626" elapsed="0.000048"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.237167" elapsed="0.000530"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.238038" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.237969" elapsed="0.000080"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.238088" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.238207" elapsed="0.000050"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.237743" elapsed="0.000538"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.238628" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.238560" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.238676" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.238793" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.238330" elapsed="0.000535"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.239203" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.239136" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.239253" elapsed="0.000075"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.239371" elapsed="0.000048"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.238912" elapsed="0.000530"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.239776" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.239709" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.239824" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.239941" elapsed="0.000049"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.239489" elapsed="0.000523"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.240345" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.240278" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.240394" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.240511" elapsed="0.000047"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.240058" elapsed="0.000535"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.240923" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.240855" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.240972" elapsed="0.000069"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.241084" elapsed="0.000046"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.240640" elapsed="0.000513"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.234913" elapsed="0.006258"/>
</kw>
<var name="${ticker}">{'t': 1779971244771, 's': 'inj_usdt', 'c': '5.326', 'h': '5.844', 'l': '5.302', 'a': '1196164', 'v': '6593238', 'o': '5.817', 'r': '-0.0844'}</var>
<status status="PASS" start="2026-05-28T20:27:26.234851" elapsed="0.006331"/>
</iter>
<iter>
<kw name="验证Ticker数据结构">
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>t</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.241371" elapsed="0.000051"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>s</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.241461" elapsed="0.000053"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>c</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.241554" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>h</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.241641" elapsed="0.000045"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>l</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.241725" elapsed="0.000103"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>a</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.241867" elapsed="0.000050"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>v</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.241954" elapsed="0.000048"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>o</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.242040" elapsed="0.000046"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${ticker}</arg>
<arg>r</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.242124" elapsed="0.000047"/>
</kw>
<kw name="验证Ticker时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance(${timestamp}, int)</arg>
<arg>时间戳应该是整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.242446" elapsed="0.000072"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该大于0</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.242559" elapsed="0.000081"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.242743" level="INFO">${timestamp_str} = 1779971244429</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.242681" elapsed="0.000072"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.242833" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:26.242859" level="INFO">${timestamp_length} = 13</msg>
<var>${timestamp_length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:26.242793" elapsed="0.000075"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp_length} &gt;= 10</arg>
<arg>时间戳长度应该至少10位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.242906" elapsed="0.000084"/>
</kw>
<arg>${ticker['t']}</arg>
<doc>验证Ticker时间戳格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.242221" elapsed="0.000790"/>
</kw>
<kw name="验证交易对符号格式">
<kw name="Should Be String" owner="String">
<arg>${symbol}</arg>
<doc>Fails if the given ``item`` is not a string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.243270" elapsed="0.000046"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.243395" level="INFO">Length is 9.</msg>
<arg>${symbol}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.243354" elapsed="0.000057"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<arg>${symbol}</arg>
<arg>_</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:26.243448" elapsed="0.000049"/>
</kw>
<arg>${ticker['s']}</arg>
<doc>验证交易对符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.243057" elapsed="0.000461"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.243859" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.243790" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.243907" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.244027" elapsed="0.000050"/>
</kw>
<arg>${ticker['c']}</arg>
<arg>最新价格</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.243566" elapsed="0.000534"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.244447" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.244378" elapsed="0.000079"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.244495" elapsed="0.000079"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.244617" elapsed="0.000049"/>
</kw>
<arg>${ticker['h']}</arg>
<arg>最高价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.244154" elapsed="0.000536"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.245041" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.244967" elapsed="0.000084"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.245090" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.245209" elapsed="0.000049"/>
</kw>
<arg>${ticker['l']}</arg>
<arg>最低价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.244737" elapsed="0.000544"/>
</kw>
<kw name="验证价格字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.245617" level="INFO">${price_type} = float</msg>
<var>${price_type}</var>
<arg>type(${price}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.245550" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${price_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.245665" elapsed="0.000074"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${price_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${price}.replace('.', '').replace('-', '').isdigit() or ${price} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.245788" elapsed="0.000051"/>
</kw>
<arg>${ticker['o']}</arg>
<arg>开盘价</arg>
<doc>验证价格字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.245327" elapsed="0.000535"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.246243" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.246131" elapsed="0.000122"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.246292" elapsed="0.000080"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.246415" elapsed="0.000048"/>
</kw>
<arg>${ticker['a']}</arg>
<arg>成交额</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.245908" elapsed="0.000578"/>
</kw>
<kw name="验证数量字段格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.246823" level="INFO">${amount_type} = int</msg>
<var>${amount_type}</var>
<arg>type(${amount}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.246755" elapsed="0.000077"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${amount_type}' in ['str', 'int', 'float']</arg>
<arg>${field_name}应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.246871" elapsed="0.000076"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${amount_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${amount}.replace('.', '').isdigit() or ${amount} == '0'</arg>
<arg>${field_name}字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.246989" elapsed="0.000048"/>
</kw>
<arg>${ticker['v']}</arg>
<arg>成交量</arg>
<doc>验证数量字段格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.246532" elapsed="0.000528"/>
</kw>
<kw name="验证涨跌幅格式">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.247389" level="INFO">${rate_type} = float</msg>
<var>${rate_type}</var>
<arg>type(${rate}).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.247321" elapsed="0.000078"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>'${rate_type}' in ['str', 'int', 'float']</arg>
<arg>涨跌幅应该是字符串或数字类型</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.247438" elapsed="0.000069"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${rate_type}' == 'str'</arg>
<arg>Should Be True</arg>
<arg>${rate}.replace('.', '').replace('-', '').isdigit() or ${rate} == '0'</arg>
<arg>涨跌幅字符串应该是有效数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.247553" elapsed="0.000048"/>
</kw>
<arg>${ticker['r']}</arg>
<doc>验证涨跌幅格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.247107" elapsed="0.000517"/>
</kw>
<arg>${ticker}</arg>
<doc>验证单个Ticker数据的结构和格式</doc>
<status status="PASS" start="2026-05-28T20:27:26.241274" elapsed="0.006369"/>
</kw>
<var name="${ticker}">{'t': 1779971244429, 's': 'paxg_usdt', 'c': '4386.65', 'h': '4464.37', 'l': '4371.65', 'a': '138754', 'v': '613417', 'o': '4457.77', 'r': '-0.0159'}</var>
<status status="PASS" start="2026-05-28T20:27:26.241212" elapsed="0.006441"/>
</iter>
<var>${ticker}</var>
<value>@{tickers_list}</value>
<status status="PASS" start="2026-05-28T20:27:25.882377" elapsed="0.365287"/>
</for>
<doc>验证期货U本位Tickers接口功能（仅交割交易对）</doc>
<tag>future-u</tag>
<status status="PASS" start="2026-05-28T20:27:25.745756" elapsed="0.501962"/>
</test>
<doc>期货U本位Tickers接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:24.399753" elapsed="1.848102"/>
</suite>
<status status="PASS" start="2026-05-28T20:27:14.843823" elapsed="11.404460"/>
</suite>
<status status="PASS" start="2026-05-28T20:27:14.214033" elapsed="12.034612"/>
</suite>
<suite id="s1-s3" name="Invite" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/invite">
<suite id="s1-s3-s1" name="Profit Analysis" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/invite/profit_analysis.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.251375" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:26.251302" elapsed="0.000083"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.251491" elapsed="0.000008"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.251419" elapsed="0.000093"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.251604" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.251555" elapsed="0.000121"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.251520" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.251410" elapsed="0.000286"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.251939" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.251893" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.252037" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.252084" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.252126" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.252169" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.252211" elapsed="0.000006"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.251979" elapsed="0.000249"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.252373" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.252294" elapsed="0.000095"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.252507" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.252429" elapsed="0.000095"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.252640" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.252565" elapsed="0.000089"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.252769" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.252694" elapsed="0.000090"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.252903" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.252824" elapsed="0.000093"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.253037" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.252957" elapsed="0.000095"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.253171" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.253091" elapsed="0.000094"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.253302" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.253223" elapsed="0.000093"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.253436" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.253355" elapsed="0.000097"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.252237" elapsed="0.001229"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253516" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253562" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253604" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253645" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253687" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253741" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253787" elapsed="0.000007"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253829" elapsed="0.000006"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.253870" elapsed="0.000006"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.253475" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.251973" elapsed="0.001921"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.253991" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.253928" elapsed="0.000082"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:26.254156" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:26.254052" elapsed="0.000174"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:26.251801" elapsed="0.002449"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.254323" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.254289" elapsed="0.000049"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:26.251219" elapsed="0.003138"/>
</kw>
<test id="s1-s3-s1-t1" name="获取用户收益信息" line="13">
<kw name="Set Log Level" owner="BuiltIn">
<arg>INFO</arg>
<doc>Sets the log threshold to the specified level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.254822" elapsed="0.000093"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.255036" level="INFO">${access_token} = </msg>
<var>${access_token}</var>
<arg>\${ACCESS_TOKEN}</arg>
<arg>${EMPTY}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:26.254964" elapsed="0.000081"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.255154" level="INFO">${refresh_token} = </msg>
<var>${refresh_token}</var>
<arg>\${REFRESH_TOKEN}</arg>
<arg>${EMPTY}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:26.255087" elapsed="0.000076"/>
</kw>
<if>
<branch type="IF" condition="'${access_token}' == '${EMPTY}' or '${refresh_token}' == '${EMPTY}'">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.255586" level="INFO">${env} = prod</msg>
<var>${env}</var>
<arg>\${TEST_ENV}</arg>
<arg>bitradex_test</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:26.255517" elapsed="0.000079"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.255704" level="INFO">${token_file} = /Users/lihu/.jenkins/workspace/bitradex-api-automation/.bitradex_tokens_prod.json</msg>
<var>${token_file}</var>
<arg>${EXECDIR}/.bitradex_tokens_${env}.json</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:26.255636" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-05-28T20:27:26.255906" level="FAIL">File '/Users/lihu/.jenkins/workspace/bitradex-api-automation/.bitradex_tokens_prod.json' does not exist.</msg>
<arg>${token_file}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-05-28T20:27:26.255812" elapsed="0.000124">File '/Users/lihu/.jenkins/workspace/bitradex-api-automation/.bitradex_tokens_prod.json' does not exist.</status>
</kw>
<msg time="2026-05-28T20:27:26.255973" level="INFO">${token_file_exists} = False</msg>
<var>${token_file_exists}</var>
<arg>File Should Exist</arg>
<arg>${token_file}</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:26.255756" elapsed="0.000226"/>
</kw>
<if>
<branch type="IF" condition="not ${token_file_exists}">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.256128" level="INFO">${token_file} = /Users/lihu/.jenkins/workspace/bitradex-api-automation/.bitradex_tokens_prod.json</msg>
<var>${token_file}</var>
<arg>${TOKEN_FILE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:26.256071" elapsed="0.000066"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-05-28T20:27:26.256295" level="FAIL">File '/Users/lihu/.jenkins/workspace/bitradex-api-automation/.bitradex_tokens_prod.json' does not exist.</msg>
<arg>${token_file}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-05-28T20:27:26.256227" elapsed="0.000089">File '/Users/lihu/.jenkins/workspace/bitradex-api-automation/.bitradex_tokens_prod.json' does not exist.</status>
</kw>
<msg time="2026-05-28T20:27:26.256348" level="INFO">${token_file_exists} = False</msg>
<var>${token_file_exists}</var>
<arg>File Should Exist</arg>
<arg>${token_file}</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:26.256178" elapsed="0.000179"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.256009" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.256002" elapsed="0.000376"/>
</if>
<if>
<branch type="IF" condition="not ${token_file_exists}">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.256510" level="INFO">${token_file} = /Users/lihu/.bitradex_tokens.json</msg>
<var>${token_file}</var>
<arg>%{HOME}/.bitradex_tokens.json</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:26.256454" elapsed="0.000065"/>
</kw>
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-05-28T20:27:26.256610" level="INFO" html="true">File '&lt;a href="file:///Users/lihu/.bitradex_tokens.json"&gt;/Users/lihu/.bitradex_tokens.json&lt;/a&gt;' exists.</msg>
<arg>${token_file}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="PASS" start="2026-05-28T20:27:26.256556" elapsed="0.000070"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.256397" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.256391" elapsed="0.000255"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-05-28T20:27:26.256742" level="INFO" html="true">Getting file '&lt;a href="file:///Users/lihu/.bitradex_tokens.json"&gt;/Users/lihu/.bitradex_tokens.json&lt;/a&gt;'.</msg>
<msg time="2026-05-28T20:27:26.257992" level="INFO">${token_text} = {
  "accessToken": "eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJhdXRoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3V...</msg>
<var>${token_text}</var>
<arg>${token_file}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-05-28T20:27:26.256692" elapsed="0.001311"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.258167" level="INFO">${token_json} = {'accessToken': 'eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJhdXRoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudE...</msg>
<var>${token_json}</var>
<arg>json.loads($token_text)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.258046" elapsed="0.000131"/>
</kw>
<if>
<branch type="IF" condition="'${access_token}' == '${EMPTY}'">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:26.258473" level="INFO">${access_token} = eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJhdXRoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMSIsInV...</msg>
<var>${access_token}</var>
<arg>${token_json}</arg>
<arg>accessToken</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.258407" elapsed="0.000077"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.258204" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.258197" elapsed="0.000310"/>
</if>
<if>
<branch type="IF" condition="'${refresh_token}' == '${EMPTY}'">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:26.258786" level="INFO">${refresh_token} = eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJyZWZyZXNoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMSI...</msg>
<var>${refresh_token}</var>
<arg>${token_json}</arg>
<arg>refreshToken</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.258722" elapsed="0.000074"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.258526" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.258520" elapsed="0.000298"/>
</if>
<status status="PASS" start="2026-05-28T20:27:26.255189" elapsed="0.003637"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.255183" elapsed="0.003650"/>
</if>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.258911" level="INFO">Length is 543.</msg>
<arg>${access_token}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.258866" elapsed="0.000060"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.259007" level="INFO">Length is 547.</msg>
<arg>${refresh_token}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:26.258963" elapsed="0.000060"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${access_token}' == 'REPLACE_ME'</arg>
<arg>Fail</arg>
<arg>accessToken 未配置，请修改 ${TOKEN_FILE} 中的 accessToken</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.259064" elapsed="0.000053"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>'${refresh_token}' == 'REPLACE_ME'</arg>
<arg>Fail</arg>
<arg>refreshToken 未配置，请修改 ${TOKEN_FILE} 中的 refreshToken</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:26.259164" elapsed="0.000049"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.259309" level="INFO">${user_id} = </msg>
<var>${user_id}</var>
<arg>${USER_ID}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:26.259255" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="'${user_id}' == '${EMPTY}'">
<kw name="Split String" owner="String">
<msg time="2026-05-28T20:27:26.259601" level="INFO">${parts} = ['eyJhbGciOiJSUzI1NiJ9', 'eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJhdXRoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMS...</msg>
<var>${parts}</var>
<arg>${access_token}</arg>
<arg>.</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.259535" elapsed="0.000076"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.259858" level="INFO">${payload_b64} = eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJhdXRoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMSIsInVzZXJOYW1lIjoiYngwMDFA...</msg>
<var>${payload_b64}</var>
<arg>${parts[1]}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:26.259652" elapsed="0.000216"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.260082" level="INFO">${payload} = {'accountId': '58661579376', 'sub': 'bx001@yopmail.net', 'scope': 'auth', 'lastAuthTime': 1776349146309, 'signType': 'UP', 'accountLevel': '1', 'userName': 'bx001@yopmail.net', 'exp': 1778941146, 'dev...</msg>
<var>${payload}</var>
<arg>__import__('json').loads(__import__('base64').urlsafe_b64decode(($payload_b64 + '=' * (-len($payload_b64) % 4)).encode('utf-8')).decode('utf-8'))</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:26.259909" elapsed="0.000183"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${payload}</arg>
<arg>userId</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.260186" elapsed="0.000054"/>
</kw>
<msg time="2026-05-28T20:27:26.260271" level="INFO">${has_user_id} = True</msg>
<var>${has_user_id}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${payload}</arg>
<arg>userId</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:26.260136" elapsed="0.000144"/>
</kw>
<if>
<branch type="IF" condition="${has_user_id}">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.260551" level="INFO">${user_id} = 58661579376</msg>
<var>${user_id}</var>
<arg>${payload['userId']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:26.260356" elapsed="0.000205"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.260305" elapsed="0.000269"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${user_id}</var>
<arg>${payload['accountId']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.260618" elapsed="0.000007"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.260582" elapsed="0.000055"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.260299" elapsed="0.000345"/>
</if>
<status status="PASS" start="2026-05-28T20:27:26.259343" elapsed="0.001308"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.259337" elapsed="0.001331"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.260767" level="INFO">${user_id} = 58661579376</msg>
<var>${user_id}</var>
<arg>${user_id}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:26.260702" elapsed="0.000074"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.260911" level="INFO">&amp;{params} = { user-id=58661579376 }</msg>
<var>&amp;{params}</var>
<arg>user-id=${user_id}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.260820" elapsed="0.000101"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.261403" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.2.7(7051);iPhone | app-version-name=1.2.7 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7051 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.261159" elapsed="0.000255"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.261658" elapsed="0.000084"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.261459" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.261453" elapsed="0.000313"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:26.261779" elapsed="0.000012"/>
</return>
<msg time="2026-05-28T20:27:26.261856" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.2.7(7051);iPhone', 'app-version-name': '1.2.7', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<arg>app_version=1.2.7</arg>
<arg>build_code=7051</arg>
<arg>token=${access_token}</arg>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:26.260995" elapsed="0.000871"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>uid=${user_id}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.261906" elapsed="0.000065"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:26.772883" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/invite/public/user-team/profit/user?user-id=58661579376 
 path_url=/v1/invite/public/user-team/profit/user?user-id=58661579376 
 headers={'user-agent': 'BitradeX-Prod 1.2.7(7051);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.2.7', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7051', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi', 'authorization': 'Bearer eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJhdXRoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMSIsInVzZXJOYW1lIjoiYngwMDFAeW9wbWFpbC5uZXQiLCJleHAiOjE3Nzg5NDExNDYsImRldmljZSI6ImFwcCIsInVzZXJJZCI6NTg2NjE1NzkzNzYsInVzZXJDb2RlIjoiNTY3NGE3OGVjOWQ2ZjM3YmYyM2EwZWYxNWU0MDcxZjQifQ.KasfzVllhRMOWJ898b1ynWHBLpJZulHCGZuOqdTXBC65cya1UuG8BuoRXAECLO-qZO2pM0Ce5uPRSPqNaLdhu7qPfF0zIzRGGJi81cSMj9R1VNEctARZH55L8TttgYW66o0KP3kIXTBVQPwFfcGSG8qtOLt3b-ohbCH3IW373FY', 'token': 'eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJhdXRoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMSIsInVzZXJOYW1lIjoiYngwMDFAeW9wbWFpbC5uZXQiLCJleHAiOjE3Nzg5NDExNDYsImRldmljZSI6ImFwcCIsInVzZXJJZCI6NTg2NjE1NzkzNzYsInVzZXJDb2RlIjoiNTY3NGE3OGVjOWQ2ZjM3YmYyM2EwZWYxNWU0MDcxZjQifQ.KasfzVllhRMOWJ898b1ynWHBLpJZulHCGZuOqdTXBC65cya1UuG8BuoRXAECLO-qZO2pM0Ce5uPRSPqNaLdhu7qPfF0zIzRGGJi81cSMj9R1VNEctARZH55L8TttgYW66o0KP3kIXTBVQPwFfcGSG8qtOLt3b-ohbCH3IW373FY', 'uid': '58661579376'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:26.773286" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/invite/public/user-team/profit/user?user-id=58661579376 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:26 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '2959f8aaaf0531a31f76d92bff662f7e', 'X-Transparent': '00-2959f8aaaf0531a31f76d92bff662f7e-2d6ff306782efe60-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40e37edbd51b-NRT'} 
 body={"code":401,"msg":"登录失效，请重试","msgInfo":{"template":"Token expire."},"ts":1779971246648} 
 </msg>
<msg time="2026-05-28T20:27:26.773467" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:26.773876" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>/v1/invite/public/user-team/profit/user</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=any</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:26.262012" elapsed="0.511930"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${response.json()}</arg>
<arg>code</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.774966" elapsed="0.001570"/>
</kw>
<msg time="2026-05-28T20:27:26.776752" level="INFO">${has_code} = True</msg>
<var>${has_code}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${response.json()}</arg>
<arg>code</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:26.774488" elapsed="0.002322"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.778427" level="INFO">${biz_code} = </msg>
<var>${biz_code}</var>
<arg>${EMPTY}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:26.777104" elapsed="0.001376"/>
</kw>
<if>
<branch type="IF" condition="${has_code}">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.780435" level="INFO">${biz_code} = 401</msg>
<var>${biz_code}</var>
<arg>${response.json()['code']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:26.779151" elapsed="0.001339"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.778791" elapsed="0.001784"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.778727" elapsed="0.001908"/>
</if>
<if>
<branch type="IF" condition="${response.status_code} == 401 or '${biz_code}' == '401'">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="刷新Token并重试" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.784278" level="INFO">Token已过期，尝试使用refreshToken刷新...</msg>
<arg>Token已过期，尝试使用refreshToken刷新...</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.784115" elapsed="0.000243"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.786984" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.2.7(7050);iPhone | app-version-name=1.2.7 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7050 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.785950" elapsed="0.001074"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.787896" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.787201" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.787174" elapsed="0.000836"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:26.788060" elapsed="0.000065"/>
</return>
<msg time="2026-05-28T20:27:26.788369" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.2.7(7050);iPhone', 'app-version-name': '1.2.7', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<arg>app_version=1.2.7</arg>
<arg>build_code=7050</arg>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:26.784662" elapsed="0.003742"/>
</kw>
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:26.914948" level="INFO">POST Request : url=https://app.bitradex.mobi/v1/uaa/authorize/token/refresh?refreshToken=eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJyZWZyZXNoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMSIsInVzZXJOYW1lIjoiYngwMDFAeW9wbWFpbC5uZXQiLCJleHAiOjE3Nzg5NDExNDYsImRldmljZSI6ImFwcCIsInVzZXJJZCI6NTg2NjE1NzkzNzYsInVzZXJDb2RlIjoiNTY3NGE3OGVjOWQ2ZjM3YmYyM2EwZWYxNWU0MDcxZjQifQ.opUYcgzMB-LCny9qGTiC-KMdtCukzJwtQaHPmWXPU5LMDRQCyW1-W_1kVNDAOws2lWsbI_w3szoJ0Ail8yUZx2mp3VkdjxRzyLhvTKPmS4r6wekhKUS8JWYYKotoeJbwu7i0RS3cn-DZ5pKqKG-dsTPjwiKl1pVaKGb43GoKFqU 
 path_url=/v1/uaa/authorize/token/refresh?refreshToken=eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJyZWZyZXNoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMSIsInVzZXJOYW1lIjoiYngwMDFAeW9wbWFpbC5uZXQiLCJleHAiOjE3Nzg5NDExNDYsImRldmljZSI6ImFwcCIsInVzZXJJZCI6NTg2NjE1NzkzNzYsInVzZXJDb2RlIjoiNTY3NGE3OGVjOWQ2ZjM3YmYyM2EwZWYxNWU0MDcxZjQifQ.opUYcgzMB-LCny9qGTiC-KMdtCukzJwtQaHPmWXPU5LMDRQCyW1-W_1kVNDAOws2lWsbI_w3szoJ0Ail8yUZx2mp3VkdjxRzyLhvTKPmS4r6wekhKUS8JWYYKotoeJbwu7i0RS3cn-DZ5pKqKG-dsTPjwiKl1pVaKGb43GoKFqU 
 headers={'user-agent': 'BitradeX-Prod 1.2.7(7050);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.2.7', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7050', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi', 'Content-Length': '4'} 
 body=b'"{}"' 
 </msg>
<msg time="2026-05-28T20:27:26.915232" level="INFO">POST Response : url=https://app.bitradex.mobi/v1/uaa/authorize/token/refresh?refreshToken=eyJhbGciOiJSUzI1NiJ9.eyJhY2NvdW50SWQiOiI1ODY2MTU3OTM3NiIsInN1YiI6ImJ4MDAxQHlvcG1haWwubmV0Iiwic2NvcGUiOiJyZWZyZXNoIiwibGFzdEF1dGhUaW1lIjoxNzc2MzQ5MTQ2MzA5LCJzaWduVHlwZSI6IlVQIiwiYWNjb3VudExldmVsIjoiMSIsInVzZXJOYW1lIjoiYngwMDFAeW9wbWFpbC5uZXQiLCJleHAiOjE3Nzg5NDExNDYsImRldmljZSI6ImFwcCIsInVzZXJJZCI6NTg2NjE1NzkzNzYsInVzZXJDb2RlIjoiNTY3NGE3OGVjOWQ2ZjM3YmYyM2EwZWYxNWU0MDcxZjQifQ.opUYcgzMB-LCny9qGTiC-KMdtCukzJwtQaHPmWXPU5LMDRQCyW1-W_1kVNDAOws2lWsbI_w3szoJ0Ail8yUZx2mp3VkdjxRzyLhvTKPmS4r6wekhKUS8JWYYKotoeJbwu7i0RS3cn-DZ5pKqKG-dsTPjwiKl1pVaKGb43GoKFqU 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:26 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'Cache-Control': 'no-cache, no-store, max-age=0, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0', 'Strict-Transport-Security': 'max-age=31536000 ; includeSubDomains', 'X-Frame-Options': 'DENY', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'd4ffb99fc77e7691fc6ec80149a98cd2', 'X-Transparent': '00-d4ffb99fc77e7691fc6ec80149a98cd2-5f69dfb45e4c846e-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40e508e7d51b-NRT'} 
 body={"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899} 
 </msg>
<msg time="2026-05-28T20:27:26.915364" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:26.915670" level="INFO">${resp} = &lt;Response [200]&gt;</msg>
<var>${resp}</var>
<arg>api_session</arg>
<arg>url=/v1/uaa/authorize/token/refresh?refreshToken=${refresh_token}</arg>
<arg>headers=${headers}</arg>
<arg>json={}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:26.788554" elapsed="0.127153"/>
</kw>
<if>
<branch type="IF" condition="${resp.status_code} == 200 and ${resp.json()['code']} == 0">
<kw name="Set Variable" owner="BuiltIn">
<var>${new_access_token}</var>
<arg>${resp.json()['data']['accessToken']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.917437" elapsed="0.000069"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${new_refresh_token}</var>
<arg>${resp.json()['data']['refreshToken']}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.917850" elapsed="0.000040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>Token刷新成功！</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.918118" elapsed="0.000037"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ACCESS_TOKEN}</arg>
<arg>${new_access_token}</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.918420" elapsed="0.000038"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${REFRESH_TOKEN}</arg>
<arg>${new_refresh_token}</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.918670" elapsed="0.000035"/>
</kw>
<kw name="获取统一请求头" owner="common">
<var>${new_headers}</var>
<arg>token=${new_access_token}</arg>
<doc>获取统一的应用请求头配置</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.919331" elapsed="0.000077"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<var>${has_user_id}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${params}</arg>
<arg>user-id</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.919653" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="${has_user_id}">
<kw name="Set To Dictionary" owner="Collections">
<arg>${new_headers}</arg>
<arg>uid=${params['user-id']}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.920079" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.919867" elapsed="0.000333"/>
</branch>
<status status="NOT RUN" start="2026-05-28T20:27:26.919825" elapsed="0.000446"/>
</if>
<if>
<branch type="IF" condition="'${method}' == 'GET'">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${final_resp}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${new_headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.920599" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.920392" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${final_resp}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>json=${params}</arg>
<arg>headers=${new_headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.920983" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.920778" elapsed="0.000336"/>
</branch>
<status status="NOT RUN" start="2026-05-28T20:27:26.920358" elapsed="0.000801"/>
</if>
<return>
<value>${final_resp}</value>
<status status="NOT RUN" start="2026-05-28T20:27:26.921241" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-05-28T20:27:26.915950" elapsed="0.005399"/>
</branch>
<branch type="ELSE">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.923184" level="FAIL">Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</msg>
<arg>Token刷新失败: ${resp.text}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-05-28T20:27:26.921605" elapsed="0.001751">Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</kw>
<status status="FAIL" start="2026-05-28T20:27:26.921398" elapsed="0.002111">Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</branch>
<status status="FAIL" start="2026-05-28T20:27:26.915886" elapsed="0.007688">Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</if>
<arg>/v1/invite/public/user-team/profit/user</arg>
<arg>${refresh_token}</arg>
<arg>params=${params}</arg>
<doc>当Token过期时，自动使用refreshToken刷新并重试请求</doc>
<status status="FAIL" start="2026-05-28T20:27:26.783277" elapsed="0.140533">Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</kw>
<msg time="2026-05-28T20:27:26.924119" level="INFO">${refresh_status} = FAIL</msg>
<msg time="2026-05-28T20:27:26.924216" level="INFO">${refresh_result} = Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</msg>
<var>${refresh_status}</var>
<var>${refresh_result}</var>
<arg>刷新Token并重试</arg>
<arg>/v1/invite/public/user-team/profit/user</arg>
<arg>${refresh_token}</arg>
<arg>params=${params}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-05-28T20:27:26.782087" elapsed="0.142197"/>
</kw>
<if>
<branch type="IF" condition="'${refresh_status}' == 'PASS'">
<kw name="Set Variable" owner="BuiltIn">
<var>${response}</var>
<arg>${refresh_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.924842" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.924467" elapsed="0.000494"/>
</branch>
<branch type="ELSE">
<kw name="Skip" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.925646" level="SKIP">Token已失效且refreshToken不可用: Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</msg>
<arg>Token已失效且refreshToken不可用: ${refresh_result}</arg>
<doc>Skips the rest of the current test.</doc>
<status status="SKIP" start="2026-05-28T20:27:26.925224" elapsed="0.000564">Token已失效且refreshToken不可用: Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</kw>
<status status="SKIP" start="2026-05-28T20:27:26.925009" elapsed="0.000886">Token已失效且refreshToken不可用: Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</branch>
<status status="SKIP" start="2026-05-28T20:27:26.924424" elapsed="0.001527">Token已失效且refreshToken不可用: Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</if>
<status status="SKIP" start="2026-05-28T20:27:26.780768" elapsed="0.145275">Token已失效且refreshToken不可用: Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</branch>
<status status="SKIP" start="2026-05-28T20:27:26.780729" elapsed="0.145381">Token已失效且refreshToken不可用: Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</if>
<kw name="验证接口响应成功" owner="common">
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.926486" elapsed="0.000056"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<var>${env}</var>
<arg>\${TEST_ENV}</arg>
<arg>bitradex_test</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.926770" elapsed="0.000030"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${resp_json}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.927022" elapsed="0.000028"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${resp_code}</var>
<arg>${resp_json}</arg>
<arg>code</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.927224" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'bitradex_test' and ${resp_code} == 401">
<kw name="Skip" owner="BuiltIn">
<arg>测试环境该账号暂无权限/登录态不支持该接口，返回 code=401</arg>
<doc>Skips the rest of the current test.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.927507" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.927361" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-05-28T20:27:26.927336" elapsed="0.000280"/>
</if>
<kw name="验证响应字段值" owner="common">
<arg>${response}</arg>
<arg>code</arg>
<arg>${0}</arg>
<doc>验证响应JSON字段的值</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.927813" elapsed="0.000035"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.928069" elapsed="0.000040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.928274" elapsed="0.000028"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${data}</arg>
<arg>uid</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.928464" elapsed="0.000025"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${data}</arg>
<arg>level</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.928650" elapsed="0.000026"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${data}</arg>
<arg>totalEarnings</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.928820" elapsed="0.000025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>用户 ${user_id} 的总收益为: ${data['totalEarnings']}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.929006" elapsed="0.000025"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.929249" elapsed="0.000036"/>
</kw>
<kw name="本次测试简报" owner="common">
<arg>获取用户收益信息</arg>
<arg>/v1/invite/public/user-team/profit/user</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.929557" elapsed="0.000373"/>
</kw>
<doc>验证获取用户收益信息接口功能</doc>
<tag>invite</tag>
<tag>profit</tag>
<status status="SKIP" start="2026-05-28T20:27:26.254380" elapsed="0.675868">Token已失效且refreshToken不可用: Token刷新失败: {"code":909,"msg":"refreshToken错误","msgInfo":{"template":"refreshToken错误"},"ts":1779971246899}</status>
</test>
<doc>用户及团队收益分析-获取用户收益信息</doc>
<status status="SKIP" start="2026-05-28T20:27:26.249443" elapsed="0.681412"/>
</suite>
<status status="SKIP" start="2026-05-28T20:27:26.248920" elapsed="0.683776"/>
</suite>
<suite id="s1-s4" name="Spot" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot">
<suite id="s1-s4-s1" name="Balance" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/balance">
<suite id="s1-s4-s1-s1" name="Balance Currencies" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/balance/balance_currencies.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.940732" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:26.940524" elapsed="0.000235"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.941037" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.940836" elapsed="0.000253"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.941326" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.941194" elapsed="0.000176"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.941112" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.940818" elapsed="0.000600"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.942067" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.941953" elapsed="0.000155"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.942312" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.942423" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.942532" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.942641" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.942752" elapsed="0.000014"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.942166" elapsed="0.000641"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.943214" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.942962" elapsed="0.000289"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.943556" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.943347" elapsed="0.000243"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.943925" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.943727" elapsed="0.000288"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.944487" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.944195" elapsed="0.000340"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.944884" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.944653" elapsed="0.000274"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.945293" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.945047" elapsed="0.000289"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.945702" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.945455" elapsed="0.000288"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.946111" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.945861" elapsed="0.000291"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.946519" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:26.946270" elapsed="0.000291"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:26.942829" elapsed="0.003771"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.946740" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.946882" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.947008" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.947134" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.947256" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.947386" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.947504" elapsed="0.000025"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.947630" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.947747" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.946629" elapsed="0.001173"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.942150" elapsed="0.005675"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.948125" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.947932" elapsed="0.000243"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:26.948563" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:26.948299" elapsed="0.000425"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:26.941720" elapsed="0.007066"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.948969" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:26.948886" elapsed="0.000122"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:26.940284" elapsed="0.008780"/>
</kw>
<test id="s1-s4-s1-s1-t1" name="获取余额货币列表" line="7">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.950333" level="INFO">&amp;{params} = { version=4a2bb64c7fc890df605105b750aac8b3 }</msg>
<var>&amp;{params}</var>
<arg>version=4a2bb64c7fc890df605105b750aac8b3</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.950144" elapsed="0.000214"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:26.951833" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:26.951231" elapsed="0.000629"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:26.952492" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:26.952006" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:26.951989" elapsed="0.000582"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:26.952600" elapsed="0.000034"/>
</return>
<msg time="2026-05-28T20:27:26.952789" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:26.950540" elapsed="0.002273"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:27.536588" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/balance/public/currencies?version=4a2bb64c7fc890df605105b750aac8b3 
 path_url=/v1/spot/balance/public/currencies?version=4a2bb64c7fc890df605105b750aac8b3 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:27.537117" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/balance/public/currencies?version=4a2bb64c7fc890df605105b750aac8b3 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:27 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'dca82498410cd3f277e19a894776cc7e', 'X-Transparent': '00-dca82498410cd3f277e19a894776cc7e-0cedbc4b5621e1ae-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40e8efeeca53-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":{"time":1779956732250,"version":"06d4dad1f2bd9475f13574112800134b","currencies":[{"id":2,"currency":"btc","displayName":"BTC","fullName":"Bitcoin","logo":"https://static.bitradex.mobi/1/currency/1.png","cmcLink":"https://coinmarketcap.com/currencies/bitcoin/","weight":99999,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":5,"currency":"eth","displayName":"ETH","fullName":"Ethereum","logo":"https://static.bitradex.mobi/1/currency/1027.png","cmcLink":"https://coinmarketcap.com/currencies/ethereum/","weight":99998,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":11,"currency":"usdt","displayName":"USDT","fullName":"Tether USDt","logo":"https://static.bitradex.mobi/1/currency/usdtlogo.png","cmcLink":"https://coinmarketcap.com/currencies/tether/","weight":99997,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":1,"plates":[]},{"id":90,"currency":"xrp","displayName":"XRP","fullName":"XRP","logo":"https://static.bitradex.mobi/1/currency/XRP.jpg","cmcLink":"https://coinmarketcap.com/currencies/xrp/","weight":99996,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2770,"currency":"eigen","displayName":"EIGEN","fullName":"EigenLayer","logo":"https://static.bitradex.mobi/1/currency/eigenlayer-eigen-logo.png","cmcLink":null,"weight":1236,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2769,"currency":"sushi","displayName":"SUSHI","fullName":"SushiSwap","logo":"https://static.bitradex.mobi/1/currency/sushiswap-sushi-logo.png","cmcLink":null,"weight":1235,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2735,"currency":"trump","displayName":"TRUMP","fullName":"OFFICIAL TRUMP","logo":"https://static.bitradex.mobi/1/currency/TrumpCard_EnjoyMySneakers_Signiture-680_1.jpg","cmcLink":null,"weight":1234,"maxPrecision":2,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":422,"currency":"io","displayName":"IO","fullName":"io.net","logo":"https://static.bitradex.mobi/1/currency/io.png","cmcLink":null,"weight":1009,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":346,"currency":"audio","displayName":"AUDIO","fullName":"Audius","logo":"https://static.bitradex.mobi/static/img/coins/64x64/7455.png","cmcLink":null,"weight":1000,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2716,"currency":"1inch","displayName":"1INCH","fullName":"1inch Network","logo":"https://static.bitradex.mobi/static/img/coins/64x64/8104.png","cmcLink":null,"weight":999,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2805,"currency":"bxc","displayName":"BXC","fullName":"Bitcoin Classic (ARAW)","logo":"https://s2.coinmarketcap.com/static/img/coins/64x64/5168.png","cmcLink":null,"weight":999,"maxPrecision":8,"depositStatus":0,"withdrawStatus":0,"convertEnabled":0,"transferEnabled":0,"isChainExist":1,"ubcardEnabled":0,"plates":[246]},{"id":16,"currency":"dot","displayName":"DOT","fullName":"Polkadot","logo":"https://static.bitradex.mobi/1/currency/1723454083247_nynwjgobls9_polkadot-new-DOT.png","cmcLink":null,"weight":994,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":137,"currency":"bome","displayName":"BOME","fullName":"BOOK OF MEME","logo":"https://static.bitradex.mobi/1/currency/book-of-meme-bome-logo.png","cmcLink":null,"weight":990,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2765,"currency":"bera","displayName":"BERA","fullName":"Berachain","logo":"https://static.bitradex.mobi/1/currency/Bera.png","cmcLink":null,"weight":990,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[257]},{"id":2779,"currency":"btx","displayName":"BTX","fullName":"BitradexToken","logo":"https://static.bitradex.mobi/1/currency/平台币.jpg","cmcLink":null,"weight":990,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":17,"currency":"link","displayName":"LINK","fullName":"Chainlink","logo":"https://static.bitradex.mobi/1/currency/link.png","cmcLink":null,"weight":989,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2762,"currency":"act","displayName":"ACT","fullName":"Achain","logo":"https://static.bitradex.mobi/1/currency/ACT.png","cmcLink":null,"weight":989,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2761,"currency":"turbo","displayName":"TURBO","fullName":"TurboCoin","logo":"https://static.bitradex.mobi/1/currency/Turbo.png","cmcLink":null,"weight":988,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":18,"currency":"bch","displayName":"BCH","fullName":"Bitcoin Cash","logo":"https://static.bitradex.mobi/1/currency/BCH.jpg","cmcLink":null,"weight":987,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2760,"currency":"cookie","displayName":"COOKIE","fullName":"Cookie DAO","logo":"https://static.bitradex.mobi/1/currency/cookie.png","cmcLink":null,"weight":987,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":19,"currency":"near","displayName":"NEAR","fullName":"NEAR Protocol","logo":"https://static.bitradex.mobi/1/currency/usdt.png","cmcLink":null,"weight":986,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[257]},{"id":2751,"currency":"pol","displayName":"POL","fullName":"POL (prev. MATIC)","logo":"https://static.bitradex.mobi/1/currency/POL.png","cmcLink":null,"weight":986,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2750,"currency":"render","displayName":"RENDER","fullName":"Render","logo":"https://static.bitradex.mobi/1/currency/RENDER.png","cmcLink":null,"weight":984,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":23,"currency":"arb","displayName":"ARB","fullName":"ARbit","logo":"https://static.bitradex.mobi/1/currency/ARB.png","cmcLink":null,"weight":983,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2749,"currency":"ena","displayName":"ENA","fullName":"Ethena","logo":"https://static.bitradex.mobi/1/currency/ENA.png","cmcLink":null,"weight":983,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":24,"currency":"fil","displayName":"FIL","fullName":"Filecoin","logo":"https://static.bitradex.mobi/1/currency/FIL.png","cmcLink":null,"weight":982,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2748,"currency":"move","displayName":"MOVE","fullName":"Movement","logo":"https://static.bitradex.mobi/1/currency/move.png","cmcLink":null,"weight":982,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2747,"currency":"ondo","displayName":"ONDO","fullName":"Ondo","logo":"https://static.bitradex.mobi/1/currency/ondo.png","cmcLink":null,"weight":981,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":26,"currency":"imx","displayName":"IMX","fullName":"Impact","logo":"https://static.bitradex.mobi/static/img/coins/64x64/10603.png","cmcLink":null,"weight":980,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":28,"currency":"pepe","displayName":"PEPE","fullName":"Pepe","logo":"https://static.bitradex.mobi/1/currency/pepe.png","cmcLink":null,"weight":978,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":1,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":2742,"currency":"pnut","displayName":"PNUT","fullName":"Peanut the Squirrel","logo":"https://static.bitradex.mobi/1/currency/pnut.jpg","cmcLink":null,"weight":976,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"convertEnabled":0,"transferEnabled":1,"isChainExist":1,"ubcardEnabled":0,"plates":[]},{"id":37,"currency":"fet","displayName":"FET","fullName":"Artificial Superintelligence Alliance","logo":"https://static.bitradex.mobi/1/currency/fet.jpg","cmcLink":null,"weight":972,"maxPrecision":8,"depositStatus":1,"withdrawStatus":1,"... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-05-28T20:27:27.537685" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:27.538062" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>url=/v1/spot/balance/public/currencies</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=any</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:26.952910" elapsed="0.585215"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.540121" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:27.538686" elapsed="0.001579"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.544964" level="INFO">${resp_json} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': {'time': 1779956732250, 'version': '06d4dad1f2bd9475f13574112800134b', 'currencies': [{'id': 2, 'currency': 'btc', 'displayName': 'BTC', 'fullName'...</msg>
<var>${resp_json}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:27.540559" elapsed="0.004473"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${resp_json}</arg>
<arg>data</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.545306" elapsed="0.000377"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.551984" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "time": 1779956732250,
    "version": "06d4dad1f2bd9475f13574112800134b",
    "currencies": [
      {
        "id": 2,
        "curr...</msg>
<var>${json_str}</var>
<arg>json.dumps($resp_json, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:27.545945" elapsed="0.006076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.552623" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "time": 1779956732250,
    "version": "06d4dad1f2bd9475f13574112800134b",
    "currencies": [
      {
        "id": 2,
        "currency": "btc",
        "displayName": "BTC",
        "fullName": "Bitcoin",
        "logo": "https://static.bitradex.mobi/1/currency/1.png",
        "cmcLink": "https://coinmarketcap.com/currencies/bitcoin/",
        "weight": 99999,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 5,
        "currency": "eth",
        "displayName": "ETH",
        "fullName": "Ethereum",
        "logo": "https://static.bitradex.mobi/1/currency/1027.png",
        "cmcLink": "https://coinmarketcap.com/currencies/ethereum/",
        "weight": 99998,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 11,
        "currency": "usdt",
        "displayName": "USDT",
        "fullName": "Tether USDt",
        "logo": "https://static.bitradex.mobi/1/currency/usdtlogo.png",
        "cmcLink": "https://coinmarketcap.com/currencies/tether/",
        "weight": 99997,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 1,
        "plates": []
      },
      {
        "id": 90,
        "currency": "xrp",
        "displayName": "XRP",
        "fullName": "XRP",
        "logo": "https://static.bitradex.mobi/1/currency/XRP.jpg",
        "cmcLink": "https://coinmarketcap.com/currencies/xrp/",
        "weight": 99996,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2770,
        "currency": "eigen",
        "displayName": "EIGEN",
        "fullName": "EigenLayer",
        "logo": "https://static.bitradex.mobi/1/currency/eigenlayer-eigen-logo.png",
        "cmcLink": null,
        "weight": 1236,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2769,
        "currency": "sushi",
        "displayName": "SUSHI",
        "fullName": "SushiSwap",
        "logo": "https://static.bitradex.mobi/1/currency/sushiswap-sushi-logo.png",
        "cmcLink": null,
        "weight": 1235,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2735,
        "currency": "trump",
        "displayName": "TRUMP",
        "fullName": "OFFICIAL TRUMP",
        "logo": "https://static.bitradex.mobi/1/currency/TrumpCard_EnjoyMySneakers_Signiture-680_1.jpg",
        "cmcLink": null,
        "weight": 1234,
        "maxPrecision": 2,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 422,
        "currency": "io",
        "displayName": "IO",
        "fullName": "io.net",
        "logo": "https://static.bitradex.mobi/1/currency/io.png",
        "cmcLink": null,
        "weight": 1009,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 346,
        "currency": "audio",
        "displayName": "AUDIO",
        "fullName": "Audius",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/7455.png",
        "cmcLink": null,
        "weight": 1000,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2716,
        "currency": "1inch",
        "displayName": "1INCH",
        "fullName": "1inch Network",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/8104.png",
        "cmcLink": null,
        "weight": 999,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2805,
        "currency": "bxc",
        "displayName": "BXC",
        "fullName": "Bitcoin Classic (ARAW)",
        "logo": "https://s2.coinmarketcap.com/static/img/coins/64x64/5168.png",
        "cmcLink": null,
        "weight": 999,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 0,
        "convertEnabled": 0,
        "transferEnabled": 0,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          246
        ]
      },
      {
        "id": 16,
        "currency": "dot",
        "displayName": "DOT",
        "fullName": "Polkadot",
        "logo": "https://static.bitradex.mobi/1/currency/1723454083247_nynwjgobls9_polkadot-new-DOT.png",
        "cmcLink": null,
        "weight": 994,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 137,
        "currency": "bome",
        "displayName": "BOME",
        "fullName": "BOOK OF MEME",
        "logo": "https://static.bitradex.mobi/1/currency/book-of-meme-bome-logo.png",
        "cmcLink": null,
        "weight": 990,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2765,
        "currency": "bera",
        "displayName": "BERA",
        "fullName": "Berachain",
        "logo": "https://static.bitradex.mobi/1/currency/Bera.png",
        "cmcLink": null,
        "weight": 990,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          257
        ]
      },
      {
        "id": 2779,
        "currency": "btx",
        "displayName": "BTX",
        "fullName": "BitradexToken",
        "logo": "https://static.bitradex.mobi/1/currency/平台币.jpg",
        "cmcLink": null,
        "weight": 990,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 17,
        "currency": "link",
        "displayName": "LINK",
        "fullName": "Chainlink",
        "logo": "https://static.bitradex.mobi/1/currency/link.png",
        "cmcLink": null,
        "weight": 989,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2762,
        "currency": "act",
        "displayName": "ACT",
        "fullName": "Achain",
        "logo": "https://static.bitradex.mobi/1/currency/ACT.png",
        "cmcLink": null,
        "weight": 989,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2761,
        "currency": "turbo",
        "displayName": "TURBO",
        "fullName": "TurboCoin",
        "logo": "https://static.bitradex.mobi/1/currency/Turbo.png",
        "cmcLink": null,
        "weight": 988,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 18,
        "currency": "bch",
        "displayName": "BCH",
        "fullName": "Bitcoin Cash",
        "logo": "https://static.bitradex.mobi/1/currency/BCH.jpg",
        "cmcLink": null,
        "weight": 987,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2760,
        "currency": "cookie",
        "displayName": "COOKIE",
        "fullName": "Cookie DAO",
        "logo": "https://static.bitradex.mobi/1/currency/cookie.png",
        "cmcLink": null,
        "weight": 987,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 19,
        "currency": "near",
        "displayName": "NEAR",
        "fullName": "NEAR Protocol",
        "logo": "https://static.bitradex.mobi/1/currency/usdt.png",
        "cmcLink": null,
        "weight": 986,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          257
        ]
      },
      {
        "id": 2751,
        "currency": "pol",
        "displayName": "POL",
        "fullName": "POL (prev. MATIC)",
        "logo": "https://static.bitradex.mobi/1/currency/POL.png",
        "cmcLink": null,
        "weight": 986,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2750,
        "currency": "render",
        "displayName": "RENDER",
        "fullName": "Render",
        "logo": "https://static.bitradex.mobi/1/currency/RENDER.png",
        "cmcLink": null,
        "weight": 984,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 23,
        "currency": "arb",
        "displayName": "ARB",
        "fullName": "ARbit",
        "logo": "https://static.bitradex.mobi/1/currency/ARB.png",
        "cmcLink": null,
        "weight": 983,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2749,
        "currency": "ena",
        "displayName": "ENA",
        "fullName": "Ethena",
        "logo": "https://static.bitradex.mobi/1/currency/ENA.png",
        "cmcLink": null,
        "weight": 983,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 24,
        "currency": "fil",
        "displayName": "FIL",
        "fullName": "Filecoin",
        "logo": "https://static.bitradex.mobi/1/currency/FIL.png",
        "cmcLink": null,
        "weight": 982,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2748,
        "currency": "move",
        "displayName": "MOVE",
        "fullName": "Movement",
        "logo": "https://static.bitradex.mobi/1/currency/move.png",
        "cmcLink": null,
        "weight": 982,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2747,
        "currency": "ondo",
        "displayName": "ONDO",
        "fullName": "Ondo",
        "logo": "https://static.bitradex.mobi/1/currency/ondo.png",
        "cmcLink": null,
        "weight": 981,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 26,
        "currency": "imx",
        "displayName": "IMX",
        "fullName": "Impact",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/10603.png",
        "cmcLink": null,
        "weight": 980,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 28,
        "currency": "pepe",
        "displayName": "PEPE",
        "fullName": "Pepe",
        "logo": "https://static.bitradex.mobi/1/currency/pepe.png",
        "cmcLink": null,
        "weight": 978,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2742,
        "currency": "pnut",
        "displayName": "PNUT",
        "fullName": "Peanut the Squirrel",
        "logo": "https://static.bitradex.mobi/1/currency/pnut.jpg",
        "cmcLink": null,
        "weight": 976,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 37,
        "currency": "fet",
        "displayName": "FET",
        "fullName": "Artificial Superintelligence Alliance",
        "logo": "https://static.bitradex.mobi/1/currency/fet.jpg",
        "cmcLink": null,
        "weight": 972,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 36,
        "currency": "sui",
        "displayName": "SUI",
        "fullName": "Sui",
        "logo": "https://static.bitradex.mobi/1/currency/SUI.png",
        "cmcLink": null,
        "weight": 970,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2736,
        "currency": "pengu",
        "displayName": "PENGU",
        "fullName": "Pudgy Penguins",
        "logo": "https://static.bitradex.mobi/1/currency/pengu.png",
        "cmcLink": null,
        "weight": 970,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 40,
        "currency": "grt",
        "displayName": "GRT",
        "fullName": "The Graph",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/6719.png",
        "cmcLink": null,
        "weight": 966,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 46,
        "currency": "bonk",
        "displayName": "BONK",
        "fullName": "Bonk",
        "logo": "https://static.bitradex.mobi/1/currency/BONK.png",
        "cmcLink": null,
        "weight": 961,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 57,
        "currency": "jasmy",
        "displayName": "JASMY",
        "fullName": "JasmyCoin",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/8425.png",
        "cmcLink": null,
        "weight": 950,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 0,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 59,
        "currency": "cake",
        "displayName": "CAKE",
        "fullName": "PancakeSwap",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/7186.png",
        "cmcLink": null,
        "weight": 948,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          244
        ]
      },
      {
        "id": 60,
        "currency": "aave",
        "displayName": "AAVE",
        "fullName": "Aave",
        "logo": "https://static.bitradex.mobi/1/currency/AAVE.png",
        "cmcLink": null,
        "weight": 947,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 61,
        "currency": "ape",
        "displayName": "APE",
        "fullName": "ApeCoin",
        "logo": "https://static.bitradex.mobi/1/currency/ApeCoin.jpg",
        "cmcLink": null,
        "weight": 946,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 62,
        "currency": "lpt",
        "displayName": "LPT",
        "fullName": "Livepeer",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/3640.png",
        "cmcLink": null,
        "weight": 945,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 67,
        "currency": "pyth",
        "displayName": "PYTH",
        "fullName": "Pyth Network",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/28177.png",
        "cmcLink": null,
        "weight": 941,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2804,
        "currency": "g",
        "displayName": "G",
        "fullName": "Gravity",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/32120.png",
        "cmcLink": null,
        "weight": 939,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 71,
        "currency": "jup",
        "displayName": "JUP",
        "fullName": "Jupiter",
        "logo": "https://static.bitradex.mobi/1/currency/JUP.png",
        "cmcLink": null,
        "weight": 938,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2803,
        "currency": "kmno",
        "displayName": "KMNO",
        "fullName": null,
        "logo": "https://bitradex-prod-public.s3.ap-northeast-1.amazonaws.com/1/currency/KMNO.png",
        "cmcLink": null,
        "weight": 938,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2802,
        "currency": "acx",
        "displayName": "ACX",
        "fullName": null,
        "logo": "https://bitradex-prod-public.s3.ap-northeast-1.amazonaws.com/1/currency/22620.png",
        "cmcLink": null,
        "weight": 937,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2801,
        "currency": "axl",
        "displayName": "AXL",
        "fullName": null,
        "logo": "https://bitradex-prod-public.s3.ap-northeast-1.amazonaws.com/1/currency/AXL.png",
        "cmcLink": null,
        "weight": 936,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2800,
        "currency": "awe",
        "displayName": "AWE",
        "fullName": null,
        "logo": "https://bitradex-prod-public.s3.ap-northeast-1.amazonaws.com/1/currency/4006.png",
        "cmcLink": null,
        "weight": 935,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2799,
        "currency": "hmstr",
        "displayName": "HMSTR",
        "fullName": null,
        "logo": null,
        "cmcLink": null,
        "weight": 934,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 74,
        "currency": "qnt",
        "displayName": "QNT",
        "fullName": "Quant",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/3155.png",
        "cmcLink": null,
        "weight": 933,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2798,
        "currency": "tut",
        "displayName": "TUT",
        "fullName": null,
        "logo": "https://bitradex-prod-public.s3.ap-northeast-1.amazonaws.com/1/currency/TUT.png",
        "cmcLink": null,
        "weight": 933,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 77,
        "currency": "ens",
        "displayName": "ENS",
        "fullName": "Ethereum Name Service",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/13855.png",
        "cmcLink": null,
        "weight": 932,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2797,
        "currency": "epic",
        "displayName": "EPIC",
        "fullName": "Epic Private Internet Cash",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/5435.png",
        "cmcLink": null,
        "weight": 932,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 75,
        "currency": "ray",
        "displayName": "RAY",
        "fullName": "Raydium",
        "logo": "https://static.bitradex.mobi/1/currency/ray.png",
        "cmcLink": null,
        "weight": 931,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2794,
        "currency": "santos",
        "displayName": "SANTOS",
        "fullName": null,
        "logo": "https://bitradex-prod-public.s3.ap-northeast-1.amazonaws.com/1/currency/santos.png",
        "cmcLink": null,
        "weight": 930,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 78,
        "currency": "zro",
        "displayName": "ZRO",
        "fullName": "LayerZero",
        "logo": "https://static.bitradex.mobi/1/currency/ZRO.png",
        "cmcLink": null,
        "weight": 929,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          250
        ]
      },
      {
        "id": 2793,
        "currency": "usd1",
        "displayName": "USD1",
        "fullName": null,
        "logo": "https://bitradex-prod-public.s3.ap-northeast-1.amazonaws.com/1/currency/USD1.png",
        "cmcLink": null,
        "weight": 929,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2791,
        "currency": "cow",
        "displayName": "COW",
        "fullName": "COWRY",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/19269.png",
        "cmcLink": null,
        "weight": 927,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          244
        ]
      },
      {
        "id": 83,
        "currency": "glm",
        "displayName": "GLM",
        "fullName": "Golem",
        "logo": "https://static.bitradex.mobi/1/currency/golem-network-tokens-glm-logo.png",
        "cmcLink": null,
        "weight": 926,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2790,
        "currency": "sxt",
        "displayName": "SXT",
        "fullName": "Space and Time",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/36405.png",
        "cmcLink": null,
        "weight": 926,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          249
        ]
      },
      {
        "id": 85,
        "currency": "arkm",
        "displayName": "ARKM",
        "fullName": "Arkham",
        "logo": "https://static.bitradex.mobi/1/currency/ARKM.png",
        "cmcLink": null,
        "weight": 925,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2789,
        "currency": "orca",
        "displayName": "ORCA",
        "fullName": "Orca",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/11165.png",
        "cmcLink": null,
        "weight": 925,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          244
        ]
      },
      {
        "id": 2788,
        "currency": "mubarak",
        "displayName": "MUBARAK",
        "fullName": "Mubarak",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/36041.png",
        "cmcLink": null,
        "weight": 924,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 87,
        "currency": "ftt",
        "displayName": "FTT",
        "fullName": "FTX Token",
        "logo": "https://static.bitradex.mobi/1/currency/ftt.png",
        "cmcLink": null,
        "weight": 923,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 576,
        "currency": "trb",
        "displayName": "TRB",
        "fullName": "Tellor",
        "logo": "https://static.bitradex.mobi/1/currency/trb.png",
        "cmcLink": "",
        "weight": 923,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          256
        ]
      },
      {
        "id": 2787,
        "currency": "virtual",
        "displayName": "VIRTUAL",
        "fullName": "Virtuals Protocol",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/29420.png",
        "cmcLink": null,
        "weight": 923,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          246
        ]
      },
      {
        "id": 2786,
        "currency": "cgpt",
        "displayName": "CGPT",
        "fullName": "ChainGPT",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/23756.png",
        "cmcLink": null,
        "weight": 922,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          246
        ]
      },
      {
        "id": 423,
        "currency": "bigtime",
        "displayName": "BIGTIME",
        "fullName": "Big Time",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/28230.png",
        "cmcLink": null,
        "weight": 921,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          258
        ]
      },
      {
        "id": 2785,
        "currency": "nxpc",
        "displayName": "NXPC",
        "fullName": "NEXPACE",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/36044.png",
        "cmcLink": null,
        "weight": 921,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          256
        ]
      },
      {
        "id": 2778,
        "currency": "usdn",
        "displayName": "USDN",
        "fullName": "SMARDEX USDN",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/35672.png",
        "cmcLink": null,
        "weight": 920,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 0,
        "convertEnabled": 0,
        "transferEnabled": 0,
        "isChainExist": 0,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2784,
        "currency": "kernel",
        "displayName": "KERNEL",
        "fullName": "KernelDAO",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/36180.png",
        "cmcLink": null,
        "weight": 920,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          244
        ]
      },
      {
        "id": 92,
        "currency": "gmt",
        "displayName": "GMT",
        "fullName": "GMT",
        "logo": "https://static.bitradex.mobi/1/currency/GMT.png",
        "cmcLink": null,
        "weight": 919,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2783,
        "currency": "hyper",
        "displayName": "HYPER",
        "fullName": "Hyper",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/36281.png",
        "cmcLink": null,
        "weight": 919,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          256
        ]
      },
      {
        "id": 2782,
        "currency": "sign",
        "displayName": "SIGN",
        "fullName": "Sign",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/35600.png",
        "cmcLink": null,
        "weight": 918,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          256
        ]
      },
      {
        "id": 97,
        "currency": "blur",
        "displayName": "BLUR",
        "fullName": "Blur",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/23121.png",
        "cmcLink": null,
        "weight": 917,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2781,
        "currency": "sto",
        "displayName": "STO",
        "fullName": "StakeStone",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/32194.png",
        "cmcLink": null,
        "weight": 917,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          244
        ]
      },
      {
        "id": 94,
        "currency": "people",
        "displayName": "PEOPLE",
        "fullName": "ConstitutionDAO",
        "logo": "https://static.bitradex.mobi/1/currency/people.png",
        "cmcLink": null,
        "weight": 916,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2777,
        "currency": "bmt",
        "displayName": "BMT",
        "fullName": "BitMinutes",
        "logo": "https://static.bitradex.mobi/1/currency/BMT.png",
        "cmcLink": null,
        "weight": 916,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 95,
        "currency": "paxg",
        "displayName": "PAXG",
        "fullName": "PAX Gold",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/4705.png",
        "cmcLink": null,
        "weight": 915,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 96,
        "currency": "aevo",
        "displayName": "AEVO",
        "fullName": "Aevo Coin",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/29676.png",
        "cmcLink": null,
        "weight": 914,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 99,
        "currency": "comp",
        "displayName": "COMP",
        "fullName": "Compound Coin",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/5692.png",
        "cmcLink": null,
        "weight": 912,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2776,
        "currency": "sun",
        "displayName": "SUN",
        "fullName": "Sun [New]",
        "logo": "https://static.bitradex.mobi/1/currency/SUN.png",
        "cmcLink": null,
        "weight": 909,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 103,
        "currency": "super",
        "displayName": "SUPER",
        "fullName": "SuperCoin",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/8290.png",
        "cmcLink": null,
        "weight": 908,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 105,
        "currency": "hot",
        "displayName": "HOT",
        "fullName": "Hotcoin",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/2682.png",
        "cmcLink": null,
        "weight": 906,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2775,
        "currency": "anime",
        "displayName": "ANIME",
        "fullName": "Animecoin",
        "logo": "https://static.bitradex.mobi/1/currency/ANIME.png",
        "cmcLink": null,
        "weight": 905,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 108,
        "currency": "rpl",
        "displayName": "RPL",
        "fullName": "Rocket Pool",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/2943.png",
        "cmcLink": null,
        "weight": 904,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2774,
        "currency": "tst",
        "displayName": "TST",
        "fullName": "Test",
        "logo": "https://static.bitradex.mobi/1/currency/TST.png",
        "cmcLink": null,
        "weight": 903,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          247
        ]
      },
      {
        "id": 9,
        "currency": "agld",
        "displayName": "AGLD",
        "fullName": "Adventure Gold",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/11568.png",
        "cmcLink": null,
        "weight": 902,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2773,
        "currency": "kaito",
        "displayName": "KAITO",
        "fullName": "KAITO",
        "logo": "https://static.bitradex.mobi/1/currency/KAITO.png",
        "cmcLink": null,
        "weight": 902,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 291,
        "currency": "prom",
        "displayName": "PROM",
        "fullName": "Prom",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/4120.png",
        "cmcLink": null,
        "weight": 900,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2771,
        "currency": "red",
        "displayName": "RED",
        "fullName": "RedCoin",
        "logo": "https://static.bitradex.mobi/1/currency/RED.png",
        "cmcLink": null,
        "weight": 900,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          246
        ]
      },
      {
        "id": 114,
        "currency": "jst",
        "displayName": "JST",
        "fullName": "JUST",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/5488.png",
        "cmcLink": null,
        "weight": 898,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 116,
        "currency": "crv",
        "displayName": "CRV",
        "fullName": "Curve DAO Token",
        "logo": "https://static.bitradex.mobi/1/currency/crv.jpg",
        "cmcLink": null,
        "weight": 897,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 115,
        "currency": "ilv",
        "displayName": "ILV",
        "fullName": "Illuvium",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/8719.png",
        "cmcLink": null,
        "weight": 896,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 117,
        "currency": "ankr",
        "displayName": "ANKR",
        "fullName": "Ankr",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/3783.png",
        "cmcLink": null,
        "weight": 895,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 119,
        "currency": "jto",
        "displayName": "JTO",
        "fullName": "Jito",
        "logo": "https://static.bitradex.mobi/1/currency/JTO.png",
        "cmcLink": null,
        "weight": 893,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 120,
        "currency": "ssv",
        "displayName": "SSV",
        "fullName": "SSVCoin",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/12999.png",
        "cmcLink": null,
        "weight": 892,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 124,
        "currency": "mask",
        "displayName": "MASK",
        "fullName": "NFTX Hashmasks Index",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/8536.png",
        "cmcLink": null,
        "weight": 888,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 130,
        "currency": "yfi",
        "displayName": "YFI",
        "fullName": "yearn.finance",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/5864.png",
        "cmcLink": null,
        "weight": 882,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 143,
        "currency": "w",
        "displayName": "W",
        "fullName": "Wormhole",
        "logo": "https://static.bitradex.mobi/1/currency/w.png",
        "cmcLink": null,
        "weight": 800,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 421,
        "currency": "ton",
        "displayName": "TON",
        "fullName": "Toncoin",
        "logo": "https://static.bitradex.mobi/1/currency/ton.png",
        "cmcLink": null,
        "weight": 800,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 153,
        "currency": "id",
        "displayName": "ID",
        "fullName": "SPACE ID",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/21846.png",
        "cmcLink": null,
        "weight": 798,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 159,
        "currency": "cvx",
        "displayName": "CVX",
        "fullName": "Convex Finance",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/9903.png",
        "cmcLink": null,
        "weight": 795,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 160,
        "currency": "ethfi",
        "displayName": "ETHFI",
        "fullName": "ether.fi",
        "logo": "https://static.bitradex.mobi/1/currency/ETHFI.png",
        "cmcLink": null,
        "weight": 794,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 169,
        "currency": "rsr",
        "displayName": "RSR",
        "fullName": "Reserve Rights",
        "logo": "https://static.bitradex.mobi/1/currency/reserve-rights-rsr-logo.png",
        "cmcLink": null,
        "weight": 789,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 158,
        "currency": "t",
        "displayName": "T",
        "fullName": "Threshold",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/17751.png",
        "cmcLink": null,
        "weight": 786,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 168,
        "currency": "ygg",
        "displayName": "YGG",
        "fullName": "Yield Guild Games",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/10688.png",
        "cmcLink": null,
        "weight": 782,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 170,
        "currency": "amp",
        "displayName": "AMP",
        "fullName": "Amp",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/6945.png",
        "cmcLink": null,
        "weight": 781,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 175,
        "currency": "glmr",
        "displayName": "GLMR",
        "fullName": "Moonbeam",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/6836.png",
        "cmcLink": null,
        "weight": 778,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 176,
        "currency": "nmr",
        "displayName": "NMR",
        "fullName": "Numeraire",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/1732.png",
        "cmcLink": null,
        "weight": 777,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 177,
        "currency": "dusk",
        "displayName": "DUSK",
        "fullName": "Dusk",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/4092.png",
        "cmcLink": null,
        "weight": 776,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 183,
        "currency": "cyber",
        "displayName": "CYBER",
        "fullName": "CyberWay",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/24781.png",
        "cmcLink": null,
        "weight": 769,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 185,
        "currency": "api3",
        "displayName": "API3",
        "fullName": "API INU",
        "logo": "https://static.bitradex.mobi/1/currency/API3.png",
        "cmcLink": null,
        "weight": 768,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 188,
        "currency": "pha",
        "displayName": "PHA",
        "fullName": "Phala Network",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/6841.png",
        "cmcLink": null,
        "weight": 765,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 196,
        "currency": "lqty",
        "displayName": "LQTY",
        "fullName": "Liquity",
        "logo": "https://static.bitradex.mobi/1/currency/LYTQ.png",
        "cmcLink": null,
        "weight": 757,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          244
        ]
      },
      {
        "id": 198,
        "currency": "xai",
        "displayName": "XAI",
        "fullName": "Sapience AIFX",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/28933.png",
        "cmcLink": null,
        "weight": 755,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 199,
        "currency": "powr",
        "displayName": "POWR",
        "fullName": "Powerledger",
        "logo": "https://static.bitradex.mobi/1/currency/POWR.png",
        "cmcLink": null,
        "weight": 754,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          256
        ]
      },
      {
        "id": 201,
        "currency": "auction",
        "displayName": "AUCTION",
        "fullName": "Bounce Token",
        "logo": "https://static.bitradex.mobi/1/currency/auction.png",
        "cmcLink": null,
        "weight": 752,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 202,
        "currency": "cvc",
        "displayName": "CVC",
        "fullName": "Civic",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/1816.png",
        "cmcLink": null,
        "weight": 751,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 203,
        "currency": "spell",
        "displayName": "SPELL",
        "fullName": "Spell Token",
        "logo": "https://static.bitradex.mobi/1/currency/spell.png",
        "cmcLink": null,
        "weight": 750,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 208,
        "currency": "ctk",
        "displayName": "CTK",
        "fullName": "Shentu",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/4807.png",
        "cmcLink": null,
        "weight": 745,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 212,
        "currency": "pyr",
        "displayName": "PYR",
        "fullName": "Vulcan Forged (PYR)",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/9308.png",
        "cmcLink": null,
        "weight": 742,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 0,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 224,
        "currency": "nfp",
        "displayName": "NFP",
        "fullName": "NFPrompt",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/28778.png",
        "cmcLink": null,
        "weight": 732,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 227,
        "currency": "dodo",
        "displayName": "DODO",
        "fullName": "DODO",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/7224.png",
        "cmcLink": null,
        "weight": 729,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 228,
        "currency": "mbox",
        "displayName": "MBOX",
        "fullName": "MOBOX",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/9175.png",
        "cmcLink": null,
        "weight": 728,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 229,
        "currency": "alice",
        "displayName": "ALICE",
        "fullName": "MyNeighborAlice",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/8766.png",
        "cmcLink": null,
        "weight": 727,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 250,
        "currency": "rare",
        "displayName": "RARE",
        "fullName": "SuperRare",
        "logo": "https://static.bitradex.mobi/1/currency/RARE.png",
        "cmcLink": null,
        "weight": 714,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 298,
        "currency": "arpa",
        "displayName": "ARPA",
        "fullName": "ARPA",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/4039.png",
        "cmcLink": null,
        "weight": 712,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 302,
        "currency": "tnsr",
        "displayName": "TNSR",
        "fullName": "Tensor",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/30449.png",
        "cmcLink": null,
        "weight": 706,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 303,
        "currency": "mav",
        "displayName": "MAV",
        "fullName": "Maverick Protocol",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/18037.png",
        "cmcLink": null,
        "weight": 705,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 308,
        "currency": "qkc",
        "displayName": "QKC",
        "fullName": "QuarkChain",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/2840.png",
        "cmcLink": null,
        "weight": 702,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 313,
        "currency": "tlm",
        "displayName": "TLM",
        "fullName": "Alien Worlds",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/9119.png",
        "cmcLink": null,
        "weight": 698,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 334,
        "currency": "fida",
        "displayName": "FIDA",
        "fullName": "Solana Name Service (previously Bonfida)",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/7978.png",
        "cmcLink": null,
        "weight": 689,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 336,
        "currency": "bel",
        "displayName": "BEL",
        "fullName": "Bellscoin",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/6928.png",
        "cmcLink": null,
        "weight": 688,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 144,
        "currency": "snx",
        "displayName": "SNX",
        "fullName": "Synthetix",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/2586.png",
        "cmcLink": null,
        "weight": 600,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 171,
        "currency": "alt",
        "displayName": "ALT",
        "fullName": "Altlayer",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/29073.png",
        "cmcLink": null,
        "weight": 600,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 281,
        "currency": "storj",
        "displayName": "STORJ",
        "fullName": "Storj",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/1772.png",
        "cmcLink": null,
        "weight": 600,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 276,
        "currency": "quick",
        "displayName": "QUICK",
        "fullName": "Quickswap [New]",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/8206.png",
        "cmcLink": null,
        "weight": 528,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 265,
        "currency": "atm",
        "displayName": "ATM",
        "fullName": "Atletico De Madrid Fan Token",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/5227.png",
        "cmcLink": null,
        "weight": 518,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 258,
        "currency": "lazio",
        "displayName": "LAZIO",
        "fullName": "S.S. Lazio Fan Token",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/12687.png",
        "cmcLink": null,
        "weight": 511,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 257,
        "currency": "porto",
        "displayName": "PORTO",
        "fullName": "FC Porto Fan Token",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/14052.png",
        "cmcLink": null,
        "weight": 510,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 243,
        "currency": "alpine",
        "displayName": "ALPINE",
        "fullName": "Alpine F1 Team Fan Token",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/18112.png",
        "cmcLink": null,
        "weight": 502,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 163,
        "currency": "band",
        "displayName": "BAND",
        "fullName": "Band Protocol",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/4679.png",
        "cmcLink": null,
        "weight": 500,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 419,
        "currency": "psg",
        "displayName": "PSG",
        "fullName": "Paris Saint-Germain Fan Token",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/5226.png",
        "cmcLink": null,
        "weight": 500,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2780,
        "currency": "usdc",
        "displayName": "USDC",
        "fullName": "USDC",
        "logo": "https://static.bitradex.mobi/1/currency/pngtree-usd-coin-usdc-digital-stablecoin-icon-technology-pay-web-vector-png-image_37843734.png",
        "cmcLink": null,
        "weight": 500,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 277,
        "currency": "coti",
        "displayName": "COTI",
        "fullName": "COTI",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/3992.png",
        "cmcLink": null,
        "weight": 300,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 140,
        "currency": "mana",
        "displayName": "MANA",
        "fullName": "Decentraland",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/1966.png",
        "cmcLink": null,
        "weight": 250,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 329,
        "currency": "cos",
        "displayName": "COS",
        "fullName": "Contentos",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/4036.png",
        "cmcLink": null,
        "weight": 200,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 135,
        "currency": "cfx",
        "displayName": "CFX",
        "fullName": "Conflux",
        "logo": "https://static.bitradex.mobi/1/currency/CFX.png",
        "cmcLink": null,
        "weight": 120,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 134,
        "currency": "pendle",
        "displayName": "PENDLE",
        "fullName": "Pendle",
        "logo": "https://static.bitradex.mobi/1/currency/PENDLE.png",
        "cmcLink": null,
        "weight": 100,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 138,
        "currency": "nexo",
        "displayName": "NEXO",
        "fullName": "Nexo",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/2694.png",
        "cmcLink": null,
        "weight": 100,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 283,
        "currency": "c98",
        "displayName": "C98",
        "fullName": null,
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/10903.png",
        "cmcLink": null,
        "weight": 100,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 107,
        "currency": "xtz",
        "displayName": "XTZ",
        "fullName": "Tezos",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/2011.png",
        "cmcLink": null,
        "weight": 90,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 43,
        "currency": "strk",
        "displayName": "STRK",
        "fullName": "Starknet",
        "logo": "https://static.bitradex.mobi/1/currency/strk.png",
        "cmcLink": null,
        "weight": 50,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 80,
        "currency": "egld",
        "displayName": "EGLD",
        "fullName": "MultiversX",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/6892.png",
        "cmcLink": null,
        "weight": 50,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 132,
        "currency": "sand",
        "displayName": "SAND",
        "fullName": "The Sandbox",
        "logo": "https://static.bitradex.mobi/1/currency/SAND.png",
        "cmcLink": null,
        "weight": 50,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 20,
        "currency": "wbtc",
        "displayName": "WBTC",
        "fullName": "WorldBTC",
        "logo": "https://static.bitradex.mobi/1/currency/wbtc.png",
        "cmcLink": null,
        "weight": 32,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 12,
        "currency": "ada",
        "displayName": "ADA",
        "fullName": "Cardano",
        "logo": "https://static.bitradex.mobi/1/currency/ADA.jpg",
        "cmcLink": null,
        "weight": 30,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 15,
        "currency": "shib",
        "displayName": "SHIB",
        "fullName": "Shiba Inu",
        "logo": "https://static.bitradex.mobi/1/currency/SHIB.png",
        "cmcLink": null,
        "weight": 30,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 296,
        "currency": "ata",
        "displayName": "ATA",
        "fullName": "Automata Network",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/10188.png",
        "cmcLink": null,
        "weight": 30,
        "maxPrecision": 8,
        "depositStatus": 0,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 0,
        "isChainExist": 0,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 13,
        "currency": "avax",
        "displayName": "AVAX",
        "fullName": "Avalanche",
        "logo": "https://static.bitradex.mobi/1/currency/AVAX.png",
        "cmcLink": null,
        "weight": 25,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 2772,
        "currency": "gps",
        "displayName": "GPS",
        "fullName": "GoPlus Security",
        "logo": "https://static.bitradex.mobi/1/currency/GPS.png",
        "cmcLink": null,
        "weight": 23,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": [
          256
        ]
      },
      {
        "id": 375,
        "currency": "slp",
        "displayName": "SLP",
        "fullName": "Smooth Love Potion",
        "logo": "https://static.bitradex.mobi/static/img/coins/64x64/5824.png",
        "cmcLink": null,
        "weight": 10,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 0,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 6,
        "currency": "etc",
        "displayName": "ETC",
        "fullName": "Ethereum Classic",
        "logo": "https://static.bitradex.mobi/1/currency/1321.png",
        "cmcLink": "https://coinmarketcap.com/currencies/ethereum-classic/",
        "weight": 1,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 73,
        "currency": "trx",
        "displayName": "TRX",
        "fullName": "TRON",
        "logo": "https://static.bitradex.mobi/1/currency/TRX.png",
        "cmcLink": "https://coinmarketcap.com/currencies/tron/",
        "weight": 1,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 131,
        "currency": "doge",
        "displayName": "DOGE",
        "fullName": "Dogecoin",
        "logo": "https://static.bitradex.mobi/1/currency/Doge.jpg",
        "cmcLink": "https://coinmarketcap.com/currencies/dogecoin/",
        "weight": 1,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 675,
        "currency": "bnb",
        "displayName": "BNB",
        "fullName": "BNB",
        "logo": "https://static.bitradex.mobi/1/currency/BNB.jpg",
        "cmcLink": "",
        "weight": 1,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      },
      {
        "id": 941,
        "currency": "sol",
        "displayName": "SOL",
        "fullName": "Solana",
        "logo": "https://static.bitradex.mobi/1/currency/sol.jpg",
        "cmcLink": "https://coinmarketcap.com/currencies/solana/",
        "weight": 1,
        "maxPrecision": 8,
        "depositStatus": 1,
        "withdrawStatus": 1,
        "convertEnabled": 1,
        "transferEnabled": 1,
        "isChainExist": 1,
        "ubcardEnabled": 0,
        "plates": []
      }
    ]
  },
  "ts": 1779971247512
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.552182" elapsed="0.001627"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:27.558199" level="INFO">${data} = {'time': 1779956732250, 'version': '06d4dad1f2bd9475f13574112800134b', 'currencies': [{'id': 2, 'currency': 'btc', 'displayName': 'BTC', 'fullName': 'Bitcoin', 'logo': 'https://static.bitradex.mobi/1/...</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.553953" elapsed="0.004276"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.558357" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, list)</arg>
<arg>验证货币列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.558779" elapsed="0.000175"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证货币字典结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($currency_dict, dict)</arg>
<arg>货币数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.559853" elapsed="0.000199"/>
</kw>
<kw name="Get Dictionary Keys" owner="Collections">
<msg time="2026-05-28T20:27:27.560293" level="INFO">${dict_keys} = ['currencies', 'time', 'version']</msg>
<var>${dict_keys}</var>
<arg>${currency_dict}</arg>
<doc>Returns keys of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-05-28T20:27:27.560152" elapsed="0.000164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.560517" level="INFO">货币字典包含字段: ['currencies', 'time', 'version']</msg>
<arg>货币字典包含字段: ${dict_keys}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.560401" elapsed="0.000149"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${currency_dict}</arg>
<arg>currencies</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.560768" elapsed="0.000122"/>
</kw>
<msg time="2026-05-28T20:27:27.560955" level="INFO">${has_currencies} = True</msg>
<var>${has_currencies}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_dict}</arg>
<arg>currencies</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.560651" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.561377" level="FAIL">Dictionary does not contain key 'symbols'.</msg>
<arg>${currency_dict}</arg>
<arg>symbols</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.561173" elapsed="0.000317">Dictionary does not contain key 'symbols'.</status>
</kw>
<msg time="2026-05-28T20:27:27.561565" level="INFO">${has_symbols} = False</msg>
<var>${has_symbols}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_dict}</arg>
<arg>symbols</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.561070" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${currency_dict}</arg>
<arg>version</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.561793" elapsed="0.000109"/>
</kw>
<msg time="2026-05-28T20:27:27.561970" level="INFO">${has_version} = True</msg>
<var>${has_version}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_dict}</arg>
<arg>version</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.561684" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.562316" level="FAIL">Dictionary does not contain key 'timestamp'.</msg>
<arg>${currency_dict}</arg>
<arg>timestamp</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.562187" elapsed="0.000174">Dictionary does not contain key 'timestamp'.</status>
</kw>
<msg time="2026-05-28T20:27:27.562433" level="INFO">${has_timestamp} = False</msg>
<var>${has_timestamp}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_dict}</arg>
<arg>timestamp</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.562084" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.562778" level="FAIL">Dictionary does not contain key 'count'.</msg>
<arg>${currency_dict}</arg>
<arg>count</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.562650" elapsed="0.000172">Dictionary does not contain key 'count'.</status>
</kw>
<msg time="2026-05-28T20:27:27.562886" level="INFO">${has_count} = False</msg>
<var>${has_count}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_dict}</arg>
<arg>count</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.562541" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.563108" level="INFO">货币数据包含货币列表(currencies): True</msg>
<arg>货币数据包含货币列表(currencies): ${has_currencies}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.563009" elapsed="0.000133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.563320" level="INFO">货币数据包含交易对(symbols): False</msg>
<arg>货币数据包含交易对(symbols): ${has_symbols}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.563226" elapsed="0.000126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.563524" level="INFO">货币数据包含版本(version): True</msg>
<arg>货币数据包含版本(version): ${has_version}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.563432" elapsed="0.000124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.563733" level="INFO">货币数据包含时间戳(timestamp): False</msg>
<arg>货币数据包含时间戳(timestamp): ${has_timestamp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.563643" elapsed="0.000121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.563932" level="INFO">货币数据包含数量(count): False</msg>
<arg>货币数据包含数量(count): ${has_count}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.563840" elapsed="0.000126"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证货币列表结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($currency_list, list)</arg>
<arg>货币数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.565121" elapsed="0.023892"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.589353" level="INFO">Length is 168.</msg>
<msg time="2026-05-28T20:27:27.589429" level="INFO">${list_length} = 168</msg>
<var>${list_length}</var>
<arg>${currency_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:27.589221" elapsed="0.000226"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.589632" level="INFO">货币列表包含 168 种货币</msg>
<arg>货币列表包含 ${list_length} 种货币</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.589529" elapsed="0.000133"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证货币项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($currency_item, dict)</arg>
<arg>货币项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.590574" elapsed="0.000163"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.590910" level="INFO">货币项内容: {'id': 2, 'currency': 'btc', 'displayName': 'BTC', 'fullName': 'Bitcoin', 'logo': 'https://static.bitradex.mobi/1/currency/1.png', 'cmcLink': 'https://coinmarketcap.com/currencies/bitcoin/', 'weight': 99999, 'maxPrecision': 8, 'depositStatus': 1, 'withdrawStatus': 1, 'convertEnabled': 1, 'transferEnabled': 1, 'isChainExist': 1, 'ubcardEnabled': 0, 'plates': []}</msg>
<arg>货币项内容: ${currency_item}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.590814" elapsed="0.000127"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${currency_item}</arg>
<arg>currency</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.591107" elapsed="0.000105"/>
</kw>
<msg time="2026-05-28T20:27:27.591273" level="INFO">${has_currency} = True</msg>
<var>${has_currency}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>currency</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.591017" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${currency_item}</arg>
<arg>displayName</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.591452" elapsed="0.000092"/>
</kw>
<msg time="2026-05-28T20:27:27.591598" level="INFO">${has_displayName} = True</msg>
<var>${has_displayName}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>displayName</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.591363" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${currency_item}</arg>
<arg>fullName</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.591775" elapsed="0.000088"/>
</kw>
<msg time="2026-05-28T20:27:27.591921" level="INFO">${has_fullName} = True</msg>
<var>${has_fullName}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>fullName</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.591689" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${currency_item}</arg>
<arg>maxPrecision</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.592094" elapsed="0.000090"/>
</kw>
<msg time="2026-05-28T20:27:27.592248" level="INFO">${has_precision} = True</msg>
<var>${has_precision}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>maxPrecision</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.592012" elapsed="0.000251"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.592427" level="INFO">${has_confirms} = False</msg>
<var>${has_confirms}</var>
<arg>${False}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:27.592332" elapsed="0.000111"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.592724" level="FAIL">Dictionary does not contain key 'contractAddress'.</msg>
<arg>${currency_item}</arg>
<arg>contractAddress</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.592594" elapsed="0.000184">Dictionary does not contain key 'contractAddress'.</status>
</kw>
<msg time="2026-05-28T20:27:27.592835" level="INFO">${has_contractAddress} = False</msg>
<var>${has_contractAddress}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>contractAddress</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.592511" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.593113" level="FAIL">Dictionary does not contain key 'withdrawFee'.</msg>
<arg>${currency_item}</arg>
<arg>withdrawFee</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.593010" elapsed="0.000139">Dictionary does not contain key 'withdrawFee'.</status>
</kw>
<msg time="2026-05-28T20:27:27.593204" level="INFO">${has_withdrawFee} = False</msg>
<var>${has_withdrawFee}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>withdrawFee</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.592926" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${currency_item}</arg>
<arg>depositStatus</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.593438" elapsed="0.000092"/>
</kw>
<msg time="2026-05-28T20:27:27.593583" level="INFO">${has_depositStatus} = True</msg>
<var>${has_depositStatus}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>depositStatus</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.593291" elapsed="0.000306"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${currency_item}</arg>
<arg>withdrawStatus</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.593752" elapsed="0.000088"/>
</kw>
<msg time="2026-05-28T20:27:27.593890" level="INFO">${has_withdrawStatus} = True</msg>
<var>${has_withdrawStatus}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>withdrawStatus</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.593670" elapsed="0.000235"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.594186" level="FAIL">Dictionary does not contain key 'networkList'.</msg>
<arg>${currency_item}</arg>
<arg>networkList</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.594082" elapsed="0.000141">Dictionary does not contain key 'networkList'.</status>
</kw>
<msg time="2026-05-28T20:27:27.594278" level="INFO">${has_networkList} = False</msg>
<var>${has_networkList}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>networkList</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.593976" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.594554" level="FAIL">Dictionary does not contain key 'isMarginTradingAllowed'.</msg>
<arg>${currency_item}</arg>
<arg>isMarginTradingAllowed</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.594451" elapsed="0.000137">Dictionary does not contain key 'isMarginTradingAllowed'.</status>
</kw>
<msg time="2026-05-28T20:27:27.594646" level="INFO">${has_isMarginTradingAllowed} = False</msg>
<var>${has_isMarginTradingAllowed}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>isMarginTradingAllowed</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.594367" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.594917" level="FAIL">Dictionary does not contain key 'isDebitEnabled'.</msg>
<arg>${currency_item}</arg>
<arg>isDebitEnabled</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.594816" elapsed="0.000134">Dictionary does not contain key 'isDebitEnabled'.</status>
</kw>
<msg time="2026-05-28T20:27:27.595005" level="INFO">${has_isDebitEnabled} = False</msg>
<var>${has_isDebitEnabled}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>isDebitEnabled</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.594734" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.595281" level="FAIL">Dictionary does not contain key 'debitEnabled'.</msg>
<arg>${currency_item}</arg>
<arg>debitEnabled</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.595177" elapsed="0.000134">Dictionary does not contain key 'debitEnabled'.</status>
</kw>
<msg time="2026-05-28T20:27:27.595361" level="INFO">${has_debitEnabled} = False</msg>
<var>${has_debitEnabled}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>debitEnabled</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.595096" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.595609" level="FAIL">Dictionary does not contain key 'ipoPurchasingAllowed'.</msg>
<arg>${currency_item}</arg>
<arg>ipoPurchasingAllowed</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.595517" elapsed="0.000122">Dictionary does not contain key 'ipoPurchasingAllowed'.</status>
</kw>
<msg time="2026-05-28T20:27:27.595691" level="INFO">${has_ipoPurchasingAllowed} = False</msg>
<var>${has_ipoPurchasingAllowed}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>ipoPurchasingAllowed</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.595441" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.595936" level="FAIL">Dictionary does not contain key 'ipoSellingAllowed'.</msg>
<arg>${currency_item}</arg>
<arg>ipoSellingAllowed</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.595842" elapsed="0.000124">Dictionary does not contain key 'ipoSellingAllowed'.</status>
</kw>
<msg time="2026-05-28T20:27:27.596016" level="INFO">${has_ipoSellingAllowed} = False</msg>
<var>${has_ipoSellingAllowed}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>ipoSellingAllowed</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.595768" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.596269" level="FAIL">Dictionary does not contain key 'isLegalMoney'.</msg>
<arg>${currency_item}</arg>
<arg>isLegalMoney</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.596169" elapsed="0.000130">Dictionary does not contain key 'isLegalMoney'.</status>
</kw>
<msg time="2026-05-28T20:27:27.596350" level="INFO">${has_isLegalMoney} = False</msg>
<var>${has_isLegalMoney}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>isLegalMoney</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.596095" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:27.596675" level="FAIL">Dictionary does not contain key 'trading'.</msg>
<arg>${currency_item}</arg>
<arg>trading</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:27.596510" elapsed="0.000196">Dictionary does not contain key 'trading'.</status>
</kw>
<msg time="2026-05-28T20:27:27.596756" level="INFO">${has_trading} = False</msg>
<var>${has_trading}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${currency_item}</arg>
<arg>trading</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:27.596435" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.596908" level="INFO">货币包含币种标识(currency): True</msg>
<arg>货币包含币种标识(currency): ${has_currency}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.596834" elapsed="0.000099"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.597063" level="INFO">货币包含展示名称(displayName): True</msg>
<arg>货币包含展示名称(displayName): ${has_displayName}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.596991" elapsed="0.000096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.597212" level="INFO">货币包含全名(fullName): True</msg>
<arg>货币包含全名(fullName): ${has_fullName}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.597143" elapsed="0.000092"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.597365" level="INFO">货币包含精度(precision): True</msg>
<arg>货币包含精度(precision): ${has_precision}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.597293" elapsed="0.000108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.597528" level="INFO">货币包含确认数(confirms): False</msg>
<arg>货币包含确认数(confirms): ${has_confirms}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.597458" elapsed="0.000093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.597681" level="INFO">货币包含合约地址(contractAddress): False</msg>
<arg>货币包含合约地址(contractAddress): ${has_contractAddress}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.597606" elapsed="0.000099"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.597831" level="INFO">货币包含提现费用(withdrawFee): False</msg>
<arg>货币包含提现费用(withdrawFee): ${has_withdrawFee}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.597761" elapsed="0.000093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.597981" level="INFO">货币包含充值状态(depositStatus): True</msg>
<arg>货币包含充值状态(depositStatus): ${has_depositStatus}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.597910" elapsed="0.000095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.598134" level="INFO">货币包含提现状态(withdrawStatus): True</msg>
<arg>货币包含提现状态(withdrawStatus): ${has_withdrawStatus}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.598063" elapsed="0.000095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.598286" level="INFO">货币包含网络列表(networkList): False</msg>
<arg>货币包含网络列表(networkList): ${has_networkList}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.598216" elapsed="0.000094"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.598442" level="INFO">货币包含保证金交易允许(isMarginTradingAllowed): False</msg>
<arg>货币包含保证金交易允许(isMarginTradingAllowed): ${has_isMarginTradingAllowed}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.598367" elapsed="0.000100"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.598595" level="INFO">货币包含借贷启用(isDebitEnabled): False</msg>
<arg>货币包含借贷启用(isDebitEnabled): ${has_isDebitEnabled}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.598525" elapsed="0.000094"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.598745" level="INFO">货币包含借贷启用(debitEnabled): False</msg>
<arg>货币包含借贷启用(debitEnabled): ${has_debitEnabled}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.598677" elapsed="0.000091"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.598897" level="INFO">货币包含IPO购买允许(ipoPurchasingAllowed): False</msg>
<arg>货币包含IPO购买允许(ipoPurchasingAllowed): ${has_ipoPurchasingAllowed}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.598825" elapsed="0.000094"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.599049" level="INFO">货币包含IPO销售允许(ipoSellingAllowed): False</msg>
<arg>货币包含IPO销售允许(ipoSellingAllowed): ${has_ipoSellingAllowed}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.598976" elapsed="0.000096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.599198" level="INFO">货币包含法币标记(isLegalMoney): False</msg>
<arg>货币包含法币标记(isLegalMoney): ${has_isLegalMoney}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.599128" elapsed="0.000094"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.599347" level="INFO">货币包含交易状态(trading): False</msg>
<arg>货币包含交易状态(trading): ${has_trading}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.599280" elapsed="0.000090"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证货币符号">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($symbol, str)</arg>
<arg>货币符号应该是字符串格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.599942" elapsed="0.000125"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.600213" level="INFO">Length is 3.</msg>
<arg>${symbol}</arg>
<arg>货币符号不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:27.600129" elapsed="0.000110"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.600372" level="INFO">货币符号: btc</msg>
<arg>货币符号: ${symbol}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.600300" elapsed="0.000095"/>
</kw>
<arg>${currency_item['currency']}</arg>
<doc>验证货币符号格式</doc>
<status status="PASS" start="2026-05-28T20:27:27.599552" elapsed="0.000873"/>
</kw>
<arg>${has_currency}</arg>
<arg>验证货币符号</arg>
<arg>${currency_item['currency']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.599432" elapsed="0.001018"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证货币名称">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($name, str)</arg>
<arg>货币名称应该是字符串格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.601009" elapsed="0.000120"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.601268" level="INFO">Length is 3.</msg>
<arg>${name}</arg>
<arg>货币名称不应该为空</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="PASS" start="2026-05-28T20:27:27.601191" elapsed="0.000101"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.601421" level="INFO">货币名称: BTC</msg>
<arg>货币名称: ${name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.601351" elapsed="0.000094"/>
</kw>
<arg>${currency_item['displayName']}</arg>
<doc>验证货币名称格式</doc>
<status status="PASS" start="2026-05-28T20:27:27.600633" elapsed="0.000842"/>
</kw>
<arg>${has_displayName}</arg>
<arg>验证货币名称</arg>
<arg>${currency_item['displayName']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.600516" elapsed="0.000984"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证货币精度">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($precision, (int, float))</arg>
<arg>货币精度应该是数字格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.602047" elapsed="0.000130"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${precision} &gt;= 0</arg>
<arg>精度应该是非负数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.602240" elapsed="0.000132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.602519" level="INFO">货币精度: 8</msg>
<arg>货币精度: ${precision}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.602433" elapsed="0.000111"/>
</kw>
<arg>${currency_item['maxPrecision']}</arg>
<doc>验证货币精度格式</doc>
<status status="PASS" start="2026-05-28T20:27:27.601679" elapsed="0.000895"/>
</kw>
<arg>${has_precision}</arg>
<arg>验证货币精度</arg>
<arg>${currency_item['maxPrecision']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.601565" elapsed="0.001034"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证充值状态">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($deposit_status, (str, bool, int))</arg>
<arg>充值状态应该是字符串、布尔值或整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.603224" elapsed="0.000140"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.603500" level="INFO">充值状态: 1</msg>
<arg>充值状态: ${deposit_status}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.603427" elapsed="0.000098"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($deposit_status, str)</arg>
<arg>Should Be True</arg>
<arg>$deposit_status.upper() in ['ENABLED', 'DISABLED', 'ACTIVE', 'INACTIVE', 'TRUE', 'FALSE']</arg>
<arg>充值状态应该是有效值</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.603588" elapsed="0.000092"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Should Be True" owner="BuiltIn">
<arg>$deposit_status in [0, 1]</arg>
<arg>充值状态整数值应为0或1</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.603873" elapsed="0.000118"/>
</kw>
<arg>isinstance($deposit_status, int)</arg>
<arg>Should Be True</arg>
<arg>$deposit_status in [0, 1]</arg>
<arg>充值状态整数值应为0或1</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.603749" elapsed="0.000269"/>
</kw>
<arg>${currency_item['depositStatus']}</arg>
<doc>验证充值状态值</doc>
<status status="PASS" start="2026-05-28T20:27:27.602783" elapsed="0.001267"/>
</kw>
<arg>${has_depositStatus}</arg>
<arg>验证充值状态</arg>
<arg>${currency_item['depositStatus']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.602667" elapsed="0.001405"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证提现状态">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($withdraw_status, (str, bool, int))</arg>
<arg>提现状态应该是字符串、布尔值或整数格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.604584" elapsed="0.000125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.604836" level="INFO">提现状态: 1</msg>
<arg>提现状态: ${withdraw_status}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.604767" elapsed="0.000091"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($withdraw_status, str)</arg>
<arg>Should Be True</arg>
<arg>$withdraw_status.upper() in ['ENABLED', 'DISABLED', 'ACTIVE', 'INACTIVE', 'TRUE', 'FALSE']</arg>
<arg>提现状态应该是有效值</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.604916" elapsed="0.000084"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Should Be True" owner="BuiltIn">
<arg>$withdraw_status in [0, 1]</arg>
<arg>提现状态整数值应为0或1</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.605178" elapsed="0.000108"/>
</kw>
<arg>isinstance($withdraw_status, int)</arg>
<arg>Should Be True</arg>
<arg>$withdraw_status in [0, 1]</arg>
<arg>提现状态整数值应为0或1</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.605064" elapsed="0.000249"/>
</kw>
<arg>${currency_item['withdrawStatus']}</arg>
<doc>验证提现状态值</doc>
<status status="PASS" start="2026-05-28T20:27:27.604246" elapsed="0.001097"/>
</kw>
<arg>${has_withdrawStatus}</arg>
<arg>验证提现状态</arg>
<arg>${currency_item['withdrawStatus']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.604132" elapsed="0.001234"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_networkList}</arg>
<arg>验证网络列表</arg>
<arg>${currency_item['networkList']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.605425" elapsed="0.000061"/>
</kw>
<arg>${currency_list[0]}</arg>
<doc>验证单个货币的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:27.590074" elapsed="0.015442"/>
</kw>
<arg>${list_length} &gt; 0</arg>
<arg>验证货币项结构</arg>
<arg>${currency_list[0]}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.589749" elapsed="0.015789"/>
</kw>
<arg>${currency_dict['currencies']}</arg>
<doc>验证货币列表的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:27.564350" elapsed="0.041216"/>
</kw>
<arg>${has_currencies}</arg>
<arg>验证货币列表结构</arg>
<arg>${currency_dict['currencies']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.564062" elapsed="0.041528"/>
</kw>
<arg>${data}</arg>
<doc>验证货币字典的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:27.559484" elapsed="0.046137"/>
</kw>
<arg>isinstance($data, dict)</arg>
<arg>验证货币字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:27.559066" elapsed="0.046576"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.605950" level="INFO">获取余额货币列表 /v1/spot/balance/public/currencies status=200</msg>
<arg>获取余额货币列表 /v1/spot/balance/public/currencies status=${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.605699" elapsed="0.000275"/>
</kw>
<doc>验证余额货币列表接口功能</doc>
<tag>spot</tag>
<status status="PASS" start="2026-05-28T20:27:26.949122" elapsed="0.656916"/>
</test>
<doc>余额货币列表接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:26.936502" elapsed="0.669686"/>
</suite>
<suite id="s1-s4-s1-s2" name="Balance Price Convert" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/balance/balance_price_convert.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.608746" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:27.608652" elapsed="0.000108"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.608891" elapsed="0.000010"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:27.608800" elapsed="0.000128"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.609052" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.608989" elapsed="0.000085"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:27.608941" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:27.608789" elapsed="0.000311"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.609419" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.609358" elapsed="0.000082"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.609548" elapsed="0.000010"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.609609" elapsed="0.000009"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.609667" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.609722" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.609777" elapsed="0.000009"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:27.609471" elapsed="0.000330"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.610072" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.609888" elapsed="0.000205"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.610252" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.610148" elapsed="0.000124"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.610437" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.610324" elapsed="0.000132"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.610616" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.610509" elapsed="0.000126"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.610795" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.610689" elapsed="0.000126"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.610974" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.610867" elapsed="0.000126"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.611159" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.611046" elapsed="0.000133"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.611342" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.611232" elapsed="0.000129"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.611529" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:27.611415" elapsed="0.000133"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:27.609812" elapsed="0.001753"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.611626" elapsed="0.000010"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.611688" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.611744" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.611798" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.611854" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.611907" elapsed="0.000009"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.611962" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.612016" elapsed="0.000008"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.612070" elapsed="0.000009"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:27.611577" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:27.609463" elapsed="0.002640"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.612243" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.612160" elapsed="0.000105"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:27.612451" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:27.612318" elapsed="0.000213"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:27.609237" elapsed="0.003326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.612660" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:27.612616" elapsed="0.000064"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:27.608547" elapsed="0.004159"/>
</kw>
<test id="s1-s4-s1-s2-t1" name="获取货币价格转换" line="7">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.613353" level="INFO">&amp;{params} = { converts=usd,btc,usdt }</msg>
<var>&amp;{params}</var>
<arg>converts=usd,btc,usdt</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.613258" elapsed="0.000109"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:27.614124" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:27.613810" elapsed="0.000328"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:27.614437" elapsed="0.000009"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:27.614195" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:27.614187" elapsed="0.000288"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:27.614490" elapsed="0.000015"/>
</return>
<msg time="2026-05-28T20:27:27.614584" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:27.613454" elapsed="0.001142"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:28.523040" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/balance/public/price/currency/convert?converts=usd%2Cbtc%2Cusdt 
 path_url=/v1/spot/balance/public/price/currency/convert?converts=usd%2Cbtc%2Cusdt 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:28.523506" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/balance/public/price/currency/convert?converts=usd%2Cbtc%2Cusdt 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:28 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'f68c4d05a81180653f2f368b69b72cdc', 'X-Transparent': '00-f68c4d05a81180653f2f368b69b72cdc-a5e9e3208d88c2f1-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40ec5dc6ed81-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":{"uft":{"btc":"0.00000012142961127925549731633737","usd":"0.00888506411083922861","usdt":"0.0089"},"ksm":{"btc":"0.0000600326168122162009204364535","usd":"4.39261596490928156","usdt":"4.4"},"fil":{"btc":"0.00001289349197922469590801496299","usd":"0.9434141106452888805","usdt":"0.945"},"bal":{"btc":"0.00001319353192213933324774137512","usd":"0.9653771904698352883","usdt":"0.967"},"fio":{"btc":"0.00000001282514995533709746936597","usd":"0.000938422501594255606","usdt":"0.00094"},"theta":{"btc":"0.00000242859222558510994632674744","usd":"0.1777012822167845722","usdt":"0.178"},"vib":{"btc":"0.00000003042562170255502910285757","usd":"0.002226257636760840427","usdt":"0.00223"},"fis":{"btc":"0.00000026059613207121123581371279","usd":"0.01906794657494710859","usdt":"0.0191"},"vic":{"btc":"0.00000055803046082264604946496612","usd":"0.04083136203745218541","usdt":"0.0409"},"bar":{"btc":"0.00000492540333391137466642671812","usd":"0.3603941734846024189","usdt":"0.361"},"stpt":{"btc":"0.00000096079474452642383382207615","usd":"0.070301821874752638058","usdt":"0.07042"},"rad":{"btc":"0.00000352009434944358632669831932","usd":"0.2575670270333169642","usdt":"0.258"},"bat":{"btc":"0.00000140667336212261143520386326","usd":"0.10292697863230612019","usdt":"0.1031"},"farm":{"btc":"0.00007913390397973953757693896143","usd":"5.79026649919859842","usdt":"5.8"},"near":{"btc":"0.0000320631811123577094008837704","usd":"2.346056253985639015","usdt":"2.35"},"xmr":{"btc":"0.00161951627627501432937631977956","usd":"118.50079887152993663","usdt":"118.7"},"iris":{"btc":"0.00000007108407581628327427169862","usd":"0.005201256631176672029","usdt":"0.00521"},"ai":{"btc":"0.00000032472188184789672316054263","usd":"0.02376005908291838662","usdt":"0.0238"},"combo":{"btc":"0.0000003765682327311743512281923","usd":"0.02755368196170367524","usdt":"0.0276"},"glm":{"btc":"0.00000173959812418110976536709818","usd":"0.12728603080134849975","usdt":"0.1275"},"aixbt":{"btc":"0.00000036292445618294339647354765","usd":"0.02655536015149702034","usdt":"0.0266"},"1000sats":{"btc":"0.00000000015117304415439897868146","usd":"0.000011061405657089736292","usdt":"0.00001108"},"ray":{"btc":"0.00000956437870628202310213596725","usd":"0.6998235889548650849","usdt":"0.701"},"wld":{"btc":"0.00000400171966159613902953727541","usd":"0.29280778693361188217","usdt":"0.2933"},"ar":{"btc":"0.00002796974192387345724702152947","usd":"2.046559710923642545","usdt":"2.05"},"agld":{"btc":"0.00000287886434668403263131339385","usd":"0.2106459019536041839","usdt":"0.211"},"zro":{"btc":"0.00001570413679162711639166690201","usd":"1.1490684035478597899","usdt":"1.151"},"wing":{"btc":"0.00000444787115472329125001415542","usd":"0.3254529101273694974","usdt":"0.326"},"dgb":{"btc":"0.00000004366008495433905521486288","usd":"0.00319462979266129568","usdt":"0.0032"},"bb":{"btc":"0.00000035746694556365101457168979","usd":"0.02615603142741435838","usdt":"0.0262"},"zrx":{"btc":"0.00000133436134641698737500424663","usd":"0.09763587303821084922","usdt":"0.0978"},"bch":{"btc":"0.00411773108923810923284541357803","usd":"301.29352232036844882","usdt":"301.8"},"blur":{"btc":"0.00000027710774825190854380082952","usd":"0.020275915965297161019","usdt":"0.02031"},"jst":{"btc":"0.00000129412456532218244113779813","usd":"0.094690823698101217265","usdt":"0.09485"},"hot":{"btc":"0.00000000489816256141975220209245","usd":"0.0003583975298641891091","usdt":"0.000359"},"gmt":{"btc":"0.00000013793989831741976257146166","usd":"0.010093033501189281039","usdt":"0.01011"},"ardr":{"btc":"0.00000048217106321448194102914188","usd":"0.035280692772703184166","usdt":"0.03534"},"vite":{"btc":"0.0000000117336478314786210889944","usd":"0.000858556756777723214","usdt":"0.00086"},"gmx":{"btc":"0.0000830905991787265144557859095","usd":"6.079779824158528341","usdt":"6.09"},"wbeth":{"btc":"0.02968135369184903052099170062716","usd":"2171.799182014067402205","usdt":"2175.45"},"sei":{"btc":"0.00000092109135477107175548606022","usd":"0.067396705407051272299","usdt":"0.06751"},"matic":{"btc":"0.00000517644882239882423391217965","usd":"0.37876329479240486906","usdt":"0.3794"},"d":{"btc":"0.00000015635767924272674148822767","usd":"0.011440767944968265154","usdt":"0.01146"},"jto":{"btc":"0.00000643992403618418673924133601","usd":"0.4712078944175411128","usdt":"0.472"},"kernel":{"btc":"0.00000082818514617877147261006164","usd":"0.06059813387954395243","usdt":"0.0607"},"flm":{"btc":"0.00000022785106835545694440256563","usd":"0.01667197423045113683","usdt":"0.0167"},"g":{"btc":"0.00000004461557542017434457059145","usd":"0.003264512319375761523","usdt":"0.00327"},"gno":{"btc":"0.00154406619196329714958313487323","usd":"112.980079261087135033","usdt":"113.17"},"strk":{"btc":"0.0000004816299120281817624898711","usd":"0.03524075990029491797","usdt":"0.0353"},"gns":{"btc":"0.00000630342476528270109664582762","usd":"0.4612246763154745638","usdt":"0.462"},"vtho":{"btc":"0.0000000063852874245720868251737","usd":"0.0004672146071767144932","usdt":"0.000468"},"polyx":{"btc":"0.0000006480793860409703508456208","usd":"0.04742028598481610775","usdt":"0.0475"},"t":{"btc":"0.00000006398992315615219450644463","usd":"0.004682129289869211481","usdt":"0.00469"},"cfx":{"btc":"0.00000068942661344997236426666251","usd":"0.050445201069742272097","usdt":"0.05053"},"w":{"btc":"0.00000015281175679081121076165882","usd":"0.01118120427431453488","usdt":"0.0112"},"mina":{"btc":"0.00000074085706656894084317720441","usd":"0.05420887429422136107","usdt":"0.0543"},"sfp":{"btc":"0.00000356102567908827919096225326","usd":"0.2605619924639369289","usdt":"0.261"},"dia":{"btc":"0.00000218300424771695276074314376","usd":"0.159731489633064784","usdt":"0.16"},"aca":{"btc":"0.00000002455879778681571855836037","usd":"0.00179697925837197882","usdt":"0.0018"},"df":{"btc":"0.00000002237579353909876579761722","usd":"0.001637247768738914036","usdt":"0.00164"},"jup":{"btc":"0.00000240132760671274759768321003","usd":"0.1757046385963712624","usdt":"0.176"},"turbo":{"btc":"0.00000001387585327287991083433991","usd":"0.0010152932809801680333","usdt":"0.001017"},"ach":{"btc":"0.0000000833634747096911335508788","usd":"0.006099746260362661439","usdt":"0.00611"},"bel":{"btc":"0.00000127706968175177940422243442","usd":"0.09344292143534289864","usdt":"0.0936"},"acm":{"btc":"0.00000485718445117021989265349487","usd":"0.3554025644335691444","usdt":"0.356"},"juv":{"btc":"0.00000534836040690653426382070222","usd":"0.3913421496010087208","usdt":"0.392"},"tia":{"btc":"0.00000557894023057163739917419678","usd":"0.40821378819350118861","usdt":"0.4089"},"red":{"btc":"0.00000162908247864489808615554135","usd":"0.11919962413867459506","usdt":"0.1194"},"act":{"btc":"0.00000015554053816207569666811701","usd":"0.01138086863635586586","usdt":"0.0114"},"paxg":{"btc":"0.05986673450417155630178630118521","usd":"4380.43643882476037022","usdt":"4387.8"},"woo":{"btc":"0.00000021557166946204908512338545","usd":"0.01577348460126514742","usdt":"0.0158"},"acx":{"btc":"0.00000057986604139370325512236606","usd":"0.04242867693378283325","usdt":"0.0425"},"rei":{"btc":"0.00000005471154395840612856612504","usd":"0.004003270458928686149","usdt":"0.00401"},"rare":{"btc":"0.000000197836649416675228218219","usd":"0.01447566624799649605","usdt":"0.0145"},"ren":{"btc":"0.00000058313500967139100621351228","usd":"0.042668274168232430426","usdt":"0.04274"},"rep":{"btc":"0.00006453506307313241598946918751","usd":"4.722062162277477677","usdt":"4.73"},"elf":{"btc":"0.00000309986603175807292025526414","usd":"0.22681871527895199328","usdt":"0.2272"},"req":{"btc":"0.00000094687809244722825997233861","usd":"0.06928353362834185006","usdt":"0.0694"},"ada":{"btc":"0.00000313127662352599757766077672","usd":"0.22911485544242729955","usdt":"0.2295"},"strax":{"btc":"0.00000015485686382242133646521676","usd":"0.011330952545845533115","usdt":"0.01135"},"tusd":{"btc":"0.00001364241217057613165916918406","usd":"0.99822197802563423451","usdt":"0.9999"},"gps":{"btc":"0.00000009550734799425700672603676","usd":"0.0069882526714465843","usdt":"0.007"},"chr":{"btc":"0.00000026018681877476430717107345","usd":"0.019037996920640908943","usdt":"0.01907"},"fida":{"btc":"0.00000039226232211926984905336527","usd":"0.028701752043441328375","usdt":"0.02875"},"sand":{"btc":"0.00000090322663388854483503766195","usd":"0.06608890383568055438","usdt":"0.0662"},"adx":{"btc":"0.00000085273603426443467216529053","usd":"0.06239511313791593125","usdt":"0.0625"},"chz":{"btc":"0.00000045979526967538317523152466","usd":"0.03364344500396427013","usdt":"0.0337"},"xrp":{"btc":"0.00001753105591968868970604066238","usd":"1.28274369393453088101","usdt":"1.2849"},"santos":{"btc":"0.00001069682297535678475331611744","usd":"0.7826842992020174416","usdt":"0.784"},"virtual":{"btc":"0.00000956437870628202310213596725","usd":"0.6998235889548650849","usdt":"0.701"},"for":{"btc":"0.00000004174995623758672154921262","usd":"0.003054864739232363994","usdt":"0.00306"},"uma":{"btc":"0.00000571674237370877004219610773","usd":"0.4182968384765884031","usdt":"0.419"},"lunc":{"btc":"0.00000000114075615719759012703584","usd":"0.000083469686551378416189","usdt":"0.00008361"},"ronin":{"btc":"0.0000010751295920005992346659983","usd":"0.07866775864428440612","usdt":"0.0788"},"luna":{"btc":"0.00000079543217276186466219578301","usd":"0.05820216153504798067","usdt":"0.0583"},"yfii":{"btc":"0.00594186468675458079564774443133","usd":"434.76914834499820895","usdt":"435.5"},"alpha":{"btc":"0.00000013234463251784026112005309","usd":"0.00968372155900455253","usdt":"0.0097"},"ena":{"btc":"0.00000118838428718568361226254314","usd":"0.08695382966899964179","usdt":"0.0871"},"tko":{"btc":"0.00000068628196037601702415862582","usd":"0.05021558705339474147","usdt":"0.0503"},"pixel":{"btc":"0.00000008500072789547884812143616","usd":"0.006219544877587460027","usdt":"0.00623"},"troy":{"btc":"0.00000000094142058182793587807048","usd":"0.0000688842049042591881","usdt":"0.000069"},"enj":{"btc":"0.0... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-05-28T20:27:28.524010" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:28.524397" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>url=/v1/spot/balance/public/price/currency/convert</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=any</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:27.614645" elapsed="0.909815"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.526357" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:28.524968" elapsed="0.001534"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.530483" level="INFO">${resp_json} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': {'uft': {'btc': '0.00000012142961127925549731633737', 'usd': '0.00888506411083922861', 'usdt': '0.0089'}, 'ksm': {'btc': '0.00006003261681221620092...</msg>
<var>${resp_json}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:28.526808" elapsed="0.003741"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${resp_json}</arg>
<arg>data</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:28.530831" elapsed="0.000346"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.536116" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "uft": {
      "btc": "0.00000012142961127925549731633737",
      "usd": "0.00888506411083922861",
      "usdt": "0.0089"
    },
   ...</msg>
<var>${json_str}</var>
<arg>json.dumps($resp_json, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:28.531422" elapsed="0.004733"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.536795" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "uft": {
      "btc": "0.00000012142961127925549731633737",
      "usd": "0.00888506411083922861",
      "usdt": "0.0089"
    },
    "ksm": {
      "btc": "0.0000600326168122162009204364535",
      "usd": "4.39261596490928156",
      "usdt": "4.4"
    },
    "fil": {
      "btc": "0.00001289349197922469590801496299",
      "usd": "0.9434141106452888805",
      "usdt": "0.945"
    },
    "bal": {
      "btc": "0.00001319353192213933324774137512",
      "usd": "0.9653771904698352883",
      "usdt": "0.967"
    },
    "fio": {
      "btc": "0.00000001282514995533709746936597",
      "usd": "0.000938422501594255606",
      "usdt": "0.00094"
    },
    "theta": {
      "btc": "0.00000242859222558510994632674744",
      "usd": "0.1777012822167845722",
      "usdt": "0.178"
    },
    "vib": {
      "btc": "0.00000003042562170255502910285757",
      "usd": "0.002226257636760840427",
      "usdt": "0.00223"
    },
    "fis": {
      "btc": "0.00000026059613207121123581371279",
      "usd": "0.01906794657494710859",
      "usdt": "0.0191"
    },
    "vic": {
      "btc": "0.00000055803046082264604946496612",
      "usd": "0.04083136203745218541",
      "usdt": "0.0409"
    },
    "bar": {
      "btc": "0.00000492540333391137466642671812",
      "usd": "0.3603941734846024189",
      "usdt": "0.361"
    },
    "stpt": {
      "btc": "0.00000096079474452642383382207615",
      "usd": "0.070301821874752638058",
      "usdt": "0.07042"
    },
    "rad": {
      "btc": "0.00000352009434944358632669831932",
      "usd": "0.2575670270333169642",
      "usdt": "0.258"
    },
    "bat": {
      "btc": "0.00000140667336212261143520386326",
      "usd": "0.10292697863230612019",
      "usdt": "0.1031"
    },
    "farm": {
      "btc": "0.00007913390397973953757693896143",
      "usd": "5.79026649919859842",
      "usdt": "5.8"
    },
    "near": {
      "btc": "0.0000320631811123577094008837704",
      "usd": "2.346056253985639015",
      "usdt": "2.35"
    },
    "xmr": {
      "btc": "0.00161951627627501432937631977956",
      "usd": "118.50079887152993663",
      "usdt": "118.7"
    },
    "iris": {
      "btc": "0.00000007108407581628327427169862",
      "usd": "0.005201256631176672029",
      "usdt": "0.00521"
    },
    "ai": {
      "btc": "0.00000032472188184789672316054263",
      "usd": "0.02376005908291838662",
      "usdt": "0.0238"
    },
    "combo": {
      "btc": "0.0000003765682327311743512281923",
      "usd": "0.02755368196170367524",
      "usdt": "0.0276"
    },
    "glm": {
      "btc": "0.00000173959812418110976536709818",
      "usd": "0.12728603080134849975",
      "usdt": "0.1275"
    },
    "aixbt": {
      "btc": "0.00000036292445618294339647354765",
      "usd": "0.02655536015149702034",
      "usdt": "0.0266"
    },
    "1000sats": {
      "btc": "0.00000000015117304415439897868146",
      "usd": "0.000011061405657089736292",
      "usdt": "0.00001108"
    },
    "ray": {
      "btc": "0.00000956437870628202310213596725",
      "usd": "0.6998235889548650849",
      "usdt": "0.701"
    },
    "wld": {
      "btc": "0.00000400171966159613902953727541",
      "usd": "0.29280778693361188217",
      "usdt": "0.2933"
    },
    "ar": {
      "btc": "0.00002796974192387345724702152947",
      "usd": "2.046559710923642545",
      "usdt": "2.05"
    },
    "agld": {
      "btc": "0.00000287886434668403263131339385",
      "usd": "0.2106459019536041839",
      "usdt": "0.211"
    },
    "zro": {
      "btc": "0.00001570413679162711639166690201",
      "usd": "1.1490684035478597899",
      "usdt": "1.151"
    },
    "wing": {
      "btc": "0.00000444787115472329125001415542",
      "usd": "0.3254529101273694974",
      "usdt": "0.326"
    },
    "dgb": {
      "btc": "0.00000004366008495433905521486288",
      "usd": "0.00319462979266129568",
      "usdt": "0.0032"
    },
    "bb": {
      "btc": "0.00000035746694556365101457168979",
      "usd": "0.02615603142741435838",
      "usdt": "0.0262"
    },
    "zrx": {
      "btc": "0.00000133436134641698737500424663",
      "usd": "0.09763587303821084922",
      "usdt": "0.0978"
    },
    "bch": {
      "btc": "0.00411773108923810923284541357803",
      "usd": "301.29352232036844882",
      "usdt": "301.8"
    },
    "blur": {
      "btc": "0.00000027710774825190854380082952",
      "usd": "0.020275915965297161019",
      "usdt": "0.02031"
    },
    "jst": {
      "btc": "0.00000129412456532218244113779813",
      "usd": "0.094690823698101217265",
      "usdt": "0.09485"
    },
    "hot": {
      "btc": "0.00000000489816256141975220209245",
      "usd": "0.0003583975298641891091",
      "usdt": "0.000359"
    },
    "gmt": {
      "btc": "0.00000013793989831741976257146166",
      "usd": "0.010093033501189281039",
      "usdt": "0.01011"
    },
    "ardr": {
      "btc": "0.00000048217106321448194102914188",
      "usd": "0.035280692772703184166",
      "usdt": "0.03534"
    },
    "vite": {
      "btc": "0.0000000117336478314786210889944",
      "usd": "0.000858556756777723214",
      "usdt": "0.00086"
    },
    "gmx": {
      "btc": "0.0000830905991787265144557859095",
      "usd": "6.079779824158528341",
      "usdt": "6.09"
    },
    "wbeth": {
      "btc": "0.02968135369184903052099170062716",
      "usd": "2171.799182014067402205",
      "usdt": "2175.45"
    },
    "sei": {
      "btc": "0.00000092109135477107175548606022",
      "usd": "0.067396705407051272299",
      "usdt": "0.06751"
    },
    "matic": {
      "btc": "0.00000517644882239882423391217965",
      "usd": "0.37876329479240486906",
      "usdt": "0.3794"
    },
    "d": {
      "btc": "0.00000015635767924272674148822767",
      "usd": "0.011440767944968265154",
      "usdt": "0.01146"
    },
    "jto": {
      "btc": "0.00000643992403618418673924133601",
      "usd": "0.4712078944175411128",
      "usdt": "0.472"
    },
    "kernel": {
      "btc": "0.00000082818514617877147261006164",
      "usd": "0.06059813387954395243",
      "usdt": "0.0607"
    },
    "flm": {
      "btc": "0.00000022785106835545694440256563",
      "usd": "0.01667197423045113683",
      "usdt": "0.0167"
    },
    "g": {
      "btc": "0.00000004461557542017434457059145",
      "usd": "0.003264512319375761523",
      "usdt": "0.00327"
    },
    "gno": {
      "btc": "0.00154406619196329714958313487323",
      "usd": "112.980079261087135033",
      "usdt": "113.17"
    },
    "strk": {
      "btc": "0.0000004816299120281817624898711",
      "usd": "0.03524075990029491797",
      "usdt": "0.0353"
    },
    "gns": {
      "btc": "0.00000630342476528270109664582762",
      "usd": "0.4612246763154745638",
      "usdt": "0.462"
    },
    "vtho": {
      "btc": "0.0000000063852874245720868251737",
      "usd": "0.0004672146071767144932",
      "usdt": "0.000468"
    },
    "polyx": {
      "btc": "0.0000006480793860409703508456208",
      "usd": "0.04742028598481610775",
      "usdt": "0.0475"
    },
    "t": {
      "btc": "0.00000006398992315615219450644463",
      "usd": "0.004682129289869211481",
      "usdt": "0.00469"
    },
    "cfx": {
      "btc": "0.00000068942661344997236426666251",
      "usd": "0.050445201069742272097",
      "usdt": "0.05053"
    },
    "w": {
      "btc": "0.00000015281175679081121076165882",
      "usd": "0.01118120427431453488",
      "usdt": "0.0112"
    },
    "mina": {
      "btc": "0.00000074085706656894084317720441",
      "usd": "0.05420887429422136107",
      "usdt": "0.0543"
    },
    "sfp": {
      "btc": "0.00000356102567908827919096225326",
      "usd": "0.2605619924639369289",
      "usdt": "0.261"
    },
    "dia": {
      "btc": "0.00000218300424771695276074314376",
      "usd": "0.159731489633064784",
      "usdt": "0.16"
    },
    "aca": {
      "btc": "0.00000002455879778681571855836037",
      "usd": "0.00179697925837197882",
      "usdt": "0.0018"
    },
    "df": {
      "btc": "0.00000002237579353909876579761722",
      "usd": "0.001637247768738914036",
      "usdt": "0.00164"
    },
    "jup": {
      "btc": "0.00000240132760671274759768321003",
      "usd": "0.1757046385963712624",
      "usdt": "0.176"
    },
    "turbo": {
      "btc": "0.00000001387585327287991083433991",
      "usd": "0.0010152932809801680333",
      "usdt": "0.001017"
    },
    "ach": {
      "btc": "0.0000000833634747096911335508788",
      "usd": "0.006099746260362661439",
      "usdt": "0.00611"
    },
    "bel": {
      "btc": "0.00000127706968175177940422243442",
      "usd": "0.09344292143534289864",
      "usdt": "0.0936"
    },
    "acm": {
      "btc": "0.00000485718445117021989265349487",
      "usd": "0.3554025644335691444",
      "usdt": "0.356"
    },
    "juv": {
      "btc": "0.00000534836040690653426382070222",
      "usd": "0.3913421496010087208",
      "usdt": "0.392"
    },
    "tia": {
      "btc": "0.00000557894023057163739917419678",
      "usd": "0.40821378819350118861",
      "usdt": "0.4089"
    },
    "red": {
      "btc": "0.00000162908247864489808615554135",
      "usd": "0.11919962413867459506",
      "usdt": "0.1194"
    },
    "act": {
      "btc": "0.00000015554053816207569666811701",
      "usd": "0.01138086863635586586",
      "usdt": "0.0114"
    },
    "paxg": {
      "btc": "0.05986673450417155630178630118521",
      "usd": "4380.43643882476037022",
      "usdt": "4387.8"
    },
    "woo": {
      "btc": "0.00000021557166946204908512338545",
      "usd": "0.01577348460126514742",
      "usdt": "0.0158"
    },
    "acx": {
      "btc": "0.00000057986604139370325512236606",
      "usd": "0.04242867693378283325",
      "usdt": "0.0425"
    },
    "rei": {
      "btc": "0.00000005471154395840612856612504",
      "usd": "0.004003270458928686149",
      "usdt": "0.00401"
    },
    "rare": {
      "btc": "0.000000197836649416675228218219",
      "usd": "0.01447566624799649605",
      "usdt": "0.0145"
    },
    "ren": {
      "btc": "0.00000058313500967139100621351228",
      "usd": "0.042668274168232430426",
      "usdt": "0.04274"
    },
    "rep": {
      "btc": "0.00006453506307313241598946918751",
      "usd": "4.722062162277477677",
      "usdt": "4.73"
    },
    "elf": {
      "btc": "0.00000309986603175807292025526414",
      "usd": "0.22681871527895199328",
      "usdt": "0.2272"
    },
    "req": {
      "btc": "0.00000094687809244722825997233861",
      "usd": "0.06928353362834185006",
      "usdt": "0.0694"
    },
    "ada": {
      "btc": "0.00000313127662352599757766077672",
      "usd": "0.22911485544242729955",
      "usdt": "0.2295"
    },
    "strax": {
      "btc": "0.00000015485686382242133646521676",
      "usd": "0.011330952545845533115",
      "usdt": "0.01135"
    },
    "tusd": {
      "btc": "0.00001364241217057613165916918406",
      "usd": "0.99822197802563423451",
      "usdt": "0.9999"
    },
    "gps": {
      "btc": "0.00000009550734799425700672603676",
      "usd": "0.0069882526714465843",
      "usdt": "0.007"
    },
    "chr": {
      "btc": "0.00000026018681877476430717107345",
      "usd": "0.019037996920640908943",
      "usdt": "0.01907"
    },
    "fida": {
      "btc": "0.00000039226232211926984905336527",
      "usd": "0.028701752043441328375",
      "usdt": "0.02875"
    },
    "sand": {
      "btc": "0.00000090322663388854483503766195",
      "usd": "0.06608890383568055438",
      "usdt": "0.0662"
    },
    "adx": {
      "btc": "0.00000085273603426443467216529053",
      "usd": "0.06239511313791593125",
      "usdt": "0.0625"
    },
    "chz": {
      "btc": "0.00000045979526967538317523152466",
      "usd": "0.03364344500396427013",
      "usdt": "0.0337"
    },
    "xrp": {
      "btc": "0.00001753105591968868970604066238",
      "usd": "1.28274369393453088101",
      "usdt": "1.2849"
    },
    "santos": {
      "btc": "0.00001069682297535678475331611744",
      "usd": "0.7826842992020174416",
      "usdt": "0.784"
    },
    "virtual": {
      "btc": "0.00000956437870628202310213596725",
      "usd": "0.6998235889548650849",
      "usdt": "0.701"
    },
    "for": {
      "btc": "0.00000004174995623758672154921262",
      "usd": "0.003054864739232363994",
      "usdt": "0.00306"
    },
    "uma": {
      "btc": "0.00000571674237370877004219610773",
      "usd": "0.4182968384765884031",
      "usdt": "0.419"
    },
    "lunc": {
      "btc": "0.00000000114075615719759012703584",
      "usd": "0.000083469686551378416189",
      "usdt": "0.00008361"
    },
    "ronin": {
      "btc": "0.0000010751295920005992346659983",
      "usd": "0.07866775864428440612",
      "usdt": "0.0788"
    },
    "luna": {
      "btc": "0.00000079543217276186466219578301",
      "usd": "0.05820216153504798067",
      "usdt": "0.0583"
    },
    "yfii": {
      "btc": "0.00594186468675458079564774443133",
      "usd": "434.76914834499820895",
      "usdt": "435.5"
    },
    "alpha": {
      "btc": "0.00000013234463251784026112005309",
      "usd": "0.00968372155900455253",
      "usdt": "0.0097"
    },
    "ena": {
      "btc": "0.00000118838428718568361226254314",
      "usd": "0.08695382966899964179",
      "usdt": "0.0871"
    },
    "tko": {
      "btc": "0.00000068628196037601702415862582",
      "usd": "0.05021558705339474147",
      "usdt": "0.0503"
    },
    "pixel": {
      "btc": "0.00000008500072789547884812143616",
      "usd": "0.006219544877587460027",
      "usdt": "0.00623"
    },
    "troy": {
      "btc": "0.00000000094142058182793587807048",
      "usd": "0.0000688842049042591881",
      "usdt": "0.000069"
    },
    "enj": {
      "btc": "0.00000051191449608962542239426721",
      "usd": "0.037457034318953691848",
      "usdt": "0.03752"
    },
    "oax": {
      "btc": "0.00000048844720042666818021627842",
      "usd": "0.03573992080539824542",
      "usdt": "0.0358"
    },
    "grt": {
      "btc": "0.00000035064840620748643897987782",
      "usd": "0.02565687052231103093",
      "usdt": "0.0257"
    },
    "ens": {
      "btc": "0.00007749739094391139974341268761",
      "usd": "5.670467881973799832",
      "usdt": "5.68"
    },
    "pda": {
      "btc": "0.00000013329969687621642795287822",
      "usd": "0.009753604085719018373",
      "usdt": "0.00977"
    },
    "uni": {
      "btc": "0.00004099954852743401903770716881",
      "usd": "2.9999570396709979745",
      "usdt": "3.005"
    },
    "tlm": {
      "btc": "0.00000001824190346690308828467302",
      "usd": "0.0013347562602462976013",
      "usdt": "0.001337"
    },
    "ckb": {
      "btc": "0.00000001685006403706522912198614",
      "usd": "0.0012329274356052188015",
      "usdt": "0.001235"
    },
    "xtz": {
      "btc": "0.00000421050965586110175366499214",
      "usd": "0.30808211062977370214",
      "usdt": "0.3086"
    },
    "meme": {
      "btc": "0.00000000634435609492739396090976",
      "usd": "0.0004642196417460945285",
      "usdt": "0.000465"
    },
    "dego": {
      "btc": "0.00000038202574335046673313005016",
      "usd": "0.0279530106857863372",
      "usdt": "0.028"
    },
    "eos": {
      "btc": "0.00001064078132996532161314736138",
      "usd": "0.77859117978017015651",
      "usdt": "0.7799"
    },
    "nxpc": {
      "btc": "0.0000051151006804352788316558832",
      "usd": "0.37427084664647492201",
      "usdt": "0.3749"
    },
    "rif": {
      "btc": "0.00000091549740638629706403665592",
      "usd": "0.06698739346486654379",
      "usdt": "0.0671"
    },
    "hook": {
      "btc": "0.00000010642145707620144708622826",
      "usd": "0.00778691011961190822",
      "usdt": "0.0078"
    },
    "skl": {
      "btc": "0.00000007531364654623487024563846",
      "usd": "0.005510736392340735048",
      "usdt": "0.00552"
    },
    "gtc": {
      "btc": "0.00000129615877208194070169124161",
      "usd": "0.0948405719696322155",
      "usdt": "0.095"
    },
    "1inch": {
      "btc": "0.00000114472378524545183775921205",
      "usd": "0.08375919987633834611",
      "usdt": "0.0839"
    },
    "id": {
      "btc": "0.00000035747035963564765374602331",
      "usd": "0.02615603142741435838",
      "usdt": "0.0262"
    },
    "portal": {
      "btc": "0.0000001027376374081790893024742",
      "usd": "0.007517363230856111397",
      "usdt": "0.00753"
    },
    "flow": {
      "btc": "0.00000042418501288450038332190212",
      "usd": "0.031037825079324900841",
      "usdt": "0.03109"
    },
    "cookie": {
      "btc": "0.0000001596337102189724255278043",
      "usd": "0.01168036517941786233",
      "usdt": "0.0117"
    },
    "io": {
      "btc": "0.00000214209337644262143656968168",
      "usd": "0.1567365242024448193",
      "usdt": "0.157"
    },
    "xvg": {
      "btc": "0.0000000415589433659114881826476",
      "usd": "0.0030408882338894708254",
      "usdt": "0.003046"
    },
    "iq": {
      "btc": "0.00000001403944606812965244252934",
      "usd": "0.0010272731427026478921",
      "usdt": "0.001029"
    },
    "pnut": {
      "btc": "0.00000069720364035807614910006836",
      "usd": "0.05101424450156006539",
      "usdt": "0.0511"
    },
    "pundix": {
      "btc": "0.00000180643601498577840951495146",
      "usd": "0.13217780767136110876",
      "usdt": "0.1324"
    },
    "unfi": {
      "btc": "0.00001829630435117771032597847367",
      "usd": "1.3387495474871242209",
      "usdt": "1.341"
    },
    "cream": {
      "btc": "0.0000286519307512850049847537619",
      "usd": "2.09647580143397529",
      "usdt": "2.1"
    },
    "forth": {
      "btc": "0.0000032335750419307362768507817",
      "usd": "0.2366022690189772113",
      "usdt": "0.237"
    },
    "clv": {
      "btc": "0.00000040071771722154314114391333",
      "usd": "0.029320711565769454413",
      "usdt": "0.02937"
    },
    "powr": {
      "btc": "0.0000008036261138373910994519379",
      "usd": "0.05880115462117197361",
      "usdt": "0.0589"
    },
    "xvs": {
      "btc": "0.00003547381902540048236207608616",
      "usd": "2.59563670653730274",
      "usdt": "2.6"
    },
    "slp": {
      "btc": "0.00000000807719285894287828311625",
      "usd": "0.0005910065116423397008",
      "usdt": "0.000592"
    },
    "city": {
      "btc": "0.00000578496125644992481596933097",
      "usd": "0.4232884475276216776",
      "usdt": "0.424"
    },
    "cgpt": {
      "btc": "0.00000029880156015346120675717215",
      "usd": "0.02186324764352574231",
      "usdt": "0.0219"
    },
    "celr": {
      "btc": "0.00000003133975473128650307141876",
      "usd": "0.0022931451980446863053",
      "usdt": "0.002297"
    },
    "dot": {
      "btc": "0.00001615438571788575656623250389",
      "usd": "1.1820130232846794016",
      "usdt": "1.184"
    },
    "celo": {
      "btc": "0.00000097170976576500859762579187",
      "usd": "0.071100479322917961978",
      "usdt": "0.07122"
    },
    "ton": {
      "btc": "0.00002402691997398379840636439135",
      "usd": "1.7580447077739192789",
      "usdt": "1.761"
    },
    "ftm": {
      "btc": "0.00000954245731783272975539846718",
      "usd": "0.69822627405853443706",
      "usdt": "0.6994"
    },
    "mav": {
      "btc": "0.00000016631922457857041599862687",
      "usd": "0.012169542866419123231",
      "usdt": "0.01219"
    },
    "ftt": {
      "btc": "0.00000398811397410304615228864939",
      "usd": "0.29180946512340522727",
      "usdt": "0.2923"
    },
    "rlc": {
      "btc": "0.00000576040245866310909741097061",
      "usd": "0.42149146826924969878",
      "usdt": "0.4222"
    },
    "pha": {
      "btc": "0.00000055530700905232288196424232",
      "usd": "0.04063169767541085443",
      "usdt": "0.0407"
    },
    "phb": {
      "btc": "0.00000020465664822346432131966973",
      "usd": "0.0149748271530998235",
      "usdt": "0.015"
    },
    "blz": {
      "btc": "0.00000079406779510704156672031854",
      "usd": "0.05810232935402731518",
      "usdt": "0.0582"
    },
    "api3": {
      "btc": "0.00000409044327552546437378083164",
      "usd": "0.29929687869995513902",
      "usdt": "0.2998"
    },
    "mbl": {
      "btc": "0.00000001143348474741754008439222",
      "usd": "0.0008365936769531768062",
      "usdt": "0.000838"
    },
    "snt": {
      "btc": "0.00000037111072211188196932633444",
      "usd": "0.02715435323762101328",
      "usdt": "0.0272"
    },
    "glmr": {
      "btc": "0.00000016372688227586915438749159",
      "usd": "0.0119798617224798588",
      "usdt": "0.012"
    },
    "rose": {
      "btc": "0.00000012170248681022011641143026",
      "usd": "0.008905030547043361708",
      "usdt": "0.00892"
    },
    "snx": {
      "btc": "0.0000039840208020461494234289621",
      "usd": "0.2915099685803432308",
      "usdt": "0.292"
    },
    "atom": {
      "btc": "0.00002747856596813714287585432212",
      "usd": "2.0106201257562029686",
      "usdt": "2.014"
    },
    "fun": {
      "btc": "0.00000000466617157949498652608847",
      "usd": "0.0003414260590906759758",
      "usdt": "0.000342"
    },
    "arkm": {
      "btc": "0.00000178735179817823826873011656",
      "usd": "0.1307801571370717919",
      "usdt": "0.131"
    },
    "cos": {
      "btc": "0.00000001588150758075930797558668",
      "usd": "0.0011620465870805463036",
      "usdt": "0.001164"
    },
    "usd": {
      "btc": "0.000013666842411765",
      "usd": "1",
      "usdt": "1.001681010848593712"
    },
    "sign": {
      "btc": "0.00000015472190375069635089617955",
      "usd": "0.011320969327743466566",
      "usdt": "0.01134"
    },
    "bmt": {
      "btc": "0.0000001992010401023074711714481",
      "usd": "0.01457549842901716154",
      "usdt": "0.0146"
    },
    "qkc": {
      "btc": "0.00000003656567037494411114653978",
      "usd": "0.002675502451353835132",
      "usdt": "0.00268"
    },
    "cow": {
      "btc": "0.00000210798360930181536273895426",
      "usd": "0.15424071967692818205",
      "usdt": "0.1545"
    },
    "sol": {
      "btc": "0.00110038108796240394177926641838",
      "usd": "80.514653993166717685",
      "usdt": "80.65"
    },
    "high": {
      "btc": "0.00000177369095127002411810380431",
      "usd": "0.129781835326865137",
      "usdt": "0.13"
    },
    "mubarak": {
      "btc": "0.0000001609981009046046684810334",
      "usd": "0.01178019736043852782",
      "usdt": "0.0118"
    },
    "burger": {
      "btc": "0.00000023467295662957242177988795",
      "usd": "0.01717113513555446428",
      "usdt": "0.0172"
    },
    "etc": {
      "btc": "0.00011051564553621167921155682565",
      "usd": "8.08640666267390469",
      "usdt": "8.1"
    },
    "bnb": {
      "btc": "0.00860603068869393565178784979615",
      "usd": "629.701465005949644724",
      "usdt": "630.76"
    },
    "ogn": {
      "btc": "0.0000002773779772255353101619257",
      "usd": "0.020295882401501294117",
      "usdt": "0.02033"
    },
    "eth": {
      "btc": "0.02705191056309904425796862145561",
      "usd": "1979.382636314836736779",
      "usdt": "1982.71"
    },
    "sushi": {
      "btc": "0.00000260598620955758404066757453",
      "usd": "0.1906794657494710859",
      "usdt": "0.191"
    },
    "neo": {
      "btc": "0.00003600592631078148959750722745",
      "usd": "2.6345712571353622811",
      "usdt": "2.639"
    },
    "bera": {
      "btc": "0.00000459799661058065875238205558",
      "usd": "0.3364344500396427013",
      "usdt": "0.337"
    },
    "ordi": {
      "btc": "0.00004641612781708170807530109427",
      "usd": "3.3962907983230399698",
      "usdt": "3.402"
    },
    "pengu": {
      "btc": "0.00000010632696613132069334514349",
      "usd": "0.0077799218669404616357",
      "usdt": "0.007793"
    },
    "kaito": {
      "btc": "0.0000062434517774531437539763461",
      "usd": "0.45683206035056528224",
      "usdt": "0.4576"
    },
    "lista": {
      "btc": "0.00000084182101302584990836157481",
      "usd": "0.06159645568975060733",
      "usdt": "0.0617"
    },
    "trb": {
      "btc": "0.00022021265666104401265117619333",
      "usd": "16.112914016735410086",
      "usdt": "16.14"
    },
    "alt": {
      "btc": "0.00000009578022613138345531668258",
      "usd": "0.007008219107650717398",
      "usdt": "0.00702"
    },
    "bnt": {
      "btc": "0.00000435782222950496694863350074",
      "usd": "0.31886398618000557506",
      "usdt": "0.3194"
    },
    "lever": {
      "btc": "0.00000000238766089594041708206281",
      "usd": "0.0001747063167861646075",
      "usdt": "0.000175"
    },
    "utk": {
      "btc": "0.00000010846802355843609029942496",
      "usd": "0.007936658391142906455",
      "usdt": "0.00795"
    },
    "bnx": {
      "btc": "0.0000243118454312927382773012992",
      "usd": "1.77890963360723836631",
      "usdt": "1.7819"
    },
    "hifi": {
      "btc": "0.00000173275962162533125383987036",
      "usd": "0.1267868698962451723",
      "usdt": "0.127"
    },
    "orca": {
      "btc": "0.00001742326905552374251273556374",
      "usd": "1.2748569516338983073",
      "usdt": "1.277"
    },
    "egld": {
      "btc": "0.00004775367399712850336301838145",
      "usd": "3.49412633572329215",
      "usdt": "3.5"
    },
    "tru": {
      "btc": "0.00000003138068606093119593568269",
      "usd": "0.00229614016347530627",
      "usdt": "0.0023"
    },
    "amb": {
      "btc": "0.00000000436600849543390552148629",
      "usd": "0.000319462979266129568",
      "usdt": "0.00032"
    },
    "nfp": {
      "btc": "0.00000012552394307816635169707688",
      "usd": "0.00918456065390122508",
      "usdt": "0.0092"
    },
    "ustc": {
      "btc": "0.00000008227197258583265717050723",
      "usd": "0.006019880515546129047",
      "usdt": "0.00603"
    },
    "trx": {
      "btc": "0.00000476990983697032136448892175",
      "usd": "0.34901330484824655304",
      "usdt": "0.3496"
    },
    "mdt": {
      "btc": "0.00000005498441948937074766121793",
      "usd": "0.004023236895132819247",
      "usdt": "0.00403"
    },
    "nuls": {
      "btc": "0.00000035200943494435863266983193",
      "usd": "0.02575670270333169642",
      "usdt": "0.0258"
    },
    "mdx": {
      "btc": "0.00000047071029091396793903524037",
      "usd": "0.03444210245212959405",
      "usdt": "0.0345"
    },
    "fdusd": {
      "btc": "0.00001362740401637307760893907494",
      "usd": "0.99712382403440691412",
      "usdt": "0.9988"
    },
    "amp": {
      "btc": "0.00000000993276419140272869950782",
      "usd": "0.0007267782778304447672",
      "usdt": "0.000728"
    },
    "pendle": {
      "btc": "0.00002080695795589170503674372334",
      "usd": "1.5224407605651487225",
      "usdt": "1.525"
    },
    "busd": {
      "btc": "0.00001364786968119542404107104192",
      "usd": "0.99862130674971689647",
      "usdt": "1.0003"
    },
    "alcx": {
      "btc": "0.00005484798172388843811367148706",
      "usd": "4.013253677030752698",
      "usdt": "4.02"
    },
    "arpa": {
      "btc": "0.00000013371028719195980941645146",
      "usd": "0.00978355374002521802",
      "usdt": "0.0098"
    },
    "tst": {
      "btc": "0.00000022921763518621681614248823",
      "usd": "0.01677180641147180232",
      "usdt": "0.0168"
    },
    "og": {
      "btc": "0.0000373703039656045850729716923",
      "usd": "2.7344034381560277711",
      "usdt": "2.739"
    },
    "ethfi": {
      "btc": "0.0000049527381888450419202216207",
      "usd": "0.3623908171050157287",
      "usdt": "0.363"
    },
    "flux": {
      "btc": "0.00000090731114045735849118386913",
      "usd": "0.06638840037874255085",
      "usdt": "0.0665"
    },
    "render": {
      "btc": "0.00002674205743839196188329029361",
      "usd": "1.956710748005043604",
      "usdt": "1.96"
    },
    "beta": {
      "btc": "0.00000000491175955736314371167207",
      "usd": "0.000359395851674395764",
      "usdt": "0.00036"
    },
    "om": {
      "btc": "0.00000091276865107665087308572699",
      "usd": "0.06678772910282521281",
      "usdt": "0.0669"
    },
    "fxs": {
      "btc": "0.0000110787465571635352607714546",
      "usd": "0.8106373098878037788",
      "usdt": "0.812"
    },
    "op": {
      "btc": "0.00000158131370193996765606331476",
      "usd": "0.11570549780295130291",
      "usdt": "0.1159"
    },
    "pla": {
      "btc": "0.00000320219435586980508091509901",
      "usd": "0.23430612885550190503",
      "usdt": "0.2347"
    },
    "ant": {
      "btc": "0.0001010594528927466818676529116",
      "usd": "7.3945696482006928443",
      "usdt": "7.407"
    },
    "crv": {
      "btc": "0.00000286931361188460693064079017",
      "usd": "0.20994707668645952547",
      "usdt": "0.2103"
    },
    "eigen": {
      "btc": "0.00000283793262611506534271652095",
      "usd": "0.2076509365229842192",
      "usdt": "0.208"
    },
    "aeur": {
      "btc": "0.00001564531856785643581715101846",
      "usd": "1.14477561976397117383",
      "usdt": "1.1467"
    },
    "srm": {
      "btc": "0.00000333481186391860996113024499",
      "usd": "0.244009816850710590658",
      "usdt": "0.24442"
    },
    "badger": {
      "btc": "0.00001039655772975198752303922217",
      "usd": "0.7607212193774710338",
      "usdt": "0.762"
    },
    "rpl": {
      "btc": "0.00002169381190155266295634263614",
      "usd": "1.587331678228581291",
      "usdt": "1.59"
    },
    "super": {
      "btc": "0.0000014899146287104093049261735",
      "usd": "0.10901674167456671508",
      "usdt": "0.1092"
    },
    "aevo": {
      "btc": "0.00000030971668563851915038300493",
      "usd": "0.02266190509169106623",
      "usdt": "0.0227"
    },
    "cyber": {
      "btc": "0.00000586687994821864469888511543",
      "usd": "0.429278378388861607",
      "usdt": "0.43"
    },
    "qnt": {
      "btc": "0.00095943953013659324471070073826",
      "usd": "70.201989693731972568",
      "usdt": "70.32"
    },
    "ldo": {
      "btc": "0.00000427323081490593502915470392",
      "usd": "0.31267439095672431468",
      "usdt": "0.3132"
    },
    "bake": {
      "btc": "0.00000070811200285318655176605726",
      "usd": "0.05181290194972538931",
      "usdt": "0.0519"
    },
    "anime": {
      "btc": "0.00000005184684605402523222270567",
      "usd": "0.00379362287878528862",
      "usdt": "0.0038"
    },
    "vanry": {
      "btc": "0.00000006082395585201359629620584",
      "usd": "0.0044505186299012675442",
      "usdt": "0.004458"
    },
    "pyth": {
      "btc": "0.00000051573967916898783632059851",
      "usd": "0.03773656442581155522",
      "usdt": "0.0378"
    },
    "mbox": {
      "btc": "0.00000014326102199138551008905514",
      "usd": "0.01048237900716987645",
      "usdt": "0.0105"
    },
    "tut": {
      "btc": "0.00000013057218861500565062402454",
      "usd": "0.009553939723677687393",
      "usdt": "0.00957"
    },
    "cake": {
      "btc": "0.00001803724486405825184168865722",
      "usd": "1.3197814330931977778",
      "usdt": "1.322"
    },
    "ssv": {
      "btc": "0.00003177665906837493838070566011",
      "usd": "2.3250914959712992621",
      "usdt": "2.329"
    },
    "ape": {
      "btc": "0.00000166455663647133640293949786",
      "usd": "0.1217952608452118978",
      "usdt": "0.122"
    },
    "qi": {
      "btc": "0.00000001991991376041719394178119",
      "usd": "0.001457549842901716154",
      "usdt": "0.00146"
    },
    "ctk": {
      "btc": "0.00000202748455884951302849843756",
      "usd": "0.14835062099670891814",
      "usdt": "0.1486"
    },
    "band": {
      "btc": "0.0000025377666752759718930061197",
      "usd": "0.1856878566984378114",
      "usdt": "0.186"
    },
    "iotx": {
      "btc": "0.00000005375647960002996173329992",
      "usd": "0.003933387932214220306",
      "usdt": "0.00394"
    },
    "shib": {
      "btc": "0.00000000007176695006425597933985",
      "usd": "0.000005251172721687004774",
      "usdt": "0.00000526"
    },
    "dock": {
      "btc": "0.00000005321072853810072354311413",
      "usd": "0.00389345505980595411",
      "usdt": "0.0039"
    },
    "astr": {
      "btc": "0.00000009646150019599285011533767",
      "usd": "0.007058135198161050143",
      "usdt": "0.00707"
    },
    "waves": {
      "btc": "0.00001468070356589650731599764181",
      "usd": "1.0741942677823606724",
      "usdt": "1.076"
    },
    "reef": {
      "btc": "0.00000000938691826518289687119552",
      "usd": "0.0006868454054221785712",
      "usdt": "0.000688"
    },
    "apt": {
      "btc": "0.00001256591820092070932902772129",
      "usd": "0.9194543872003291629",
      "usdt": "0.921"
    },
    "stg": {
      "btc": "0.00000212297163090473655982270731",
      "usd": "0.15533887366815550244",
      "usdt": "0.1556"
    },
    "dent": {
      "btc": "0.0000000005184635088327762806765",
      "usd": "0.0000379362287878528862",
      "usdt": "0.000038"
    },
    "kda": {
      "btc": "0.00000008186265928938572852786789",
      "usd": "0.0059899308612399294",
      "usdt": "0.006"
    },
    "metis": {
      "btc": "0.00004093132964469286426393394557",
      "usd": "2.9949654306199647",
      "usdt": "3"
    },
    "loka": {
      "btc": "0.00000168773515901616910314954302",
      "usd": "0.12349240792256321113",
      "usdt": "0.1237"
    },
    "sto": {
      "btc": "0.00000080908367657992007126485429",
      "usd": "0.05920048334525463557",
      "usdt": "0.0593"
    },
    "iost": {
      "btc": "0.00000001342547612345925947857033",
      "usd": "0.0009823486612433484216",
      "usdt": "0.000984"
    },
    "stx": {
      "btc": "0.00000306712096804231862884411699",
      "usd": "0.22442274293445602152",
      "usdt": "0.2248"
    },
    "sui": {
      "btc": "0.00001241049767651088190257186279",
      "usd": "0.90807351856397329704",
      "usdt": "0.9096"
    },
    "bsw": {
      "btc": "0.00000015281029734018669325202006",
      "usd": "0.01118120427431453488",
      "usdt": "0.0112"
    },
    "omg": {
      "btc": "0.00000522556641797245567102890038",
      "usd": "0.3823572533091488267",
      "usdt": "0.383"
    },
    "pol": {
      "btc": "0.00000118701989650005136930931405",
      "usd": "0.0868539974879789763",
      "usdt": "0.087"
    },
    "sun": {
      "btc": "0.0000002528215940476546192333516",
      "usd": "0.018498903143129315297",
      "usdt": "0.01853"
    },
    "wbtc": {
      "btc": "0.99729168448901999773784024268639",
      "usd": "72971.623908570193190521",
      "usdt": "73094.29"
    },
    "pivx": {
      "btc": "0.00000076814461966540275268649371",
      "usd": "0.05620551791463467087",
      "usdt": "0.0563"
    },
    "nkn": {
      "btc": "0.00000009959956880208596970890593",
      "usd": "0.00728774921450858077",
      "usdt": "0.0073"
    },
    "porto": {
      "btc": "0.00000908684196631073806850578344",
      "usd": "0.6648823255976321634",
      "usdt": "0.666"
    },
    "rsr": {
      "btc": "0.00000002127085078900666764084161",
      "usd": "0.0015563837021121749891",
      "usdt": "0.001559"
    },
    "sc": {
      "btc": "0.00000001180186671421977586276762",
      "usd": "0.0008635483658287564885",
      "usdt": "0.000865"
    },
    "twt": {
      "btc": "0.00000597051661750586580063249819",
      "usd": "0.43686562414643218424",
      "usdt": "0.4376"
    },
    "arb": {
      "btc": "0.00000138622093660235884048076215",
      "usd": "0.10142949591699613784",
      "usdt": "0.1016"
    },
    "btc": {
      "btc": "1",
      "usd": "73169.790787896214188171",
      "usdt": "73292.79"
    },
    "cvc": {
      "btc": "0.00000036743041164076302730459571",
      "usd": "0.026884806348865216457",
      "usdt": "0.02693"
    },
    "floki": {
      "btc": "0.0000000003686548423332003974705",
      "usd": "0.000026974655311783815398",
      "usdt": "0.00002702"
    },
    "audio": {
      "btc": "0.00000025377666752759718930061197",
      "usd": "0.01856878566984378114",
      "usdt": "0.0186"
    },
    "ark": {
      "btc": "0.00000196743257825490367561975832",
      "usd": "0.14395800503179963658",
      "usdt": "0.1442"
    },
    "cvp": {
      "btc": "0.00000046252402498502936618245358",
      "usd": "0.03384310936600560111",
      "usdt": "0.0339"
    },
    "key": {
      "btc": "0.00000001709565201493338630756974",
      "usd": "0.0012508972281889385897",
      "usdt": "0.001253"
    },
    "btt": {
      "btc": "0",
      "usd": "0",
      "usdt": "0"
    },
    "cvx": {
      "btc": "0.00002046586028448364429843644919",
      "usd": "1.49748271530998235",
      "usdt": "1.5"
    },
    "btx": {
      "btc": "0.00000267147696246793170242257116",
      "usd": "0.19547141043846302942",
      "usdt": "0.1958"
    },
    "one": {
      "btc": "0.00000002387660895940417082062813",
      "usd": "0.001747063167861646075",
      "usdt": "0.00175"
    },
    "ong": {
      "btc": "0.0000008347262492207698118891596",
      "usd": "0.061077328348443146782",
      "usdt": "0.06118"
    },
    "storj": {
      "btc": "0.00000136029751357534622436940932",
      "usd": "0.09953268447760349353",
      "usdt": "0.0997"
    },
    "people": {
      "btc": "0.00000008322783182356682014697489",
      "usd": "0.00608976304226059489",
      "usdt": "0.0061"
    },
    "tnsr": {
      "btc": "0.00000047480795860002054772372562",
      "usd": "0.03474159899519159052",
      "usdt": "0.0348"
    },
    "bttc": {
      "btc": "0.00000000000422957072995159597394",
      "usd": "0.000000309479761164063019",
      "usdt": "0.00000031"
    },
    "ont": {
      "btc": "0.00000070811200285318655176605726",
      "usd": "0.05181290194972538931",
      "usdt": "0.0519"
    },
    "mana": {
      "btc": "0.00000111743597153280697869463012",
      "usd": "0.08176255625592503631",
      "usdt": "0.0819"
    },
    "dodo": {
      "btc": "0.00000024422593272817148862800829",
      "usd": "0.01786996040269912271",
      "usdt": "0.0179"
    },
    "ankr": {
      "btc": "0.00000005976031203069224135143443",
      "usd": "0.004372649528705148462",
      "usdt": "0.00438"
    },
    "algo": {
      "btc": "0.0000014285034045997809628112947",
      "usd": "0.10452429352863676803",
      "usdt": "0.1047"
    },
    "asr": {
      "btc": "0.00001360297513575346224369409323",
      "usd": "0.9953268447760349353",
      "usdt": "0.997"
    },
    "ast": {
      "btc": "0.00000035610256790882791909622533",
      "usd": "0.02605619924639369289",
      "usdt": "0.0261"
    },
    "dusk": {
      "btc": "0.00000162498930658800135729585406",
      "usd": "0.11890012759561259859",
      "usdt": "0.1191"
    },
    "doge": {
      "btc": "0.00000133028091849143687939836919",
      "usd": "0.09733637649514885275",
      "usdt": "0.0975"
    },
    "bome": {
      "btc": "0.0000000066445826390290231822257",
      "usd": "0.0004861827215706409363",
      "usdt": "0.000487"
    },
    "ata": {
      "btc": "0.00000001637253185787714570557358",
      "usd": "0.00119798617224798588",
      "usdt": "0.0012"
    },
    "kmno": {
      "btc": "0.00000024354373738535536715139374",
      "usd": "0.017820044312188789965",
      "usdt": "0.01785"
    },
    "nmr": {
      "btc": "0.00011228935342753359505075465124",
      "usd": "8.216188498000769827",
      "usdt": "8.23"
    },
    "loom": {
      "btc": "0.00000065913084504503742419688297",
      "usd": "0.048228926651083498219",
      "usdt": "0.04831"
    },
    "mkr": {
      "btc": "0.02474571752552648263849899902433",
      "usd": "1810.65626717180999213",
      "usdt": "1813.7"
    },
    "lit": {
      "btc": "0.00001013732597533559938270097385",
      "usd": "0.7417531049835445907",
      "usdt": "0.743"
    },
    "icp": {
      "btc": "0.00003618329540590849200931760788",
      "usd": "2.6475494406680487948",
      "usdt": "2.652"
    },
    "dogs": {
      "btc": "0.00000000063443560949273939609098",
      "usd": "0.00004642196417460945285",
      "usdt": "0.0000465"
    },
    "zec": {
      "btc": "0.00715670655060906500700130393572",
      "usd": "523.659722325798761246",
      "usdt": "524.54"
    },
    "atm": {
      "btc": "0.00001334374090548333608258056487",
      "usd": "0.9763587303821084922",
      "usdt": "0.978"
    },
    "hbar": {
      "btc": "0.00000113911890401180241246528171",
      "usd": "0.083349887934153617601",
      "usdt": "0.08349"
    },
    "ondo": {
      "btc": "0.00000485177327810825594168266755",
      "usd": "0.35500323570948648244",
      "usdt": "0.3556"
    },
    "pepe": {
      "btc": "0.00000000004516133169442724175188",
      "usd": "0.000003304445191784027719",
      "usdt": "0.00000331"
    },
    "icx": {
      "btc": "0.0000004775321791880834164125627",
      "usd": "0.0349412633572329215",
      "usdt": "0.035"
    },
    "xai": {
      "btc": "0.00000012538750400960312740175397",
      "usd": "0.009174577435799158531",
      "usdt": "0.00919"
    },
    "chess": {
      "btc": "0.00000003833901210052898286055146",
      "usd": "0.002805284286680700269",
      "usdt": "0.00281"
    },
    "usual": {
      "btc": "0.00000016850064037065229121986141",
      "usd": "0.012329274356052188015",
      "usdt": "0.01235"
    },
    "ctsi": {
      "btc": "0.00000036660827585096575425730171",
      "usd": "0.026824907040252817163",
      "usdt": "0.02687"
    },
    "sxp": {
      "btc": "0.00000003001630840610810046021823",
      "usd": "0.00219630798245464078",
      "usdt": "0.0022"
    },
    "rvn": {
      "btc": "0.00000006794600721019015467813035",
      "usd": "0.004971642614829141402",
      "usdt": "0.00498"
    },
    "sxt": {
      "btc": "0.00000014871858473391448190197153",
      "usd": "0.01088170773125253841",
      "usdt": "0.0109"
    },
    "ntrn": {
      "btc": "0.00000002183004247716952760743144",
      "usd": "0.00159731489633064784",
      "usdt": "0.0016"
    },
    "osmo": {
      "btc": "0.00000074631457718823322507906227",
      "usd": "0.05460820301830402303",
      "usdt": "0.0547"
    },
    "kava": {
      "btc": "0.00000072734972778619219797010621",
      "usd": "0.053220535702116772719",
      "usdt": "0.05331"
    },
    "ocean": {
      "btc": "0.00000835408438048181359626891829",
      "usd": "0.61127244438953479527",
      "usdt": "0.6123"
    },
    "vidt": {
      "btc": "0.00000001569034303046559796784135",
      "usd": "0.001148070081737653135",
      "usdt": "0.00115"
    },
    "c98": {
      "btc": "0.00000025923423027012616111352835",
      "usd": "0.0189681143939264431",
      "usdt": "0.019"
    },
    "psg": {
      "btc": "0.00001575871241905240610979606588",
      "usd": "1.1530616907886864095",
      "usdt": "1.155"
    },
    "perp": {
      "btc": "0.00000170547206852886934433058107",
      "usd": "0.1247902262758318625",
      "usdt": "0.125"
    },
    "syn": {
      "btc": "0.00000054302230661959199923485701",
      "usd": "0.03973320804622486502",
      "usdt": "0.0398"
    },
    "jasmy": {
      "btc": "0.00000007176695006425597933985048",
      "usd": "0.005251172721687004774",
      "usdt": "0.00526"
    },
    "sys": {
      "btc": "0.00000003042562170255502910285757",
      "usd": "0.002226257636760840427",
      "usdt": "0.00223"
    },
    "auction": {
      "btc": "0.00005962387296212901705611152198",
      "usd": "4.362666310603081913",
      "usdt": "4.37"
    },
    "not": {
      "btc": "0.00000000585318013919107958974255",
      "usd": "0.0004282800565786549521",
      "usdt": "0.000429"
    },
    "gal": {
      "btc": "0.00003468247998560308698630669654",
      "usd": "2.5377340415453167558",
      "usdt": "2.542"
    },
    "nexo": {
      "btc": "0.00001113342799475910249834942836",
      "usd": "0.8146305971286303984",
      "usdt": "0.816"
    },
    "bico": {
      "btc": "0.00000031244248295448886388136245",
      "usd": "0.02286156945373239721",
      "usdt": "0.0229"
    },
    "mask": {
      "btc": "0.00000581230432079335498075595157",
      "usd": "0.4252850911480349874",
      "usdt": "0.426"
    },
    "hmstr": {
      "btc": "0.0000000021339070323288279788503",
      "usd": "0.00015613753111632082636",
      "usdt": "0.0001564"
    },
    "aave": {
      "btc": "0.00109587859869981754003361039956",
      "usd": "80.185207795798521568",
      "usdt": "80.32"
    },
    "bonk": {
      "btc": "0.00000000007244914540707210081646",
      "usd": "0.000005301088812197337519",
      "usdt": "0.00000531"
    },
    "wan": {
      "btc": "0.00000074085706656894084317720441",
      "usd": "0.05420887429422136107",
      "usdt": "0.0543"
    },
    "orn": {
      "btc": "0.00001436689670528719535664081489",
      "usd": "1.0512328661476076097",
      "usdt": "1.053"
    },
    "bond": {
      "btc": "0.00002936140713179301463199528362",
      "usd": "2.1483885355647213448",
      "usdt": "2.152"
    },
    "awe": {
      "btc": "0.00000073977262974980212924081618",
      "usd": "0.054129008549404828678",
      "usdt": "0.05422"
    },
    "kp3r": {
      "btc": "0.00022484943751484613435654380764",
      "usd": "16.452343432205672752",
      "usdt": "16.48"
    },
    "lqty": {
      "btc": "0.0000031790302975231260810237951",
      "usd": "0.2326089817781505917",
      "usdt": "0.233"
    },
    "bigtime": {
      "btc": "0.00000014926434100816737908326316",
      "usd": "0.010921640603660804606",
      "usdt": "0.01094"
    },
    "yfi": {
      "btc": "0.03147649311753584493099525886191",
      "usd": "2303.1284161467528543",
      "usdt": "2307"
    },
    "dexe": {
      "btc": "0.00022509502549271429154212741132",
      "usd": "16.4703132247893925402",
      "usdt": "16.498"
    },
    "avax": {
      "btc": "0.00011965706312994770699819177296",
      "usd": "8.755282275512363473",
      "usdt": "8.77"
    },
    "trump": {
      "btc": "0.00002524122768419649463473828734",
      "usd": "1.846895348882311565",
      "usdt": "1.85"
    },
    "alice": {
      "btc": "0.00000160179466493225322709095942",
      "usd": "0.11720298051826128526",
      "usdt": "0.1174"
    },
    "ooki": {
      "btc": "0.00000000162360940923948361580271",
      "usd": "0.0001188002954145919331",
      "usdt": "0.000119"
    },
    "rune": {
      "btc": "0.00000560759216132292240415895054",
      "usd": "0.4103102639949351639",
      "usdt": "0.411"
    },
    "axl": {
      "btc": "0.00000069311046830117942024038107",
      "usd": "0.05071474795849806892",
      "usdt": "0.0508"
    },
    "alpaca": {
      "btc": "0.00000306166345742302624694225913",
      "usd": "0.22402341421037335956",
      "usdt": "0.2244"
    },
    "xec": {
      "btc": "0.00000000009073111404573584911839",
      "usd": "0.000006638840037874255085",
      "usdt": "0.00000665"
    },
    "ygg": {
      "btc": "0.00000046075473453800844530546592",
      "usd": "0.033713327530678735973",
      "usdt": "0.03377"
    },
    "zil": {
      "btc": "0.00000005089128652490146123482454",
      "usd": "0.003723740352070822777",
      "usdt": "0.00373"
    },
    "axs": {
      "btc": "0.00001469434734244473827075228646",
      "usd": "1.0751925895925673273",
      "usdt": "1.077"
    },
    "comp": {
      "btc": "0.00023563027140868835802266498506",
      "usd": "17.241017662268930123",
      "usdt": "17.27"
    },
    "epic": {
      "btc": "0.00000266056183698287375879673839",
      "usd": "0.1946727529902977055",
      "usdt": "0.195"
    },
    "zk": {
      "btc": "0.00000018118935256050707914168093",
      "usd": "0.013257713639544377072",
      "usdt": "0.01328"
    },
    "ctxc": {
      "btc": "0.00000086501543315784253144447072",
      "usd": "0.06329360276710192066",
      "usdt": "0.0634"
    },
    "ghst": {
      "btc": "0.00000147352786720894311350162204",
      "usd": "0.1078187555023187292",
      "usdt": "0.108"
    },
    "hft": {
      "btc": "0.00000014189527610160192944830434",
      "usd": "0.01038254682614921096",
      "usdt": "0.0104"
    },
    "beamx": {
      "btc": "0.00000002247129997493638248089974",
      "usd": "0.0016442360214103606203",
      "usdt": "0.001647"
    },
    "idex": {
      "btc": "0.00000002715111533097959996174285",
      "usd": "0.001986660402311243251",
      "usdt": "0.00199"
    },
    "hive": {
      "btc": "0.0000007763308855943413255392805",
      "usd": "0.05680451100075866381",
      "usdt": "0.0569"
    },
    "kmd": {
      "btc": "0.00000022239355773616456250070777",
      "usd": "0.01627264550636847487",
      "usdt": "0.0163"
    },
    "steem": {
      "btc": "0.00000069037509334048631058501922",
      "usd": "0.05051508359645673794",
      "usdt": "0.0506"
    },
    "rdnt": {
      "btc": "0.00000004475158707819753159523445",
      "usd": "0.003274495537477828072",
      "usdt": "0.00328"
    },
    "pros": {
      "btc": "0.00000050754848759419151687278093",
      "usd": "0.03713757133968756228",
      "usdt": "0.0372"
    },
    "prom": {
      "btc": "0.00001418966313057532671358260477",
      "usd": "1.038254682614921096",
      "usdt": "1.04"
    },
    "usd1": {
      "btc": "0.00001363408324338587738302771663",
      "usd": "0.997603018503306108472",
      "usdt": "0.99928"
    },
    "knc": {
      "btc": "0.00000186510425414317151495992345",
      "usd": "0.13647059145524972483",
      "usdt": "0.1367"
    },
    "bifi": {
      "btc": "0.00043796522719821364762409321756",
      "usd": "32.04613010763362229",
      "usdt": "32.1"
    },
    "manta": {
      "btc": "0.00000104947929208992503972726636",
      "usd": "0.076790913641095894908",
      "usdt": "0.07692"
    },
    "lpt": {
      "btc": "0.00002832475063372536370903604568",
      "usd": "2.0725160779890155724",
      "usdt": "2.076"
    },
    "gft": {
      "btc": "0.00000002674180203453267131910351",
      "usd": "0.001956710748005043604",
      "usdt": "0.00196"
    },
    "voxel": {
      "btc": "0.00000019101287167523336656502508",
      "usd": "0.0139765053428931686",
      "usdt": "0.014"
    },
    "waxp": {
      "btc": "0.00000007927034174522184712448541",
      "usd": "0.005800249717300664969",
      "usdt": "0.00581"
    },
    "magic": {
      "btc": "0.00000076132273139128727530917139",
      "usd": "0.05570635700953134342",
      "usdt": "0.0558"
    },
    "quick": {
      "btc": "0.00000010505808279368270739864043",
      "usd": "0.00768707793859124273",
      "usdt": "0.0077"
    },
    "data": {
      "btc": "0.00000001200652336244324018408729",
      "usd": "0.000878523192981856312",
      "usdt": "0.00088"
    },
    "pyr": {
      "btc": "0.00000315174248381048122195921317",
      "usd": "0.2306123381577372819",
      "usdt": "0.231"
    },
    "dai": {
      "btc": "0",
      "usd": "0",
      "usdt": "0"
    },
    "lazio": {
      "btc": "0.0000067673778007359250480163192",
      "usd": "0.4951676178625008304",
      "usdt": "0.496"
    },
    "dar": {
      "btc": "0.00000296165457532449334859071385",
      "usd": "0.216705715341558579143",
      "usdt": "0.21707"
    },
    "fet": {
      "btc": "0.00000296072778782196720850713965",
      "usd": "0.2166358328148441133",
      "usdt": "0.217"
    },
    "usdt": {
      "btc": "0.00001364390685632242953229096613",
      "usd": "0.9983218102066549",
      "usdt": "1"
    },
    "lrc": {
      "btc": "0.00000025636656134125963983977295",
      "usd": "0.018758466813783045571",
      "usdt": "0.01879"
    },
    "saga": {
      "btc": "0.00000024613372893008642377378946",
      "usd": "0.018009725456128054396",
      "usdt": "0.01804"
    },
    "hyper": {
      "btc": "0.00000122385844501212192904649966",
      "usd": "0.08954946637553694453",
      "usdt": "0.0897"
    },
    "usdn": {
      "btc": "0.00001364390685632242953229096613",
      "usd": "0.9983218102066549",
      "usdt": "1"
    },
    "spell": {
      "btc": "0.00000000199610357307997144057416",
      "usd": "0.00014605448083323361187",
      "usdt": "0.0001463"
    },
    "tao": {
      "btc": "0.00350917932820500156289460359986",
      "usd": "256.76836958515164028",
      "usdt": "257.2"
    },
    "mtl": {
      "btc": "0.0000037383947742152816027726337",
      "usd": "0.2735401759966234426",
      "usdt": "0.274"
    },
    "vet": {
      "btc": "0.000000080552856740755556871422",
      "usd": "0.0058940919674600905296",
      "usdt": "0.005904"
    },
    "oxt": {
      "btc": "0.0000001282514995533709746936597",
      "usd": "0.00938422501594255606",
      "usdt": "0.0094"
    },
    "usdc": {
      "btc": "0.00001365959734920720032625310074",
      "usd": "0.999469880288392553135",
      "usdt": "1.00115"
    },
    "aergo": {
      "btc": "0.00000086637981081266562691993518",
      "usd": "0.06339343494812258615",
      "usdt": "0.0635"
    },
    "ilv": {
      "btc": "0.00005280191953396780228996603892",
      "usd": "3.863505405499754463",
      "usdt": "3.87"
    },
    "alpine": {
      "btc": "0.00000551213836995426153104555031",
      "usd": "0.4033220113234885796",
      "usdt": "0.404"
    },
    "edu": {
      "btc": "0.00000058668239157393105444971989",
      "usd": "0.0429278378388861607",
      "usdt": "0.043"
    },
    "dash": {
      "btc": "0.00053087934549166644950322327399",
      "usd": "38.844701635140942159",
      "usdt": "38.91"
    },
    "joe": {
      "btc": "0.00000051164162055866080329917432",
      "usd": "0.03743706788274955875",
      "usdt": "0.0375"
    },
    "pond": {
      "btc": "0.00000002374017119392186127308169",
      "usd": "0.001737079949759579526",
      "usdt": "0.00174"
    },
    "lina": {
      "btc": "0.00000000459795269675383175231525",
      "usd": "0.0003364344500396427013",
      "usdt": "0.000337"
    },
    "lsk": {
      "btc": "0.00000147352786720894311350162204",
      "usd": "0.1078187555023187292",
      "usdt": "0.108"
    },
    "dydx": {
      "btc": "0.00000198667030318790932182380727",
      "usd": "0.145365638784191019989",
      "usdt": "0.14561"
    },
    "link": {
      "btc": "0.00012033925847276382847480632126",
      "usd": "8.805198366022696218",
      "usdt": "8.82"
    },
    "akro": {
      "btc": "0.0000000133845447938145666143064",
      "usd": "0.0009793536958127284569",
      "usdt": "0.000981"
    },
    "qtum": {
      "btc": "0.0000115562787363516186771840173",
      "usd": "0.8455785732450367003",
      "usdt": "0.847"
    },
    "coti": {
      "btc": "0.00000015199312237943186498972136",
      "usd": "0.011121304965702135586",
      "usdt": "0.01114"
    },
    "dcr": {
      "btc": "0.00021843686253717758562186082284",
      "usd": "15.983132181408544949",
      "usdt": "16.01"
    },
    "wif": {
      "btc": "0.00000238766089594041708206281349",
      "usd": "0.1747063167861646075",
      "usdt": "0.175"
    },
    "imx": {
      "btc": "0.00000210116165587365414797280878",
      "usd": "0.1537415587718248546",
      "usdt": "0.154"
    },
    "ltc": {
      "btc": "0.00069023865557500400103747276873",
      "usd": "50.505100378354671391",
      "usdt": "50.59"
    },
    "win": {
      "btc": "0.00000000025977750547831737852843",
      "usd": "0.000019008047266334709296",
      "usdt": "0.00001904"
    },
    "move": {
      "btc": "0.00000019510786804541074231176081",
      "usd": "0.01427600188595516507",
      "usdt": "0.0143"
    },
    "inj": {
      "btc": "0.00007285776676755329838980242311",
      "usd": "5.331038466503537166",
      "usdt": "5.34"
    },
    "vgx": {
      "btc": "0.00000024558797786815718558360367",
      "usd": "0.0179697925837197882",
      "usdt": "0.018"
    },
    "lto": {
      "btc": "0.00000005184635088327762806764966",
      "usd": "0.00379362287878528862",
      "usdt": "0.0038"
    },
    "movr": {
      "btc": "0.00002414948449036878991572102788",
      "usd": "1.767029604065779173",
      "usdt": "1.77"
    },
    "pols": {
      "btc": "0.00000420091879920031096895508728",
      "usd": "0.30738328536262904371",
      "usdt": "0.3079"
    },
    "xlm": {
      "btc": "0.00000248589608708767995629625496",
      "usd": "0.18189423381965252278",
      "usdt": "0.1822"
    },
    "agix": {
      "btc": "0.00000837864317826862931482727866",
      "usd": "0.61306942364790677409",
      "usdt": "0.6141"
    },
    "stmx": {
      "btc": "0.00000006228383994267430845495282",
      "usd": "0.0045573390635933796185",
      "usdt": "0.004565"
    },
    "front": {
      "btc": "0.0000120065233624432401840872907",
      "usd": "0.878523192981856312",
      "usdt": "0.88"
    },
    "gala": {
      "btc": "0.00000004065845411372824516884105",
      "usd": "0.002974998994415831602",
      "usdt": "0.00298"
    },
    "rndr": {
      "btc": "0.00009591574913406361192515187911",
      "usd": "7.018202325752783947",
      "usdt": "7.03"
    }
  },
  "ts": 1779971248065
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:28.536350" elapsed="0.001236"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:28.539654" level="INFO">${data} = {'uft': {'btc': '0.00000012142961127925549731633737', 'usd': '0.00888506411083922861', 'usdt': '0.0089'}, 'ksm': {'btc': '0.0000600326168122162009204364535', 'usd': '4.39261596490928156', 'usdt': '4.4...</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:28.537747" elapsed="0.001943"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:28.539840" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, list)</arg>
<arg>验证价格转换列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:28.540341" elapsed="0.000185"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证价格转换字典结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($convert_dict, dict)</arg>
<arg>价格转换数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:28.541581" elapsed="0.000231"/>
</kw>
<kw name="Get Dictionary Keys" owner="Collections">
<msg time="2026-05-28T20:27:28.542264" level="INFO">${dict_keys} = ['1000sats', '1inch', 'aave', 'aca', 'ach', 'acm', 'act', 'acx', 'ada', 'adx', 'aergo', 'aeur', 'aevo', 'agix', 'agld', 'ai', 'aixbt', 'akro', 'alcx', 'algo', 'alice', 'alpaca', 'alpha', 'alpine', 'al...</msg>
<var>${dict_keys}</var>
<arg>${convert_dict}</arg>
<doc>Returns keys of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-05-28T20:27:28.541940" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.542601" level="INFO">价格转换字典包含字段: ['1000sats', '1inch', 'aave', 'aca', 'ach', 'acm', 'act', 'acx', 'ada', 'adx', 'aergo', 'aeur', 'aevo', 'agix', 'agld', 'ai', 'aixbt', 'akro', 'alcx', 'algo', 'alice', 'alpaca', 'alpha', 'alpine', 'alt', 'amb', 'amp', 'anime', 'ankr', 'ant', 'ape', 'api3', 'apt', 'ar', 'arb', 'ardr', 'ark', 'arkm', 'arpa', 'asr', 'ast', 'astr', 'ata', 'atm', 'atom', 'auction', 'audio', 'avax', 'awe', 'axl', 'axs', 'badger', 'bake', 'bal', 'band', 'bar', 'bat', 'bb', 'bch', 'beamx', 'bel', 'bera', 'beta', 'bico', 'bifi', 'bigtime', 'blur', 'blz', 'bmt', 'bnb', 'bnt', 'bnx', 'bome', 'bond', 'bonk', 'bsw', 'btc', 'btt', 'bttc', 'btx', 'burger', 'busd', 'c98', 'cake', 'celo', 'celr', 'cfx', 'cgpt', 'chess', 'chr', 'chz', 'city', 'ckb', 'clv', 'combo', 'comp', 'cookie', 'cos', 'coti', 'cow', 'cream', 'crv', 'ctk', 'ctsi', 'ctxc', 'cvc', 'cvp', 'cvx', 'cyber', 'd', 'dai', 'dar', 'dash', 'data', 'dcr', 'dego', 'dent', 'dexe', 'df', 'dgb', 'dia', 'dock', 'dodo', 'doge', 'dogs', 'dot', 'dusk', 'dydx', 'edu', 'egld', 'eigen', 'elf', 'ena', 'enj', 'ens', 'eos', 'epic', 'etc', 'eth', 'ethfi', 'farm', 'fdusd', 'fet', 'fida', 'fil', 'fio', 'fis', 'flm', 'floki', 'flow', 'flux', 'for', 'forth', 'front', 'ftm', 'ftt', 'fun', 'fxs', 'g', 'gal', 'gala', 'gft', 'ghst', 'glm', 'glmr', 'gmt', 'gmx', 'gno', 'gns', 'gps', 'grt', 'gtc', 'hbar', 'hft', 'hifi', 'high', 'hive', 'hmstr', 'hook', 'hot', 'hyper', 'icp', 'icx', 'id', 'idex', 'ilv', 'imx', 'inj', 'io', 'iost', 'iotx', 'iq', 'iris', 'jasmy', 'joe', 'jst', 'jto', 'jup', 'juv', 'kaito', 'kava', 'kda', 'kernel', 'key', 'kmd', 'kmno', 'knc', 'kp3r', 'ksm', 'lazio', 'ldo', 'lever', 'lina', 'link', 'lista', 'lit', 'loka', 'loom', 'lpt', 'lqty', 'lrc', 'lsk', 'ltc', 'lto', 'luna', 'lunc', 'magic', 'mana', 'manta', 'mask', 'matic', 'mav', 'mbl', 'mbox', 'mdt', 'mdx', 'meme', 'metis', 'mina', 'mkr', 'move', 'movr', 'mtl', 'mubarak', 'near', 'neo', 'nexo', 'nfp', 'nkn', 'nmr', 'not', 'ntrn', 'nuls', 'nxpc', 'oax', 'ocean', 'og', 'ogn', 'om', 'omg', 'ondo', 'one', 'ong', 'ont', 'ooki', 'op', 'orca', 'ordi', 'orn', 'osmo', 'oxt', 'paxg', 'pda', 'pendle', 'pengu', 'people', 'pepe', 'perp', 'pha', 'phb', 'pivx', 'pixel', 'pla', 'pnut', 'pol', 'pols', 'polyx', 'pond', 'portal', 'porto', 'powr', 'prom', 'pros', 'psg', 'pundix', 'pyr', 'pyth', 'qi', 'qkc', 'qnt', 'qtum', 'quick', 'rad', 'rare', 'ray', 'rdnt', 'red', 'reef', 'rei', 'ren', 'render', 'rep', 'req', 'rif', 'rlc', 'rndr', 'ronin', 'rose', 'rpl', 'rsr', 'rune', 'rvn', 'saga', 'sand', 'santos', 'sc', 'sei', 'sfp', 'shib', 'sign', 'skl', 'slp', 'snt', 'snx', 'sol', 'spell', 'srm', 'ssv', 'steem', 'stg', 'stmx', 'sto', 'storj', 'stpt', 'strax', 'strk', 'stx', 'sui', 'sun', 'super', 'sushi', 'sxp', 'sxt', 'syn', 'sys', 't', 'tao', 'theta', 'tia', 'tko', 'tlm', 'tnsr', 'ton', 'trb', 'troy', 'tru', 'trump', 'trx', 'tst', 'turbo', 'tusd', 'tut', 'twt', 'uft', 'uma', 'unfi', 'uni', 'usd', 'usd1', 'usdc', 'usdn', 'usdt', 'ustc', 'usual', 'utk', 'vanry', 'vet', 'vgx', 'vib', 'vic', 'vidt', 'virtual', 'vite', 'voxel', 'vtho', 'w', 'wan', 'waves', 'waxp', 'wbeth', 'wbtc', 'wif', 'win', 'wing', 'wld', 'woo', 'xai', 'xec', 'xlm', 'xmr', 'xrp', 'xtz', 'xvg', 'xvs', 'yfi', 'yfii', 'ygg', 'zec', 'zil', 'zk', 'zro', 'zrx']</msg>
<arg>价格转换字典包含字段: ${dict_keys}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:28.542405" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:28.543210" level="FAIL">Dictionary does not contain key 'rates'.</msg>
<arg>${convert_dict}</arg>
<arg>rates</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:28.542953" elapsed="0.000359">Dictionary does not contain key 'rates'.</status>
</kw>
<msg time="2026-05-28T20:27:28.543407" level="INFO">${has_rates} = False</msg>
<var>${has_rates}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>rates</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:28.542795" elapsed="0.000641"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:28.543884" level="FAIL">Dictionary does not contain key 'base'.</msg>
<arg>${convert_dict}</arg>
<arg>base</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:28.543714" elapsed="0.000234">Dictionary does not contain key 'base'.</status>
</kw>
<msg time="2026-05-28T20:27:28.544040" level="INFO">${has_base} = False</msg>
<var>${has_base}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>base</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:28.543568" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:28.544468" level="FAIL">Dictionary does not contain key 'timestamp'.</msg>
<arg>${convert_dict}</arg>
<arg>timestamp</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:28.544325" elapsed="0.000195">Dictionary does not contain key 'timestamp'.</status>
</kw>
<msg time="2026-05-28T20:27:28.544594" level="INFO">${has_timestamp} = False</msg>
<var>${has_timestamp}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>timestamp</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:28.544200" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:28.545041" level="FAIL">Dictionary does not contain key 'date'.</msg>
<arg>${convert_dict}</arg>
<arg>date</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:28.544892" elapsed="0.000196">Dictionary does not contain key 'date'.</status>
</kw>
<msg time="2026-05-28T20:27:28.545164" level="INFO">${has_date} = False</msg>
<var>${has_date}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>date</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:28.544766" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:28.545573" level="FAIL">Dictionary does not contain key 'success'.</msg>
<arg>${convert_dict}</arg>
<arg>success</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:28.545430" elapsed="0.000204">Dictionary does not contain key 'success'.</status>
</kw>
<msg time="2026-05-28T20:27:28.545713" level="INFO">${has_success} = False</msg>
<var>${has_success}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>success</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:28.545308" elapsed="0.000426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.545961" level="INFO">价格转换包含汇率(rates): False</msg>
<arg>价格转换包含汇率(rates): ${has_rates}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:28.545841" elapsed="0.000161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.546210" level="INFO">价格转换包含基础货币(base): False</msg>
<arg>价格转换包含基础货币(base): ${has_base}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:28.546097" elapsed="0.000148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.546444" level="INFO">价格转换包含时间戳(timestamp): False</msg>
<arg>价格转换包含时间戳(timestamp): ${has_timestamp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:28.546336" elapsed="0.000147"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.546680" level="INFO">价格转换包含日期(date): False</msg>
<arg>价格转换包含日期(date): ${has_date}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:28.546578" elapsed="0.000144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.546918" level="INFO">价格转换包含成功标记(success): False</msg>
<arg>价格转换包含成功标记(success): ${has_success}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:28.546811" elapsed="0.000145"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_rates}</arg>
<arg>验证汇率结构</arg>
<arg>${convert_dict['rates']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:28.547058" elapsed="0.000095"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_base}</arg>
<arg>验证基础货币</arg>
<arg>${convert_dict['base']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:28.547254" elapsed="0.000098"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_success}</arg>
<arg>验证成功标记</arg>
<arg>${convert_dict['success']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:28.547452" elapsed="0.000097"/>
</kw>
<arg>${data}</arg>
<doc>验证价格转换字典的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:28.541189" elapsed="0.006441"/>
</kw>
<arg>isinstance($data, dict)</arg>
<arg>验证价格转换字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:28.540653" elapsed="0.007027"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.548292" level="INFO">获取货币价格转换 /v1/spot/balance/public/price/currency/convert status=200</msg>
<arg>获取货币价格转换 /v1/spot/balance/public/price/currency/convert status=${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:28.547779" elapsed="0.000554"/>
</kw>
<doc>验证货币价格转换接口功能</doc>
<tag>spot</tag>
<status status="PASS" start="2026-05-28T20:27:27.612738" elapsed="0.935748"/>
</test>
<test id="s1-s4-s1-s2-t2" name="获取单一货币价格转换" line="37">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.550376" level="INFO">&amp;{params} = { converts=usd }</msg>
<var>&amp;{params}</var>
<arg>converts=usd</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:28.549998" elapsed="0.000400"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:28.551854" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:28.551298" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:28.552488" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:28.552018" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:28.551984" elapsed="0.000588"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:28.552661" elapsed="0.000058"/>
</return>
<msg time="2026-05-28T20:27:28.552972" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:28.550633" elapsed="0.002374"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:29.046119" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/balance/public/price/currency/convert?converts=usd 
 path_url=/v1/spot/balance/public/price/currency/convert?converts=usd 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:29.046688" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/balance/public/price/currency/convert?converts=usd 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:28 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '007915d1369e008e9c543cb72ca31b12', 'X-Transparent': '00-007915d1369e008e9c543cb72ca31b12-66ce184a93b83f22-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40f00ab8ed81-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":{"uft":{"usd":"0.00888506411083922861"},"ksm":{"usd":"4.39261596490928156"},"fil":{"usd":"0.9434141106452888805"},"bal":{"usd":"0.9653771904698352883"},"fio":{"usd":"0.000938422501594255606"},"theta":{"usd":"0.1777012822167845722"},"vib":{"usd":"0.002226257636760840427"},"fis":{"usd":"0.01906794657494710859"},"vic":{"usd":"0.04083136203745218541"},"bar":{"usd":"0.3603941734846024189"},"stpt":{"usd":"0.070301821874752638058"},"rad":{"usd":"0.2575670270333169642"},"bat":{"usd":"0.10292697863230612019"},"farm":{"usd":"5.79026649919859842"},"near":{"usd":"2.346056253985639015"},"xmr":{"usd":"118.50079887152993663"},"iris":{"usd":"0.005201256631176672029"},"ai":{"usd":"0.02376005908291838662"},"combo":{"usd":"0.02755368196170367524"},"glm":{"usd":"0.12728603080134849975"},"aixbt":{"usd":"0.02655536015149702034"},"1000sats":{"usd":"0.000011061405657089736292"},"ray":{"usd":"0.6998235889548650849"},"wld":{"usd":"0.29280778693361188217"},"ar":{"usd":"2.046559710923642545"},"agld":{"usd":"0.2106459019536041839"},"zro":{"usd":"1.1490684035478597899"},"wing":{"usd":"0.3254529101273694974"},"dgb":{"usd":"0.00319462979266129568"},"bb":{"usd":"0.02615603142741435838"},"zrx":{"usd":"0.09763587303821084922"},"bch":{"usd":"301.29352232036844882"},"blur":{"usd":"0.020275915965297161019"},"jst":{"usd":"0.094690823698101217265"},"hot":{"usd":"0.0003583975298641891091"},"gmt":{"usd":"0.010093033501189281039"},"ardr":{"usd":"0.035280692772703184166"},"vite":{"usd":"0.000858556756777723214"},"gmx":{"usd":"6.079779824158528341"},"wbeth":{"usd":"2171.799182014067402205"},"sei":{"usd":"0.067396705407051272299"},"matic":{"usd":"0.37876329479240486906"},"d":{"usd":"0.011440767944968265154"},"jto":{"usd":"0.4712078944175411128"},"kernel":{"usd":"0.06059813387954395243"},"flm":{"usd":"0.01667197423045113683"},"g":{"usd":"0.003264512319375761523"},"gno":{"usd":"112.980079261087135033"},"strk":{"usd":"0.03524075990029491797"},"gns":{"usd":"0.4612246763154745638"},"vtho":{"usd":"0.0004672146071767144932"},"polyx":{"usd":"0.04742028598481610775"},"t":{"usd":"0.004682129289869211481"},"cfx":{"usd":"0.050445201069742272097"},"w":{"usd":"0.01118120427431453488"},"mina":{"usd":"0.05420887429422136107"},"sfp":{"usd":"0.2605619924639369289"},"dia":{"usd":"0.159731489633064784"},"aca":{"usd":"0.00179697925837197882"},"df":{"usd":"0.001637247768738914036"},"jup":{"usd":"0.1757046385963712624"},"turbo":{"usd":"0.0010152932809801680333"},"ach":{"usd":"0.006099746260362661439"},"bel":{"usd":"0.09344292143534289864"},"acm":{"usd":"0.3554025644335691444"},"juv":{"usd":"0.3913421496010087208"},"tia":{"usd":"0.40821378819350118861"},"red":{"usd":"0.11919962413867459506"},"act":{"usd":"0.01138086863635586586"},"paxg":{"usd":"4380.43643882476037022"},"woo":{"usd":"0.01577348460126514742"},"acx":{"usd":"0.04242867693378283325"},"rei":{"usd":"0.004003270458928686149"},"rare":{"usd":"0.01447566624799649605"},"ren":{"usd":"0.042668274168232430426"},"rep":{"usd":"4.722062162277477677"},"elf":{"usd":"0.22681871527895199328"},"req":{"usd":"0.06928353362834185006"},"ada":{"usd":"0.22911485544242729955"},"strax":{"usd":"0.011330952545845533115"},"tusd":{"usd":"0.99822197802563423451"},"gps":{"usd":"0.0069882526714465843"},"chr":{"usd":"0.019037996920640908943"},"fida":{"usd":"0.028701752043441328375"},"sand":{"usd":"0.06608890383568055438"},"adx":{"usd":"0.06239511313791593125"},"chz":{"usd":"0.03364344500396427013"},"xrp":{"usd":"1.28274369393453088101"},"santos":{"usd":"0.7826842992020174416"},"virtual":{"usd":"0.6998235889548650849"},"for":{"usd":"0.003054864739232363994"},"uma":{"usd":"0.4182968384765884031"},"lunc":{"usd":"0.000083469686551378416189"},"ronin":{"usd":"0.07866775864428440612"},"luna":{"usd":"0.05820216153504798067"},"yfii":{"usd":"434.76914834499820895"},"alpha":{"usd":"0.00968372155900455253"},"ena":{"usd":"0.08695382966899964179"},"tko":{"usd":"0.05021558705339474147"},"pixel":{"usd":"0.006219544877587460027"},"troy":{"usd":"0.0000688842049042591881"},"enj":{"usd":"0.037457034318953691848"},"oax":{"usd":"0.03573992080539824542"},"grt":{"usd":"0.02565687052231103093"},"ens":{"usd":"5.670467881973799832"},"pda":{"usd":"0.009753604085719018373"},"uni":{"usd":"2.9999570396709979745"},"tlm":{"usd":"0.0013347562602462976013"},"ckb":{"usd":"0.0012329274356052188015"},"xtz":{"usd":"0.30808211062977370214"},"meme":{"usd":"0.0004642196417460945285"},"dego":{"usd":"0.0279530106857863372"},"eos":{"usd":"0.77859117978017015651"},"nxpc":{"usd":"0.37427084664647492201"},"rif":{"usd":"0.06698739346486654379"},"hook":{"usd":"0.00778691011961190822"},"skl":{"usd":"0.005510736392340735048"},"gtc":{"usd":"0.0948405719696322155"},"1inch":{"usd":"0.08375919987633834611"},"id":{"usd":"0.02615603142741435838"},"portal":{"usd":"0.007517363230856111397"},"flow":{"usd":"0.031037825079324900841"},"cookie":{"usd":"0.01168036517941786233"},"io":{"usd":"0.1567365242024448193"},"xvg":{"usd":"0.0030408882338894708254"},"iq":{"usd":"0.0010272731427026478921"},"pnut":{"usd":"0.05101424450156006539"},"pundix":{"usd":"0.13217780767136110876"},"unfi":{"usd":"1.3387495474871242209"},"cream":{"usd":"2.09647580143397529"},"forth":{"usd":"0.2366022690189772113"},"clv":{"usd":"0.029320711565769454413"},"powr":{"usd":"0.05880115462117197361"},"xvs":{"usd":"2.59563670653730274"},"slp":{"usd":"0.0005910065116423397008"},"city":{"usd":"0.4232884475276216776"},"cgpt":{"usd":"0.02186324764352574231"},"celr":{"usd":"0.0022931451980446863053"},"dot":{"usd":"1.1820130232846794016"},"celo":{"usd":"0.071100479322917961978"},"ton":{"usd":"1.7580447077739192789"},"ftm":{"usd":"0.69822627405853443706"},"mav":{"usd":"0.012169542866419123231"},"ftt":{"usd":"0.29180946512340522727"},"rlc":{"usd":"0.42149146826924969878"},"pha":{"usd":"0.04063169767541085443"},"phb":{"usd":"0.0149748271530998235"},"blz":{"usd":"0.05810232935402731518"},"api3":{"usd":"0.29929687869995513902"},"mbl":{"usd":"0.0008365936769531768062"},"snt":{"usd":"0.02715435323762101328"},"glmr":{"usd":"0.0119798617224798588"},"rose":{"usd":"0.008905030547043361708"},"snx":{"usd":"0.2915099685803432308"},"atom":{"usd":"2.0106201257562029686"},"fun":{"usd":"0.0003414260590906759758"},"arkm":{"usd":"0.1307801571370717919"},"cos":{"usd":"0.0011620465870805463036"},"usd":{"usd":"1"},"sign":{"usd":"0.011320969327743466566"},"bmt":{"usd":"0.01457549842901716154"},"qkc":{"usd":"0.002675502451353835132"},"cow":{"usd":"0.15424071967692818205"},"sol":{"usd":"80.514653993166717685"},"high":{"usd":"0.129781835326865137"},"mubarak":{"usd":"0.01178019736043852782"},"burger":{"usd":"0.01717113513555446428"},"etc":{"usd":"8.08640666267390469"},"bnb":{"usd":"629.701465005949644724"},"ogn":{"usd":"0.020295882401501294117"},"eth":{"usd":"1979.382636314836736779"},"sushi":{"usd":"0.1906794657494710859"},"neo":{"usd":"2.6345712571353622811"},"bera":{"usd":"0.3364344500396427013"},"ordi":{"usd":"3.3962907983230399698"},"pengu":{"usd":"0.0077799218669404616357"},"kaito":{"usd":"0.45683206035056528224"},"lista":{"usd":"0.06159645568975060733"},"trb":{"usd":"16.112914016735410086"},"alt":{"usd":"0.007008219107650717398"},"bnt":{"usd":"0.31886398618000557506"},"lever":{"usd":"0.0001747063167861646075"},"utk":{"usd":"0.007936658391142906455"},"bnx":{"usd":"1.77890963360723836631"},"hifi":{"usd":"0.1267868698962451723"},"orca":{"usd":"1.2748569516338983073"},"egld":{"usd":"3.49412633572329215"},"tru":{"usd":"0.00229614016347530627"},"amb":{"usd":"0.000319462979266129568"},"nfp":{"usd":"0.00918456065390122508"},"ustc":{"usd":"0.006019880515546129047"},"trx":{"usd":"0.34901330484824655304"},"mdt":{"usd":"0.004023236895132819247"},"nuls":{"usd":"0.02575670270333169642"},"mdx":{"usd":"0.03444210245212959405"},"fdusd":{"usd":"0.99712382403440691412"},"amp":{"usd":"0.0007267782778304447672"},"pendle":{"usd":"1.5224407605651487225"},"busd":{"usd":"0.99862130674971689647"},"alcx":{"usd":"4.013253677030752698"},"arpa":{"usd":"0.00978355374002521802"},"tst":{"usd":"0.01677180641147180232"},"og":{"usd":"2.7344034381560277711"},"ethfi":{"usd":"0.3623908171050157287"},"flux":{"usd":"0.06638840037874255085"},"render":{"usd":"1.956710748005043604"},"beta":{"usd":"0.000359395851674395764"},"om":{"usd":"0.06678772910282521281"},"fxs":{"usd":"0.8106373098878037788"},"op":{"usd":"0.11570549780295130291"},"pla":{"usd":"0.23430612885550190503"},"ant":{"usd":"7.3945696482006928443"},"crv":{"usd":"0.20994707668645952547"},"eigen":{"usd":"0.2076509365229842192"},"aeur":{"usd":"1.14477561976397117383"},"srm":{"usd":"0.244009816850710590658"},"badger":{"usd":"0.7607212193774710338"},"rpl":{"usd":"1.587331678228581291"},"super":{"usd":"0.10901674167456671508"},"aevo":{"usd":"0.02266190509169106623"},"cyber":{"usd":"0.429278378388861607"},"qnt":{"usd":"70.201989693731972568"},"ldo":{"usd":"0.31267439095672431468"},"bake":{"usd":"0.05181290194972538931"},"anime":{"usd":"0.00379362287878528862"},"vanry":{"usd":"0.0044505186299012675442"},"pyth":{"usd":"0.03773656442581155522"},"mbox":{"usd":"0.01048237900716987645"},"tut":{"usd":"0.009553939723677687393"},"cake":{"usd":"1.3197814330931977778"},"ssv":{"usd":"2.3250914959712992621"},"ape":{"usd":"0.1217952608452118978"},"qi":{"usd":"0.001457549842901716154"},"ctk":{"usd":"0.14835062099670891814"},"band":{"usd":"0.1856878566984378114"},"iotx":{"usd":"0.003933387932214220306"},"shib":{"usd":"0.000005251172721687004774"},"dock":{"usd":"0.00389345505980595411"},"astr":{"usd":"0.007058135198161050143"},"waves":{"usd":"1.0741942677823606724"},"reef":{"usd":"0.0006868454054221785712"},"apt":{"usd":"0.9194543872003291629"},"stg":{"usd":"0.15533887366815550244"},"dent":{"usd":"0.0000379362287878528862"},"kda":{"usd":"0.0059899308612399294"},"metis":{"usd":"2.9949654306199647"},"loka":{"usd":"0.12349240792256321113"},"sto":{"usd":"0.05920048334525463557"},"iost":{"usd":"0.0009823486612433484216"},"stx":{"usd":"0.22442274293445602152"},"sui":{"usd":"0.90807351856397329704"},"bsw":{"usd":"0.01118120427431453488"},"om... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-05-28T20:27:29.047093" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:29.047459" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>url=/v1/spot/balance/public/price/currency/convert</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=any</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:28.553161" elapsed="0.494359"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.049511" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:29.048071" elapsed="0.001583"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.052256" level="INFO">${resp_json} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': {'uft': {'usd': '0.00888506411083922861'}, 'ksm': {'usd': '4.39261596490928156'}, 'fil': {'usd': '0.9434141106452888805'}, 'bal': {'usd': '0.965377...</msg>
<var>${resp_json}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:29.049969" elapsed="0.002352"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${resp_json}</arg>
<arg>data</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:29.052589" elapsed="0.000338"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.056920" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "uft": {
      "usd": "0.00888506411083922861"
    },
    "ksm": {
      "usd": "4.39261596490928156"
    },
    "fil": {
      "usd...</msg>
<var>${json_str}</var>
<arg>json.dumps($resp_json, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:29.053174" elapsed="0.003799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.057582" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "uft": {
      "usd": "0.00888506411083922861"
    },
    "ksm": {
      "usd": "4.39261596490928156"
    },
    "fil": {
      "usd": "0.9434141106452888805"
    },
    "bal": {
      "usd": "0.9653771904698352883"
    },
    "fio": {
      "usd": "0.000938422501594255606"
    },
    "theta": {
      "usd": "0.1777012822167845722"
    },
    "vib": {
      "usd": "0.002226257636760840427"
    },
    "fis": {
      "usd": "0.01906794657494710859"
    },
    "vic": {
      "usd": "0.04083136203745218541"
    },
    "bar": {
      "usd": "0.3603941734846024189"
    },
    "stpt": {
      "usd": "0.070301821874752638058"
    },
    "rad": {
      "usd": "0.2575670270333169642"
    },
    "bat": {
      "usd": "0.10292697863230612019"
    },
    "farm": {
      "usd": "5.79026649919859842"
    },
    "near": {
      "usd": "2.346056253985639015"
    },
    "xmr": {
      "usd": "118.50079887152993663"
    },
    "iris": {
      "usd": "0.005201256631176672029"
    },
    "ai": {
      "usd": "0.02376005908291838662"
    },
    "combo": {
      "usd": "0.02755368196170367524"
    },
    "glm": {
      "usd": "0.12728603080134849975"
    },
    "aixbt": {
      "usd": "0.02655536015149702034"
    },
    "1000sats": {
      "usd": "0.000011061405657089736292"
    },
    "ray": {
      "usd": "0.6998235889548650849"
    },
    "wld": {
      "usd": "0.29280778693361188217"
    },
    "ar": {
      "usd": "2.046559710923642545"
    },
    "agld": {
      "usd": "0.2106459019536041839"
    },
    "zro": {
      "usd": "1.1490684035478597899"
    },
    "wing": {
      "usd": "0.3254529101273694974"
    },
    "dgb": {
      "usd": "0.00319462979266129568"
    },
    "bb": {
      "usd": "0.02615603142741435838"
    },
    "zrx": {
      "usd": "0.09763587303821084922"
    },
    "bch": {
      "usd": "301.29352232036844882"
    },
    "blur": {
      "usd": "0.020275915965297161019"
    },
    "jst": {
      "usd": "0.094690823698101217265"
    },
    "hot": {
      "usd": "0.0003583975298641891091"
    },
    "gmt": {
      "usd": "0.010093033501189281039"
    },
    "ardr": {
      "usd": "0.035280692772703184166"
    },
    "vite": {
      "usd": "0.000858556756777723214"
    },
    "gmx": {
      "usd": "6.079779824158528341"
    },
    "wbeth": {
      "usd": "2171.799182014067402205"
    },
    "sei": {
      "usd": "0.067396705407051272299"
    },
    "matic": {
      "usd": "0.37876329479240486906"
    },
    "d": {
      "usd": "0.011440767944968265154"
    },
    "jto": {
      "usd": "0.4712078944175411128"
    },
    "kernel": {
      "usd": "0.06059813387954395243"
    },
    "flm": {
      "usd": "0.01667197423045113683"
    },
    "g": {
      "usd": "0.003264512319375761523"
    },
    "gno": {
      "usd": "112.980079261087135033"
    },
    "strk": {
      "usd": "0.03524075990029491797"
    },
    "gns": {
      "usd": "0.4612246763154745638"
    },
    "vtho": {
      "usd": "0.0004672146071767144932"
    },
    "polyx": {
      "usd": "0.04742028598481610775"
    },
    "t": {
      "usd": "0.004682129289869211481"
    },
    "cfx": {
      "usd": "0.050445201069742272097"
    },
    "w": {
      "usd": "0.01118120427431453488"
    },
    "mina": {
      "usd": "0.05420887429422136107"
    },
    "sfp": {
      "usd": "0.2605619924639369289"
    },
    "dia": {
      "usd": "0.159731489633064784"
    },
    "aca": {
      "usd": "0.00179697925837197882"
    },
    "df": {
      "usd": "0.001637247768738914036"
    },
    "jup": {
      "usd": "0.1757046385963712624"
    },
    "turbo": {
      "usd": "0.0010152932809801680333"
    },
    "ach": {
      "usd": "0.006099746260362661439"
    },
    "bel": {
      "usd": "0.09344292143534289864"
    },
    "acm": {
      "usd": "0.3554025644335691444"
    },
    "juv": {
      "usd": "0.3913421496010087208"
    },
    "tia": {
      "usd": "0.40821378819350118861"
    },
    "red": {
      "usd": "0.11919962413867459506"
    },
    "act": {
      "usd": "0.01138086863635586586"
    },
    "paxg": {
      "usd": "4380.43643882476037022"
    },
    "woo": {
      "usd": "0.01577348460126514742"
    },
    "acx": {
      "usd": "0.04242867693378283325"
    },
    "rei": {
      "usd": "0.004003270458928686149"
    },
    "rare": {
      "usd": "0.01447566624799649605"
    },
    "ren": {
      "usd": "0.042668274168232430426"
    },
    "rep": {
      "usd": "4.722062162277477677"
    },
    "elf": {
      "usd": "0.22681871527895199328"
    },
    "req": {
      "usd": "0.06928353362834185006"
    },
    "ada": {
      "usd": "0.22911485544242729955"
    },
    "strax": {
      "usd": "0.011330952545845533115"
    },
    "tusd": {
      "usd": "0.99822197802563423451"
    },
    "gps": {
      "usd": "0.0069882526714465843"
    },
    "chr": {
      "usd": "0.019037996920640908943"
    },
    "fida": {
      "usd": "0.028701752043441328375"
    },
    "sand": {
      "usd": "0.06608890383568055438"
    },
    "adx": {
      "usd": "0.06239511313791593125"
    },
    "chz": {
      "usd": "0.03364344500396427013"
    },
    "xrp": {
      "usd": "1.28274369393453088101"
    },
    "santos": {
      "usd": "0.7826842992020174416"
    },
    "virtual": {
      "usd": "0.6998235889548650849"
    },
    "for": {
      "usd": "0.003054864739232363994"
    },
    "uma": {
      "usd": "0.4182968384765884031"
    },
    "lunc": {
      "usd": "0.000083469686551378416189"
    },
    "ronin": {
      "usd": "0.07866775864428440612"
    },
    "luna": {
      "usd": "0.05820216153504798067"
    },
    "yfii": {
      "usd": "434.76914834499820895"
    },
    "alpha": {
      "usd": "0.00968372155900455253"
    },
    "ena": {
      "usd": "0.08695382966899964179"
    },
    "tko": {
      "usd": "0.05021558705339474147"
    },
    "pixel": {
      "usd": "0.006219544877587460027"
    },
    "troy": {
      "usd": "0.0000688842049042591881"
    },
    "enj": {
      "usd": "0.037457034318953691848"
    },
    "oax": {
      "usd": "0.03573992080539824542"
    },
    "grt": {
      "usd": "0.02565687052231103093"
    },
    "ens": {
      "usd": "5.670467881973799832"
    },
    "pda": {
      "usd": "0.009753604085719018373"
    },
    "uni": {
      "usd": "2.9999570396709979745"
    },
    "tlm": {
      "usd": "0.0013347562602462976013"
    },
    "ckb": {
      "usd": "0.0012329274356052188015"
    },
    "xtz": {
      "usd": "0.30808211062977370214"
    },
    "meme": {
      "usd": "0.0004642196417460945285"
    },
    "dego": {
      "usd": "0.0279530106857863372"
    },
    "eos": {
      "usd": "0.77859117978017015651"
    },
    "nxpc": {
      "usd": "0.37427084664647492201"
    },
    "rif": {
      "usd": "0.06698739346486654379"
    },
    "hook": {
      "usd": "0.00778691011961190822"
    },
    "skl": {
      "usd": "0.005510736392340735048"
    },
    "gtc": {
      "usd": "0.0948405719696322155"
    },
    "1inch": {
      "usd": "0.08375919987633834611"
    },
    "id": {
      "usd": "0.02615603142741435838"
    },
    "portal": {
      "usd": "0.007517363230856111397"
    },
    "flow": {
      "usd": "0.031037825079324900841"
    },
    "cookie": {
      "usd": "0.01168036517941786233"
    },
    "io": {
      "usd": "0.1567365242024448193"
    },
    "xvg": {
      "usd": "0.0030408882338894708254"
    },
    "iq": {
      "usd": "0.0010272731427026478921"
    },
    "pnut": {
      "usd": "0.05101424450156006539"
    },
    "pundix": {
      "usd": "0.13217780767136110876"
    },
    "unfi": {
      "usd": "1.3387495474871242209"
    },
    "cream": {
      "usd": "2.09647580143397529"
    },
    "forth": {
      "usd": "0.2366022690189772113"
    },
    "clv": {
      "usd": "0.029320711565769454413"
    },
    "powr": {
      "usd": "0.05880115462117197361"
    },
    "xvs": {
      "usd": "2.59563670653730274"
    },
    "slp": {
      "usd": "0.0005910065116423397008"
    },
    "city": {
      "usd": "0.4232884475276216776"
    },
    "cgpt": {
      "usd": "0.02186324764352574231"
    },
    "celr": {
      "usd": "0.0022931451980446863053"
    },
    "dot": {
      "usd": "1.1820130232846794016"
    },
    "celo": {
      "usd": "0.071100479322917961978"
    },
    "ton": {
      "usd": "1.7580447077739192789"
    },
    "ftm": {
      "usd": "0.69822627405853443706"
    },
    "mav": {
      "usd": "0.012169542866419123231"
    },
    "ftt": {
      "usd": "0.29180946512340522727"
    },
    "rlc": {
      "usd": "0.42149146826924969878"
    },
    "pha": {
      "usd": "0.04063169767541085443"
    },
    "phb": {
      "usd": "0.0149748271530998235"
    },
    "blz": {
      "usd": "0.05810232935402731518"
    },
    "api3": {
      "usd": "0.29929687869995513902"
    },
    "mbl": {
      "usd": "0.0008365936769531768062"
    },
    "snt": {
      "usd": "0.02715435323762101328"
    },
    "glmr": {
      "usd": "0.0119798617224798588"
    },
    "rose": {
      "usd": "0.008905030547043361708"
    },
    "snx": {
      "usd": "0.2915099685803432308"
    },
    "atom": {
      "usd": "2.0106201257562029686"
    },
    "fun": {
      "usd": "0.0003414260590906759758"
    },
    "arkm": {
      "usd": "0.1307801571370717919"
    },
    "cos": {
      "usd": "0.0011620465870805463036"
    },
    "usd": {
      "usd": "1"
    },
    "sign": {
      "usd": "0.011320969327743466566"
    },
    "bmt": {
      "usd": "0.01457549842901716154"
    },
    "qkc": {
      "usd": "0.002675502451353835132"
    },
    "cow": {
      "usd": "0.15424071967692818205"
    },
    "sol": {
      "usd": "80.514653993166717685"
    },
    "high": {
      "usd": "0.129781835326865137"
    },
    "mubarak": {
      "usd": "0.01178019736043852782"
    },
    "burger": {
      "usd": "0.01717113513555446428"
    },
    "etc": {
      "usd": "8.08640666267390469"
    },
    "bnb": {
      "usd": "629.701465005949644724"
    },
    "ogn": {
      "usd": "0.020295882401501294117"
    },
    "eth": {
      "usd": "1979.382636314836736779"
    },
    "sushi": {
      "usd": "0.1906794657494710859"
    },
    "neo": {
      "usd": "2.6345712571353622811"
    },
    "bera": {
      "usd": "0.3364344500396427013"
    },
    "ordi": {
      "usd": "3.3962907983230399698"
    },
    "pengu": {
      "usd": "0.0077799218669404616357"
    },
    "kaito": {
      "usd": "0.45683206035056528224"
    },
    "lista": {
      "usd": "0.06159645568975060733"
    },
    "trb": {
      "usd": "16.112914016735410086"
    },
    "alt": {
      "usd": "0.007008219107650717398"
    },
    "bnt": {
      "usd": "0.31886398618000557506"
    },
    "lever": {
      "usd": "0.0001747063167861646075"
    },
    "utk": {
      "usd": "0.007936658391142906455"
    },
    "bnx": {
      "usd": "1.77890963360723836631"
    },
    "hifi": {
      "usd": "0.1267868698962451723"
    },
    "orca": {
      "usd": "1.2748569516338983073"
    },
    "egld": {
      "usd": "3.49412633572329215"
    },
    "tru": {
      "usd": "0.00229614016347530627"
    },
    "amb": {
      "usd": "0.000319462979266129568"
    },
    "nfp": {
      "usd": "0.00918456065390122508"
    },
    "ustc": {
      "usd": "0.006019880515546129047"
    },
    "trx": {
      "usd": "0.34901330484824655304"
    },
    "mdt": {
      "usd": "0.004023236895132819247"
    },
    "nuls": {
      "usd": "0.02575670270333169642"
    },
    "mdx": {
      "usd": "0.03444210245212959405"
    },
    "fdusd": {
      "usd": "0.99712382403440691412"
    },
    "amp": {
      "usd": "0.0007267782778304447672"
    },
    "pendle": {
      "usd": "1.5224407605651487225"
    },
    "busd": {
      "usd": "0.99862130674971689647"
    },
    "alcx": {
      "usd": "4.013253677030752698"
    },
    "arpa": {
      "usd": "0.00978355374002521802"
    },
    "tst": {
      "usd": "0.01677180641147180232"
    },
    "og": {
      "usd": "2.7344034381560277711"
    },
    "ethfi": {
      "usd": "0.3623908171050157287"
    },
    "flux": {
      "usd": "0.06638840037874255085"
    },
    "render": {
      "usd": "1.956710748005043604"
    },
    "beta": {
      "usd": "0.000359395851674395764"
    },
    "om": {
      "usd": "0.06678772910282521281"
    },
    "fxs": {
      "usd": "0.8106373098878037788"
    },
    "op": {
      "usd": "0.11570549780295130291"
    },
    "pla": {
      "usd": "0.23430612885550190503"
    },
    "ant": {
      "usd": "7.3945696482006928443"
    },
    "crv": {
      "usd": "0.20994707668645952547"
    },
    "eigen": {
      "usd": "0.2076509365229842192"
    },
    "aeur": {
      "usd": "1.14477561976397117383"
    },
    "srm": {
      "usd": "0.244009816850710590658"
    },
    "badger": {
      "usd": "0.7607212193774710338"
    },
    "rpl": {
      "usd": "1.587331678228581291"
    },
    "super": {
      "usd": "0.10901674167456671508"
    },
    "aevo": {
      "usd": "0.02266190509169106623"
    },
    "cyber": {
      "usd": "0.429278378388861607"
    },
    "qnt": {
      "usd": "70.201989693731972568"
    },
    "ldo": {
      "usd": "0.31267439095672431468"
    },
    "bake": {
      "usd": "0.05181290194972538931"
    },
    "anime": {
      "usd": "0.00379362287878528862"
    },
    "vanry": {
      "usd": "0.0044505186299012675442"
    },
    "pyth": {
      "usd": "0.03773656442581155522"
    },
    "mbox": {
      "usd": "0.01048237900716987645"
    },
    "tut": {
      "usd": "0.009553939723677687393"
    },
    "cake": {
      "usd": "1.3197814330931977778"
    },
    "ssv": {
      "usd": "2.3250914959712992621"
    },
    "ape": {
      "usd": "0.1217952608452118978"
    },
    "qi": {
      "usd": "0.001457549842901716154"
    },
    "ctk": {
      "usd": "0.14835062099670891814"
    },
    "band": {
      "usd": "0.1856878566984378114"
    },
    "iotx": {
      "usd": "0.003933387932214220306"
    },
    "shib": {
      "usd": "0.000005251172721687004774"
    },
    "dock": {
      "usd": "0.00389345505980595411"
    },
    "astr": {
      "usd": "0.007058135198161050143"
    },
    "waves": {
      "usd": "1.0741942677823606724"
    },
    "reef": {
      "usd": "0.0006868454054221785712"
    },
    "apt": {
      "usd": "0.9194543872003291629"
    },
    "stg": {
      "usd": "0.15533887366815550244"
    },
    "dent": {
      "usd": "0.0000379362287878528862"
    },
    "kda": {
      "usd": "0.0059899308612399294"
    },
    "metis": {
      "usd": "2.9949654306199647"
    },
    "loka": {
      "usd": "0.12349240792256321113"
    },
    "sto": {
      "usd": "0.05920048334525463557"
    },
    "iost": {
      "usd": "0.0009823486612433484216"
    },
    "stx": {
      "usd": "0.22442274293445602152"
    },
    "sui": {
      "usd": "0.90807351856397329704"
    },
    "bsw": {
      "usd": "0.01118120427431453488"
    },
    "omg": {
      "usd": "0.3823572533091488267"
    },
    "pol": {
      "usd": "0.0868539974879789763"
    },
    "sun": {
      "usd": "0.018498903143129315297"
    },
    "wbtc": {
      "usd": "72971.623908570193190521"
    },
    "pivx": {
      "usd": "0.05620551791463467087"
    },
    "nkn": {
      "usd": "0.00728774921450858077"
    },
    "porto": {
      "usd": "0.6648823255976321634"
    },
    "rsr": {
      "usd": "0.0015563837021121749891"
    },
    "sc": {
      "usd": "0.0008635483658287564885"
    },
    "twt": {
      "usd": "0.43686562414643218424"
    },
    "arb": {
      "usd": "0.10142949591699613784"
    },
    "btc": {
      "usd": "73169.790787896214188171"
    },
    "cvc": {
      "usd": "0.026884806348865216457"
    },
    "floki": {
      "usd": "0.000026974655311783815398"
    },
    "audio": {
      "usd": "0.01856878566984378114"
    },
    "ark": {
      "usd": "0.14395800503179963658"
    },
    "cvp": {
      "usd": "0.03384310936600560111"
    },
    "key": {
      "usd": "0.0012508972281889385897"
    },
    "btt": {
      "usd": "0"
    },
    "cvx": {
      "usd": "1.49748271530998235"
    },
    "btx": {
      "usd": "0.19547141043846302942"
    },
    "one": {
      "usd": "0.001747063167861646075"
    },
    "ong": {
      "usd": "0.061077328348443146782"
    },
    "storj": {
      "usd": "0.09953268447760349353"
    },
    "people": {
      "usd": "0.00608976304226059489"
    },
    "tnsr": {
      "usd": "0.03474159899519159052"
    },
    "bttc": {
      "usd": "0.000000309479761164063019"
    },
    "ont": {
      "usd": "0.05181290194972538931"
    },
    "mana": {
      "usd": "0.08176255625592503631"
    },
    "dodo": {
      "usd": "0.01786996040269912271"
    },
    "ankr": {
      "usd": "0.004372649528705148462"
    },
    "algo": {
      "usd": "0.10452429352863676803"
    },
    "asr": {
      "usd": "0.9953268447760349353"
    },
    "ast": {
      "usd": "0.02605619924639369289"
    },
    "dusk": {
      "usd": "0.11890012759561259859"
    },
    "doge": {
      "usd": "0.09733637649514885275"
    },
    "bome": {
      "usd": "0.0004861827215706409363"
    },
    "ata": {
      "usd": "0.00119798617224798588"
    },
    "kmno": {
      "usd": "0.017820044312188789965"
    },
    "nmr": {
      "usd": "8.216188498000769827"
    },
    "loom": {
      "usd": "0.048228926651083498219"
    },
    "mkr": {
      "usd": "1810.65626717180999213"
    },
    "lit": {
      "usd": "0.7417531049835445907"
    },
    "icp": {
      "usd": "2.6475494406680487948"
    },
    "dogs": {
      "usd": "0.00004642196417460945285"
    },
    "zec": {
      "usd": "523.659722325798761246"
    },
    "atm": {
      "usd": "0.9763587303821084922"
    },
    "hbar": {
      "usd": "0.083349887934153617601"
    },
    "ondo": {
      "usd": "0.35500323570948648244"
    },
    "pepe": {
      "usd": "0.000003304445191784027719"
    },
    "icx": {
      "usd": "0.0349412633572329215"
    },
    "xai": {
      "usd": "0.009174577435799158531"
    },
    "chess": {
      "usd": "0.002805284286680700269"
    },
    "usual": {
      "usd": "0.012329274356052188015"
    },
    "ctsi": {
      "usd": "0.026824907040252817163"
    },
    "sxp": {
      "usd": "0.00219630798245464078"
    },
    "rvn": {
      "usd": "0.004971642614829141402"
    },
    "sxt": {
      "usd": "0.01088170773125253841"
    },
    "ntrn": {
      "usd": "0.00159731489633064784"
    },
    "osmo": {
      "usd": "0.05460820301830402303"
    },
    "kava": {
      "usd": "0.053220535702116772719"
    },
    "ocean": {
      "usd": "0.61127244438953479527"
    },
    "vidt": {
      "usd": "0.001148070081737653135"
    },
    "c98": {
      "usd": "0.0189681143939264431"
    },
    "psg": {
      "usd": "1.1530616907886864095"
    },
    "perp": {
      "usd": "0.1247902262758318625"
    },
    "syn": {
      "usd": "0.03973320804622486502"
    },
    "jasmy": {
      "usd": "0.005251172721687004774"
    },
    "sys": {
      "usd": "0.002226257636760840427"
    },
    "auction": {
      "usd": "4.362666310603081913"
    },
    "not": {
      "usd": "0.0004282800565786549521"
    },
    "gal": {
      "usd": "2.5377340415453167558"
    },
    "nexo": {
      "usd": "0.8146305971286303984"
    },
    "bico": {
      "usd": "0.02286156945373239721"
    },
    "mask": {
      "usd": "0.4252850911480349874"
    },
    "hmstr": {
      "usd": "0.00015613753111632082636"
    },
    "aave": {
      "usd": "80.185207795798521568"
    },
    "bonk": {
      "usd": "0.000005301088812197337519"
    },
    "wan": {
      "usd": "0.05420887429422136107"
    },
    "orn": {
      "usd": "1.0512328661476076097"
    },
    "bond": {
      "usd": "2.1483885355647213448"
    },
    "awe": {
      "usd": "0.054129008549404828678"
    },
    "kp3r": {
      "usd": "16.452343432205672752"
    },
    "lqty": {
      "usd": "0.2326089817781505917"
    },
    "bigtime": {
      "usd": "0.010921640603660804606"
    },
    "yfi": {
      "usd": "2303.1284161467528543"
    },
    "dexe": {
      "usd": "16.4703132247893925402"
    },
    "avax": {
      "usd": "8.755282275512363473"
    },
    "trump": {
      "usd": "1.846895348882311565"
    },
    "alice": {
      "usd": "0.11720298051826128526"
    },
    "ooki": {
      "usd": "0.0001188002954145919331"
    },
    "rune": {
      "usd": "0.4103102639949351639"
    },
    "axl": {
      "usd": "0.05071474795849806892"
    },
    "alpaca": {
      "usd": "0.22402341421037335956"
    },
    "xec": {
      "usd": "0.000006638840037874255085"
    },
    "ygg": {
      "usd": "0.033713327530678735973"
    },
    "zil": {
      "usd": "0.003723740352070822777"
    },
    "axs": {
      "usd": "1.0751925895925673273"
    },
    "comp": {
      "usd": "17.241017662268930123"
    },
    "epic": {
      "usd": "0.1946727529902977055"
    },
    "zk": {
      "usd": "0.013257713639544377072"
    },
    "ctxc": {
      "usd": "0.06329360276710192066"
    },
    "ghst": {
      "usd": "0.1078187555023187292"
    },
    "hft": {
      "usd": "0.01038254682614921096"
    },
    "beamx": {
      "usd": "0.0016442360214103606203"
    },
    "idex": {
      "usd": "0.001986660402311243251"
    },
    "hive": {
      "usd": "0.05680451100075866381"
    },
    "kmd": {
      "usd": "0.01627264550636847487"
    },
    "steem": {
      "usd": "0.05051508359645673794"
    },
    "rdnt": {
      "usd": "0.003274495537477828072"
    },
    "pros": {
      "usd": "0.03713757133968756228"
    },
    "prom": {
      "usd": "1.038254682614921096"
    },
    "usd1": {
      "usd": "0.997603018503306108472"
    },
    "knc": {
      "usd": "0.13647059145524972483"
    },
    "bifi": {
      "usd": "32.04613010763362229"
    },
    "manta": {
      "usd": "0.076790913641095894908"
    },
    "lpt": {
      "usd": "2.0725160779890155724"
    },
    "gft": {
      "usd": "0.001956710748005043604"
    },
    "voxel": {
      "usd": "0.0139765053428931686"
    },
    "waxp": {
      "usd": "0.005800249717300664969"
    },
    "magic": {
      "usd": "0.05570635700953134342"
    },
    "quick": {
      "usd": "0.00768707793859124273"
    },
    "data": {
      "usd": "0.000878523192981856312"
    },
    "pyr": {
      "usd": "0.2306123381577372819"
    },
    "dai": {
      "usd": "0"
    },
    "lazio": {
      "usd": "0.4951676178625008304"
    },
    "dar": {
      "usd": "0.216705715341558579143"
    },
    "fet": {
      "usd": "0.2166358328148441133"
    },
    "usdt": {
      "usd": "0.9983218102066549"
    },
    "lrc": {
      "usd": "0.018758466813783045571"
    },
    "saga": {
      "usd": "0.018009725456128054396"
    },
    "hyper": {
      "usd": "0.08954946637553694453"
    },
    "usdn": {
      "usd": "0.9983218102066549"
    },
    "spell": {
      "usd": "0.00014605448083323361187"
    },
    "tao": {
      "usd": "256.76836958515164028"
    },
    "mtl": {
      "usd": "0.2735401759966234426"
    },
    "vet": {
      "usd": "0.0058940919674600905296"
    },
    "oxt": {
      "usd": "0.00938422501594255606"
    },
    "usdc": {
      "usd": "0.999469880288392553135"
    },
    "aergo": {
      "usd": "0.06339343494812258615"
    },
    "ilv": {
      "usd": "3.863505405499754463"
    },
    "alpine": {
      "usd": "0.4033220113234885796"
    },
    "edu": {
      "usd": "0.0429278378388861607"
    },
    "dash": {
      "usd": "38.844701635140942159"
    },
    "joe": {
      "usd": "0.03743706788274955875"
    },
    "pond": {
      "usd": "0.001737079949759579526"
    },
    "lina": {
      "usd": "0.0003364344500396427013"
    },
    "lsk": {
      "usd": "0.1078187555023187292"
    },
    "dydx": {
      "usd": "0.145365638784191019989"
    },
    "link": {
      "usd": "8.805198366022696218"
    },
    "akro": {
      "usd": "0.0009793536958127284569"
    },
    "qtum": {
      "usd": "0.8455785732450367003"
    },
    "coti": {
      "usd": "0.011121304965702135586"
    },
    "dcr": {
      "usd": "15.983132181408544949"
    },
    "wif": {
      "usd": "0.1747063167861646075"
    },
    "imx": {
      "usd": "0.1537415587718248546"
    },
    "ltc": {
      "usd": "50.505100378354671391"
    },
    "win": {
      "usd": "0.000019008047266334709296"
    },
    "move": {
      "usd": "0.01427600188595516507"
    },
    "inj": {
      "usd": "5.331038466503537166"
    },
    "vgx": {
      "usd": "0.0179697925837197882"
    },
    "lto": {
      "usd": "0.00379362287878528862"
    },
    "movr": {
      "usd": "1.767029604065779173"
    },
    "pols": {
      "usd": "0.30738328536262904371"
    },
    "xlm": {
      "usd": "0.18189423381965252278"
    },
    "agix": {
      "usd": "0.61306942364790677409"
    },
    "stmx": {
      "usd": "0.0045573390635933796185"
    },
    "front": {
      "usd": "0.878523192981856312"
    },
    "gala": {
      "usd": "0.002974998994415831602"
    },
    "rndr": {
      "usd": "7.018202325752783947"
    }
  },
  "ts": 1779971248659
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.057192" elapsed="0.000956"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:29.059731" level="INFO">${data} = {'uft': {'usd': '0.00888506411083922861'}, 'ksm': {'usd': '4.39261596490928156'}, 'fil': {'usd': '0.9434141106452888805'}, 'bal': {'usd': '0.9653771904698352883'}, 'fio': {'usd': '0.000938422501594255...</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:29.058336" elapsed="0.001429"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:29.059916" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, list)</arg>
<arg>验证价格转换列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:29.060436" elapsed="0.000217"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证价格转换字典结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($convert_dict, dict)</arg>
<arg>价格转换数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:29.061757" elapsed="0.000256"/>
</kw>
<kw name="Get Dictionary Keys" owner="Collections">
<msg time="2026-05-28T20:27:29.062515" level="INFO">${dict_keys} = ['1000sats', '1inch', 'aave', 'aca', 'ach', 'acm', 'act', 'acx', 'ada', 'adx', 'aergo', 'aeur', 'aevo', 'agix', 'agld', 'ai', 'aixbt', 'akro', 'alcx', 'algo', 'alice', 'alpaca', 'alpha', 'alpine', 'al...</msg>
<var>${dict_keys}</var>
<arg>${convert_dict}</arg>
<doc>Returns keys of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-05-28T20:27:29.062155" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.062907" level="INFO">价格转换字典包含字段: ['1000sats', '1inch', 'aave', 'aca', 'ach', 'acm', 'act', 'acx', 'ada', 'adx', 'aergo', 'aeur', 'aevo', 'agix', 'agld', 'ai', 'aixbt', 'akro', 'alcx', 'algo', 'alice', 'alpaca', 'alpha', 'alpine', 'alt', 'amb', 'amp', 'anime', 'ankr', 'ant', 'ape', 'api3', 'apt', 'ar', 'arb', 'ardr', 'ark', 'arkm', 'arpa', 'asr', 'ast', 'astr', 'ata', 'atm', 'atom', 'auction', 'audio', 'avax', 'awe', 'axl', 'axs', 'badger', 'bake', 'bal', 'band', 'bar', 'bat', 'bb', 'bch', 'beamx', 'bel', 'bera', 'beta', 'bico', 'bifi', 'bigtime', 'blur', 'blz', 'bmt', 'bnb', 'bnt', 'bnx', 'bome', 'bond', 'bonk', 'bsw', 'btc', 'btt', 'bttc', 'btx', 'burger', 'busd', 'c98', 'cake', 'celo', 'celr', 'cfx', 'cgpt', 'chess', 'chr', 'chz', 'city', 'ckb', 'clv', 'combo', 'comp', 'cookie', 'cos', 'coti', 'cow', 'cream', 'crv', 'ctk', 'ctsi', 'ctxc', 'cvc', 'cvp', 'cvx', 'cyber', 'd', 'dai', 'dar', 'dash', 'data', 'dcr', 'dego', 'dent', 'dexe', 'df', 'dgb', 'dia', 'dock', 'dodo', 'doge', 'dogs', 'dot', 'dusk', 'dydx', 'edu', 'egld', 'eigen', 'elf', 'ena', 'enj', 'ens', 'eos', 'epic', 'etc', 'eth', 'ethfi', 'farm', 'fdusd', 'fet', 'fida', 'fil', 'fio', 'fis', 'flm', 'floki', 'flow', 'flux', 'for', 'forth', 'front', 'ftm', 'ftt', 'fun', 'fxs', 'g', 'gal', 'gala', 'gft', 'ghst', 'glm', 'glmr', 'gmt', 'gmx', 'gno', 'gns', 'gps', 'grt', 'gtc', 'hbar', 'hft', 'hifi', 'high', 'hive', 'hmstr', 'hook', 'hot', 'hyper', 'icp', 'icx', 'id', 'idex', 'ilv', 'imx', 'inj', 'io', 'iost', 'iotx', 'iq', 'iris', 'jasmy', 'joe', 'jst', 'jto', 'jup', 'juv', 'kaito', 'kava', 'kda', 'kernel', 'key', 'kmd', 'kmno', 'knc', 'kp3r', 'ksm', 'lazio', 'ldo', 'lever', 'lina', 'link', 'lista', 'lit', 'loka', 'loom', 'lpt', 'lqty', 'lrc', 'lsk', 'ltc', 'lto', 'luna', 'lunc', 'magic', 'mana', 'manta', 'mask', 'matic', 'mav', 'mbl', 'mbox', 'mdt', 'mdx', 'meme', 'metis', 'mina', 'mkr', 'move', 'movr', 'mtl', 'mubarak', 'near', 'neo', 'nexo', 'nfp', 'nkn', 'nmr', 'not', 'ntrn', 'nuls', 'nxpc', 'oax', 'ocean', 'og', 'ogn', 'om', 'omg', 'ondo', 'one', 'ong', 'ont', 'ooki', 'op', 'orca', 'ordi', 'orn', 'osmo', 'oxt', 'paxg', 'pda', 'pendle', 'pengu', 'people', 'pepe', 'perp', 'pha', 'phb', 'pivx', 'pixel', 'pla', 'pnut', 'pol', 'pols', 'polyx', 'pond', 'portal', 'porto', 'powr', 'prom', 'pros', 'psg', 'pundix', 'pyr', 'pyth', 'qi', 'qkc', 'qnt', 'qtum', 'quick', 'rad', 'rare', 'ray', 'rdnt', 'red', 'reef', 'rei', 'ren', 'render', 'rep', 'req', 'rif', 'rlc', 'rndr', 'ronin', 'rose', 'rpl', 'rsr', 'rune', 'rvn', 'saga', 'sand', 'santos', 'sc', 'sei', 'sfp', 'shib', 'sign', 'skl', 'slp', 'snt', 'snx', 'sol', 'spell', 'srm', 'ssv', 'steem', 'stg', 'stmx', 'sto', 'storj', 'stpt', 'strax', 'strk', 'stx', 'sui', 'sun', 'super', 'sushi', 'sxp', 'sxt', 'syn', 'sys', 't', 'tao', 'theta', 'tia', 'tko', 'tlm', 'tnsr', 'ton', 'trb', 'troy', 'tru', 'trump', 'trx', 'tst', 'turbo', 'tusd', 'tut', 'twt', 'uft', 'uma', 'unfi', 'uni', 'usd', 'usd1', 'usdc', 'usdn', 'usdt', 'ustc', 'usual', 'utk', 'vanry', 'vet', 'vgx', 'vib', 'vic', 'vidt', 'virtual', 'vite', 'voxel', 'vtho', 'w', 'wan', 'waves', 'waxp', 'wbeth', 'wbtc', 'wif', 'win', 'wing', 'wld', 'woo', 'xai', 'xec', 'xlm', 'xmr', 'xrp', 'xtz', 'xvg', 'xvs', 'yfi', 'yfii', 'ygg', 'zec', 'zil', 'zk', 'zro', 'zrx']</msg>
<arg>价格转换字典包含字段: ${dict_keys}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.062678" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:29.063589" level="FAIL">Dictionary does not contain key 'rates'.</msg>
<arg>${convert_dict}</arg>
<arg>rates</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:29.063257" elapsed="0.000438">Dictionary does not contain key 'rates'.</status>
</kw>
<msg time="2026-05-28T20:27:29.063794" level="INFO">${has_rates} = False</msg>
<var>${has_rates}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>rates</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:29.063109" elapsed="0.000710"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:29.064272" level="FAIL">Dictionary does not contain key 'base'.</msg>
<arg>${convert_dict}</arg>
<arg>base</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:29.064092" elapsed="0.000242">Dictionary does not contain key 'base'.</status>
</kw>
<msg time="2026-05-28T20:27:29.064432" level="INFO">${has_base} = False</msg>
<var>${has_base}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>base</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:29.063946" elapsed="0.000511"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:29.064907" level="FAIL">Dictionary does not contain key 'timestamp'.</msg>
<arg>${convert_dict}</arg>
<arg>timestamp</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:29.064727" elapsed="0.000243">Dictionary does not contain key 'timestamp'.</status>
</kw>
<msg time="2026-05-28T20:27:29.065065" level="INFO">${has_timestamp} = False</msg>
<var>${has_timestamp}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>timestamp</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:29.064582" elapsed="0.000508"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:29.065597" level="FAIL">Dictionary does not contain key 'date'.</msg>
<arg>${convert_dict}</arg>
<arg>date</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:29.065419" elapsed="0.000235">Dictionary does not contain key 'date'.</status>
</kw>
<msg time="2026-05-28T20:27:29.065746" level="INFO">${has_date} = False</msg>
<var>${has_date}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>date</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:29.065272" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:29.066207" level="FAIL">Dictionary does not contain key 'success'.</msg>
<arg>${convert_dict}</arg>
<arg>success</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:29.066039" elapsed="0.000224">Dictionary does not contain key 'success'.</status>
</kw>
<msg time="2026-05-28T20:27:29.066353" level="INFO">${has_success} = False</msg>
<var>${has_success}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${convert_dict}</arg>
<arg>success</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:29.065895" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.066640" level="INFO">价格转换包含汇率(rates): False</msg>
<arg>价格转换包含汇率(rates): ${has_rates}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.066502" elapsed="0.000183"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.066924" level="INFO">价格转换包含基础货币(base): False</msg>
<arg>价格转换包含基础货币(base): ${has_base}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.066795" elapsed="0.000174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.067205" level="INFO">价格转换包含时间戳(timestamp): False</msg>
<arg>价格转换包含时间戳(timestamp): ${has_timestamp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.067076" elapsed="0.000173"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.067465" level="INFO">价格转换包含日期(date): False</msg>
<arg>价格转换包含日期(date): ${has_date}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.067345" elapsed="0.000159"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.067719" level="INFO">价格转换包含成功标记(success): False</msg>
<arg>价格转换包含成功标记(success): ${has_success}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.067599" elapsed="0.000160"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_rates}</arg>
<arg>验证汇率结构</arg>
<arg>${convert_dict['rates']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:29.067865" elapsed="0.000100"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_base}</arg>
<arg>验证基础货币</arg>
<arg>${convert_dict['base']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:29.068071" elapsed="0.000092"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_success}</arg>
<arg>验证成功标记</arg>
<arg>${convert_dict['success']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:29.068265" elapsed="0.000095"/>
</kw>
<arg>${data}</arg>
<doc>验证价格转换字典的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:29.061311" elapsed="0.007123"/>
</kw>
<arg>isinstance($data, dict)</arg>
<arg>验证价格转换字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:29.060802" elapsed="0.007678"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.069162" level="INFO">获取单一货币价格转换 /v1/spot/balance/public/price/currency/convert status=200</msg>
<arg>获取单一货币价格转换 /v1/spot/balance/public/price/currency/convert status=${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.068595" elapsed="0.000618"/>
</kw>
<doc>验证单一货币价格转换接口功能</doc>
<tag>spot</tag>
<status status="PASS" start="2026-05-28T20:27:28.548742" elapsed="0.520644"/>
</test>
<doc>货币价格转换接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:27.606731" elapsed="1.463073"/>
</suite>
<status status="PASS" start="2026-05-28T20:27:26.935371" elapsed="2.135690"/>
</suite>
<suite id="s1-s4-s2" name="Mark" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/mark">
<suite id="s1-s4-s2-s1" name="24H Market" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/mark/24h_market.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.077009" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:29.076820" elapsed="0.000220"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.077318" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:29.077124" elapsed="0.000246"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.077604" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.077478" elapsed="0.000169"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:29.077391" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:29.077101" elapsed="0.000595"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.078304" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.078191" elapsed="0.000154"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.078555" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.078672" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.078775" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.079916" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.080036" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:29.078405" elapsed="0.001678"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.080470" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.080258" elapsed="0.000252"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.080805" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.080611" elapsed="0.000233"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.081134" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.080946" elapsed="0.000225"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.081483" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.081273" elapsed="0.000252"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.081877" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.081642" elapsed="0.000279"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.082274" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.082040" elapsed="0.000276"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.082683" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.082434" elapsed="0.000291"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.083080" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.082843" elapsed="0.000280"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.083487" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:29.083239" elapsed="0.000291"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:29.080105" elapsed="0.003464"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.083702" elapsed="0.000021"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.083833" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.083958" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.084079" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.084201" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.084318" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.084437" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.084557" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.084677" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:29.083593" elapsed="0.001135"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:29.078388" elapsed="0.006361"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.084985" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.084840" elapsed="0.000186"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:29.085378" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:29.085125" elapsed="0.000524"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:29.077955" elapsed="0.007758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.085893" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:29.085811" elapsed="0.000121"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:29.076594" elapsed="0.009386"/>
</kw>
<test id="s1-s4-s2-s1-t1" name="获取24小时行情数据" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:29.088679" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:29.088040" elapsed="0.000666"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:29.089285" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:29.088819" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:29.088802" elapsed="0.000547"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:29.089374" elapsed="0.000024"/>
</return>
<msg time="2026-05-28T20:27:29.089529" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:29.087329" elapsed="0.002220"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:30.010560" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/market/public/ticker/24h 
 path_url=/v1/spot/market/public/ticker/24h 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:30.011006" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/market/public/ticker/24h 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:29 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'c96496b582b92d19bfd2d3053b368ad2', 'X-Transparent': '00-c96496b582b92d19bfd2d3053b368ad2-fb62ccf548861c30-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40f65a74e06e-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":[{"s":"api3_usdt","t":1779971246718,"cv":"-0.0253","cr":"-0.0777","o":"0.3252","l":"0.2994","h":"0.3281","c":"0.2999","q":"286667.24","v":"90287.750847"},{"s":"nexo_usdt","t":1779971242510,"cv":"-0.027","cr":"-0.0319","o":"0.844","l":"0.811","h":"0.852","c":"0.817","q":"176465.44","v":"146478.64441"},{"s":"bonk_usdt","t":1779971243681,"cv":"-0.00000067","cr":"-0.1122","o":"0.00000597","l":"0.00000529","h":"0.00000602","c":"0.00000530","q":"77532419306","v":"435306.18589346"},{"s":"ens_usdt","t":1779971242937,"cv":"-0.45","cr":"-0.0735","o":"6.12","l":"5.66","h":"6.16","c":"5.67","q":"45907.95","v":"271476.8873"},{"s":"cake_usdt","t":1779971246462,"cv":"-0.094","cr":"-0.0663","o":"1.417","l":"1.322","h":"1.420","c":"1.323","q":"323093.22","v":"438885.09288"},{"s":"pengu_usdt","t":1779971248334,"cv":"-0.000715","cr":"-0.0839","o":"0.008513","l":"0.007764","h":"0.008545","c":"0.007798","q":"218756121","v":"1769996.9604050001"},{"s":"kernel_usdt","t":1779971241498,"cv":"0.0001","cr":"0.0016","o":"0.0606","l":"0.0574","h":"0.0618","c":"0.0607","q":"8382026.7","v":"501325.71873"},{"s":"ctk_usdt","t":1779971247248,"cv":"-0.0102","cr":"-0.0642","o":"0.1587","l":"0.1461","h":"0.1594","c":"0.1485","q":"4638868.2","v":"711172.07127"},{"s":"storj_usdt","t":1779971244307,"cv":"-0.0052","cr":"-0.0495","o":"0.1050","l":"0.0993","h":"0.1090","c":"0.0998","q":"3019107.0","v":"316885.5653"},{"s":"alice_usdt","t":1779971247401,"cv":"-0.0077","cr":"-0.0615","o":"0.1252","l":"0.1171","h":"0.1304","c":"0.1175","q":"1989767.32","v":"247286.158761"},{"s":"imx_usdt","t":1779971247561,"cv":"-0.0120","cr":"-0.0718","o":"0.1670","l":"0.1540","h":"0.1720","c":"0.1550","q":"1516401.81","v":"246409.54006"},{"s":"ftt_usdt","t":1779971244318,"cv":"-0.0224","cr":"-0.0711","o":"0.3149","l":"0.2893","h":"0.3162","c":"0.2925","q":"521465.07","v":"157880.899935"},{"s":"orca_usdt","t":1779971239464,"cv":"-0.016","cr":"-0.0123","o":"1.295","l":"1.225","h":"1.326","c":"1.279","q":"61229.33","v":"78322.9019"},{"s":"acx_usdt","t":1779971248333,"cv":"-0.0002","cr":"-0.0046","o":"0.0427","l":"0.0420","h":"0.0428","c":"0.0425","q":"5263757.9","v":"223978.40847"},{"s":"g_usdt","t":1779971247135,"cv":"-0.00014","cr":"-0.0410","o":"0.00341","l":"0.00321","h":"0.00347","c":"0.00327","q":"92169482.0","v":"309183.66982"},{"s":"arb_usdt","t":1779971240242,"cv":"-0.0084","cr":"-0.0763","o":"0.1100","l":"0.1012","h":"0.1112","c":"0.1016","q":"12235768.2","v":"1290701.12441"},{"s":"osmo_usdt","t":1754502033409,"cv":"0.0001","cr":"0.0005","o":"0.1754","l":"0.1754","h":"0.1755","c":"0.1755","q":"1230.02","v":"215.780076"},{"s":"og_usdt","t":1755524715268,"cv":"-0.004","cr":"-0.0002","o":"13.976","l":"13.972","h":"13.979","c":"13.972","q":"38.7","v":"540.861"},{"s":"ada_usdt","t":1779971245170,"cv":"-0.0110","cr":"-0.0457","o":"0.2405","l":"0.2280","h":"0.2435","c":"0.2295","q":"31097988.6","v":"7302423.10722"},{"s":"lazio_usdt","t":1779971245423,"cv":"-0.030","cr":"-0.0571","o":"0.525","l":"0.489","h":"0.527","c":"0.495","q":"459702.09","v":"234287.4987"},{"s":"glmr_usdt","t":1779971248332,"cv":"-0.0004","cr":"-0.0322","o":"0.0124","l":"0.0119","h":"0.0125","c":"0.0120","q":"10015310.9","v":"121573.0366"},{"s":"bome_usdt","t":1779971248468,"cv":"-0.000035","cr":"-0.0670","o":"0.000522","l":"0.000479","h":"0.000532","c":"0.000487","q":"429803228","v":"216529.985729"},{"s":"eigen_usdt","t":1779971239106,"cv":"-0.0434","cr":"-0.1725","o":"0.2515","l":"0.2071","h":"0.2523","c":"0.2081","q":"1676016.01","v":"381045.258978"},{"s":"loka_usdt","t":1754582102153,"cv":"0.0000","cr":"0.0000","o":"0.1232","l":"0.1232","h":"0.1232","c":"0.1232","q":"552.2","v":"68.03104"},{"s":"ankr_usdt","t":1779971241744,"cv":"-0.00028","cr":"-0.0599","o":"0.00467","l":"0.00437","h":"0.00472","c":"0.00439","q":"47372163.0","v":"215275.085191"},{"s":"btc_usdt","t":1779971248929,"cv":"-2577.90","cr":"-0.0339","o":"75888.00","l":"72738.47","h":"75992.12","c":"73310.10","q":"3524.63833","v":"261386134.014205"},{"s":"nmr_usdt","t":1779971244931,"cv":"-0.30","cr":"-0.0351","o":"8.54","l":"8.15","h":"8.81","c":"8.24","q":"49337.42","v":"421392.3439"},{"s":"jto_usdt","t":1779971239213,"cv":"-0.0550","cr":"-0.1043","o":"0.5270","l":"0.4700","h":"0.5940","c":"0.4720","q":"1333951.0","v":"718598.7778"},{"s":"ray_usdt","t":1779971241245,"cv":"-0.044","cr":"-0.0589","o":"0.746","l":"0.694","h":"0.751","c":"0.702","q":"149666.9","v":"107944.9193"},{"s":"egld_usdt","t":1779971248803,"cv":"-0.32","cr":"-0.0837","o":"3.82","l":"3.49","h":"3.89","c":"3.50","q":"44880.11","v":"164360.409"},{"s":"tut_usdt","t":1779971246463,"cv":"-0.00081","cr":"-0.0780","o":"0.01038","l":"0.00946","h":"0.01049","c":"0.00957","q":"14259653","v":"142348.15422000001"},{"s":"bel_usdt","t":1779971248080,"cv":"-0.0062","cr":"-0.0620","o":"0.1000","l":"0.0934","h":"0.1032","c":"0.0938","q":"4853423.4","v":"475342.18593"},{"s":"arpa_usdt","t":1779971247937,"cv":"-0.00070","cr":"-0.0666","o":"0.01050","l":"0.00976","h":"0.01062","c":"0.00980","q":"45999651.9","v":"470493.590426"},{"s":"trb_usdt","t":1779971248811,"cv":"-1.22","cr":"-0.0702","o":"17.37","l":"16.03","h":"17.62","c":"16.15","q":"34795.145","v":"586719.885"},{"s":"porto_usdt","t":1779971248197,"cv":"-0.043","cr":"-0.0607","o":"0.708","l":"0.656","h":"0.715","c":"0.665","q":"470796.88","v":"325687.87966"},{"s":"crv_usdt","t":1779971247405,"cv":"-0.0087","cr":"-0.0397","o":"0.2190","l":"0.2075","h":"0.2232","c":"0.2103","q":"3091306.0","v":"661613.69678"},{"s":"awe_usdt","t":1779971248685,"cv":"-0.00031","cr":"-0.0056","o":"0.05455","l":"0.05327","h":"0.05573","c":"0.05424","q":"14539254.0","v":"792998.08738"},{"s":"sto_usdt","t":1779971248333,"cv":"-0.0039","cr":"-0.0617","o":"0.0632","l":"0.0584","h":"0.0645","c":"0.0593","q":"6228379.1","v":"383529.57428"},{"s":"sign_usdt","t":1779971243305,"cv":"-0.00091","cr":"-0.0741","o":"0.01227","l":"0.01127","h":"0.01268","c":"0.01136","q":"8692066","v":"104108.01222"},{"s":"lpt_usdt","t":1779971249223,"cv":"-0.183","cr":"-0.0811","o":"2.254","l":"2.066","h":"2.263","c":"2.071","q":"112188.14","v":"240514.8981"},{"s":"band_usdt","t":1779971247248,"cv":"-0.014","cr":"-0.0700","o":"0.200","l":"0.186","h":"0.203","c":"0.186","q":"812638.3","v":"157565.4013"},{"s":"spell_usdt","t":1779971242145,"cv":"-0.0000069","cr":"-0.0449","o":"0.0001534","l":"0.0001455","h":"0.0001546","c":"0.0001465","q":"396127106","v":"59732.5385784"},{"s":"doge_usdt","t":1779971249223,"cv":"-0.00452","cr":"-0.0443","o":"0.10203","l":"0.09711","h":"0.10338","c":"0.09751","q":"130407883","v":"13017207.27464"},{"s":"dot_usdt","t":1779971247134,"cv":"-0.083","cr":"-0.0654","o":"1.268","l":"1.176","h":"1.278","c":"1.185","q":"2477073.36","v":"3026092.57289"},{"s":"super_usdt","t":1779971246847,"cv":"-0.0069","cr":"-0.0594","o":"0.1161","l":"0.1083","h":"0.1173","c":"0.1092","q":"1174577","v":"132680.0150"},{"s":"quick_usdt","t":1779971249217,"cv":"-0.00122","cr":"-0.1367","o":"0.00892","l":"0.00760","h":"0.00936","c":"0.00770","q":"47952866.0","v":"410925.99076"},{"s":"rare_usdt","t":1779971249206,"cv":"-0.0007","cr":"-0.0457","o":"0.0153","l":"0.0144","h":"0.0157","c":"0.0146","q":"19179370.1","v":"288447.5388"},{"s":"hmstr_usdt","t":1779971231463,"cv":"-0.0000055","cr":"-0.0339","o":"0.0001621","l":"0.0001542","h":"0.0001746","c":"0.0001566","q":"593562611","v":"97148.7091444"},{"s":"arkm_usdt","t":1779971249215,"cv":"-0.0216","cr":"-0.1414","o":"0.1527","l":"0.1305","h":"0.1551","c":"0.1311","q":"1220441.1","v":"174220.74002"},{"s":"eth_usdt","t":1779971249323,"cv":"-99.95","cr":"-0.0479","o":"2083.59","l":"1967.24","h":"2088.20","c":"1983.64","q":"63550.8338","v":"128466912.622786"},{"s":"bigtime_usdt","t":1779971247106,"cv":"-0.00076","cr":"-0.0649","o":"0.01171","l":"0.01092","h":"0.01201","c":"0.01095","q":"14024191","v":"160072.85629"},{"s":"sun_usdt","t":1779971248333,"cv":"-0.00150","cr":"-0.0748","o":"0.02003","l":"0.01851","h":"0.02007","c":"0.01853","q":"73056210","v":"1406778.42239"},{"s":"auction_usdt","t":1779971246960,"cv":"-0.23","cr":"-0.0500","o":"4.60","l":"4.34","h":"4.65","c":"4.37","q":"99212.06","v":"448707.6951"},{"s":"aave_usdt","t":1779971246720,"cv":"-5.46","cr":"-0.0636","o":"85.81","l":"80.05","h":"87.02","c":"80.35","q":"37553.207","v":"3105845.43397"},{"s":"pyr_usdt","t":1779971246718,"cv":"-0.016","cr":"-0.0647","o":"0.247","l":"0.231","h":"0.253","c":"0.231","q":"852915.300","v":"207279.728747"},{"s":"sol_usdt","t":1779971248690,"cv":"-3.58","cr":"-0.0424","o":"84.25","l":"80.00","h":"84.83","c":"80.67","q":"431473.259","v":"35557607.816"},{"s":"axl_usdt","t":1779971249072,"cv":"-0.0049","cr":"-0.0878","o":"0.0558","l":"0.0504","h":"0.0566","c":"0.0509","q":"3636887.62","v":"193883.78438"},{"s":"agld_usdt","t":1779971248806,"cv":"-0.014","cr":"-0.0622","o":"0.225","l":"0.209","h":"0.229","c":"0.211","q":"1656924.9","v":"363413.9409"},{"s":"virtual_usdt","t":1779971247949,"cv":"-0.1271","cr":"-0.1538","o":"0.8263","l":"0.6881","h":"0.8308","c":"0.6992","q":"1186651.8","v":"888152.6495"},{"s":"ilv_usdt","t":1779971248199,"cv":"-0.30","cr":"-0.0719","o":"4.17","l":"3.86","h":"4.37","c":"3.87","q":"51744.614","v":"212553.54789"},{"s":"lqty_usdt","t":1779971248315,"cv":"-0.013","cr":"-0.0526","o":"0.247","l":"0.233","h":"0.254","c":"0.234","q":"1563240.9","v":"380000.4264"},{"s":"anime_usdt","t":1779971248836,"cv":"-0.00042","cr":"-0.0995","o":"0.00422","l":"0.00377","h":"0.00423","c":"0.00380","q":"39796774.5","v":"161083.452809"},{"s":"zro_usdt","t":1779971247805,"cv":"-0.112","cr":"-0.0886","o":"1.263","l":"1.126","h":"1.284","c":"1.151","q":"355935.30","v":"427280.0401"},{"s":"audio_usdt","t":1779971237934,"cv":"-0.0007","cr":"-0.0362","o":"0.0193","l":"0.0184","h":"0.0198","c":"0.0186","q":"6699123.6","v":"127331.53561"},{"s":"bch_usdt","t":1779971249432,"cv":"-42.8","cr":"-0.1242","o":"344.6","l":"295.6","h":"347.5","c":"301.8","q":"27571.809","v":"8842569.2288"},{"s":"xtz_usdt","t":177... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-05-28T20:27:30.011499" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:30.011882" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>url=/v1/spot/market/public/ticker/24h</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=any</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:29.089634" elapsed="0.922313"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.014021" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:30.012557" elapsed="0.001610"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.017200" level="INFO">${resp_json} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': [{'s': 'api3_usdt', 't': 1779971246718, 'cv': '-0.0253', 'cr': '-0.0777', 'o': '0.3252', 'l': '0.2994', 'h': '0.3281', 'c': '0.2999', 'q': '286667....</msg>
<var>${resp_json}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:30.014456" elapsed="0.002804"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${resp_json}</arg>
<arg>data</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.017512" elapsed="0.000344"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.023264" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": [
    {
      "s": "api3_usdt",
      "t": 1779971246718,
      "cv": "-0.0253",
      "cr": "-0.0777",
      "o": "0.3252",
      "l": "0...</msg>
<var>${json_str}</var>
<arg>json.dumps($resp_json, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:30.018101" elapsed="0.005208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.023930" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": [
    {
      "s": "api3_usdt",
      "t": 1779971246718,
      "cv": "-0.0253",
      "cr": "-0.0777",
      "o": "0.3252",
      "l": "0.2994",
      "h": "0.3281",
      "c": "0.2999",
      "q": "286667.24",
      "v": "90287.750847"
    },
    {
      "s": "nexo_usdt",
      "t": 1779971242510,
      "cv": "-0.027",
      "cr": "-0.0319",
      "o": "0.844",
      "l": "0.811",
      "h": "0.852",
      "c": "0.817",
      "q": "176465.44",
      "v": "146478.64441"
    },
    {
      "s": "bonk_usdt",
      "t": 1779971243681,
      "cv": "-0.00000067",
      "cr": "-0.1122",
      "o": "0.00000597",
      "l": "0.00000529",
      "h": "0.00000602",
      "c": "0.00000530",
      "q": "77532419306",
      "v": "435306.18589346"
    },
    {
      "s": "ens_usdt",
      "t": 1779971242937,
      "cv": "-0.45",
      "cr": "-0.0735",
      "o": "6.12",
      "l": "5.66",
      "h": "6.16",
      "c": "5.67",
      "q": "45907.95",
      "v": "271476.8873"
    },
    {
      "s": "cake_usdt",
      "t": 1779971246462,
      "cv": "-0.094",
      "cr": "-0.0663",
      "o": "1.417",
      "l": "1.322",
      "h": "1.420",
      "c": "1.323",
      "q": "323093.22",
      "v": "438885.09288"
    },
    {
      "s": "pengu_usdt",
      "t": 1779971248334,
      "cv": "-0.000715",
      "cr": "-0.0839",
      "o": "0.008513",
      "l": "0.007764",
      "h": "0.008545",
      "c": "0.007798",
      "q": "218756121",
      "v": "1769996.9604050001"
    },
    {
      "s": "kernel_usdt",
      "t": 1779971241498,
      "cv": "0.0001",
      "cr": "0.0016",
      "o": "0.0606",
      "l": "0.0574",
      "h": "0.0618",
      "c": "0.0607",
      "q": "8382026.7",
      "v": "501325.71873"
    },
    {
      "s": "ctk_usdt",
      "t": 1779971247248,
      "cv": "-0.0102",
      "cr": "-0.0642",
      "o": "0.1587",
      "l": "0.1461",
      "h": "0.1594",
      "c": "0.1485",
      "q": "4638868.2",
      "v": "711172.07127"
    },
    {
      "s": "storj_usdt",
      "t": 1779971244307,
      "cv": "-0.0052",
      "cr": "-0.0495",
      "o": "0.1050",
      "l": "0.0993",
      "h": "0.1090",
      "c": "0.0998",
      "q": "3019107.0",
      "v": "316885.5653"
    },
    {
      "s": "alice_usdt",
      "t": 1779971247401,
      "cv": "-0.0077",
      "cr": "-0.0615",
      "o": "0.1252",
      "l": "0.1171",
      "h": "0.1304",
      "c": "0.1175",
      "q": "1989767.32",
      "v": "247286.158761"
    },
    {
      "s": "imx_usdt",
      "t": 1779971247561,
      "cv": "-0.0120",
      "cr": "-0.0718",
      "o": "0.1670",
      "l": "0.1540",
      "h": "0.1720",
      "c": "0.1550",
      "q": "1516401.81",
      "v": "246409.54006"
    },
    {
      "s": "ftt_usdt",
      "t": 1779971244318,
      "cv": "-0.0224",
      "cr": "-0.0711",
      "o": "0.3149",
      "l": "0.2893",
      "h": "0.3162",
      "c": "0.2925",
      "q": "521465.07",
      "v": "157880.899935"
    },
    {
      "s": "orca_usdt",
      "t": 1779971239464,
      "cv": "-0.016",
      "cr": "-0.0123",
      "o": "1.295",
      "l": "1.225",
      "h": "1.326",
      "c": "1.279",
      "q": "61229.33",
      "v": "78322.9019"
    },
    {
      "s": "acx_usdt",
      "t": 1779971248333,
      "cv": "-0.0002",
      "cr": "-0.0046",
      "o": "0.0427",
      "l": "0.0420",
      "h": "0.0428",
      "c": "0.0425",
      "q": "5263757.9",
      "v": "223978.40847"
    },
    {
      "s": "g_usdt",
      "t": 1779971247135,
      "cv": "-0.00014",
      "cr": "-0.0410",
      "o": "0.00341",
      "l": "0.00321",
      "h": "0.00347",
      "c": "0.00327",
      "q": "92169482.0",
      "v": "309183.66982"
    },
    {
      "s": "arb_usdt",
      "t": 1779971240242,
      "cv": "-0.0084",
      "cr": "-0.0763",
      "o": "0.1100",
      "l": "0.1012",
      "h": "0.1112",
      "c": "0.1016",
      "q": "12235768.2",
      "v": "1290701.12441"
    },
    {
      "s": "osmo_usdt",
      "t": 1754502033409,
      "cv": "0.0001",
      "cr": "0.0005",
      "o": "0.1754",
      "l": "0.1754",
      "h": "0.1755",
      "c": "0.1755",
      "q": "1230.02",
      "v": "215.780076"
    },
    {
      "s": "og_usdt",
      "t": 1755524715268,
      "cv": "-0.004",
      "cr": "-0.0002",
      "o": "13.976",
      "l": "13.972",
      "h": "13.979",
      "c": "13.972",
      "q": "38.7",
      "v": "540.861"
    },
    {
      "s": "ada_usdt",
      "t": 1779971245170,
      "cv": "-0.0110",
      "cr": "-0.0457",
      "o": "0.2405",
      "l": "0.2280",
      "h": "0.2435",
      "c": "0.2295",
      "q": "31097988.6",
      "v": "7302423.10722"
    },
    {
      "s": "lazio_usdt",
      "t": 1779971245423,
      "cv": "-0.030",
      "cr": "-0.0571",
      "o": "0.525",
      "l": "0.489",
      "h": "0.527",
      "c": "0.495",
      "q": "459702.09",
      "v": "234287.4987"
    },
    {
      "s": "glmr_usdt",
      "t": 1779971248332,
      "cv": "-0.0004",
      "cr": "-0.0322",
      "o": "0.0124",
      "l": "0.0119",
      "h": "0.0125",
      "c": "0.0120",
      "q": "10015310.9",
      "v": "121573.0366"
    },
    {
      "s": "bome_usdt",
      "t": 1779971248468,
      "cv": "-0.000035",
      "cr": "-0.0670",
      "o": "0.000522",
      "l": "0.000479",
      "h": "0.000532",
      "c": "0.000487",
      "q": "429803228",
      "v": "216529.985729"
    },
    {
      "s": "eigen_usdt",
      "t": 1779971239106,
      "cv": "-0.0434",
      "cr": "-0.1725",
      "o": "0.2515",
      "l": "0.2071",
      "h": "0.2523",
      "c": "0.2081",
      "q": "1676016.01",
      "v": "381045.258978"
    },
    {
      "s": "loka_usdt",
      "t": 1754582102153,
      "cv": "0.0000",
      "cr": "0.0000",
      "o": "0.1232",
      "l": "0.1232",
      "h": "0.1232",
      "c": "0.1232",
      "q": "552.2",
      "v": "68.03104"
    },
    {
      "s": "ankr_usdt",
      "t": 1779971241744,
      "cv": "-0.00028",
      "cr": "-0.0599",
      "o": "0.00467",
      "l": "0.00437",
      "h": "0.00472",
      "c": "0.00439",
      "q": "47372163.0",
      "v": "215275.085191"
    },
    {
      "s": "btc_usdt",
      "t": 1779971248929,
      "cv": "-2577.90",
      "cr": "-0.0339",
      "o": "75888.00",
      "l": "72738.47",
      "h": "75992.12",
      "c": "73310.10",
      "q": "3524.63833",
      "v": "261386134.014205"
    },
    {
      "s": "nmr_usdt",
      "t": 1779971244931,
      "cv": "-0.30",
      "cr": "-0.0351",
      "o": "8.54",
      "l": "8.15",
      "h": "8.81",
      "c": "8.24",
      "q": "49337.42",
      "v": "421392.3439"
    },
    {
      "s": "jto_usdt",
      "t": 1779971239213,
      "cv": "-0.0550",
      "cr": "-0.1043",
      "o": "0.5270",
      "l": "0.4700",
      "h": "0.5940",
      "c": "0.4720",
      "q": "1333951.0",
      "v": "718598.7778"
    },
    {
      "s": "ray_usdt",
      "t": 1779971241245,
      "cv": "-0.044",
      "cr": "-0.0589",
      "o": "0.746",
      "l": "0.694",
      "h": "0.751",
      "c": "0.702",
      "q": "149666.9",
      "v": "107944.9193"
    },
    {
      "s": "egld_usdt",
      "t": 1779971248803,
      "cv": "-0.32",
      "cr": "-0.0837",
      "o": "3.82",
      "l": "3.49",
      "h": "3.89",
      "c": "3.50",
      "q": "44880.11",
      "v": "164360.409"
    },
    {
      "s": "tut_usdt",
      "t": 1779971246463,
      "cv": "-0.00081",
      "cr": "-0.0780",
      "o": "0.01038",
      "l": "0.00946",
      "h": "0.01049",
      "c": "0.00957",
      "q": "14259653",
      "v": "142348.15422000001"
    },
    {
      "s": "bel_usdt",
      "t": 1779971248080,
      "cv": "-0.0062",
      "cr": "-0.0620",
      "o": "0.1000",
      "l": "0.0934",
      "h": "0.1032",
      "c": "0.0938",
      "q": "4853423.4",
      "v": "475342.18593"
    },
    {
      "s": "arpa_usdt",
      "t": 1779971247937,
      "cv": "-0.00070",
      "cr": "-0.0666",
      "o": "0.01050",
      "l": "0.00976",
      "h": "0.01062",
      "c": "0.00980",
      "q": "45999651.9",
      "v": "470493.590426"
    },
    {
      "s": "trb_usdt",
      "t": 1779971248811,
      "cv": "-1.22",
      "cr": "-0.0702",
      "o": "17.37",
      "l": "16.03",
      "h": "17.62",
      "c": "16.15",
      "q": "34795.145",
      "v": "586719.885"
    },
    {
      "s": "porto_usdt",
      "t": 1779971248197,
      "cv": "-0.043",
      "cr": "-0.0607",
      "o": "0.708",
      "l": "0.656",
      "h": "0.715",
      "c": "0.665",
      "q": "470796.88",
      "v": "325687.87966"
    },
    {
      "s": "crv_usdt",
      "t": 1779971247405,
      "cv": "-0.0087",
      "cr": "-0.0397",
      "o": "0.2190",
      "l": "0.2075",
      "h": "0.2232",
      "c": "0.2103",
      "q": "3091306.0",
      "v": "661613.69678"
    },
    {
      "s": "awe_usdt",
      "t": 1779971248685,
      "cv": "-0.00031",
      "cr": "-0.0056",
      "o": "0.05455",
      "l": "0.05327",
      "h": "0.05573",
      "c": "0.05424",
      "q": "14539254.0",
      "v": "792998.08738"
    },
    {
      "s": "sto_usdt",
      "t": 1779971248333,
      "cv": "-0.0039",
      "cr": "-0.0617",
      "o": "0.0632",
      "l": "0.0584",
      "h": "0.0645",
      "c": "0.0593",
      "q": "6228379.1",
      "v": "383529.57428"
    },
    {
      "s": "sign_usdt",
      "t": 1779971243305,
      "cv": "-0.00091",
      "cr": "-0.0741",
      "o": "0.01227",
      "l": "0.01127",
      "h": "0.01268",
      "c": "0.01136",
      "q": "8692066",
      "v": "104108.01222"
    },
    {
      "s": "lpt_usdt",
      "t": 1779971249223,
      "cv": "-0.183",
      "cr": "-0.0811",
      "o": "2.254",
      "l": "2.066",
      "h": "2.263",
      "c": "2.071",
      "q": "112188.14",
      "v": "240514.8981"
    },
    {
      "s": "band_usdt",
      "t": 1779971247248,
      "cv": "-0.014",
      "cr": "-0.0700",
      "o": "0.200",
      "l": "0.186",
      "h": "0.203",
      "c": "0.186",
      "q": "812638.3",
      "v": "157565.4013"
    },
    {
      "s": "spell_usdt",
      "t": 1779971242145,
      "cv": "-0.0000069",
      "cr": "-0.0449",
      "o": "0.0001534",
      "l": "0.0001455",
      "h": "0.0001546",
      "c": "0.0001465",
      "q": "396127106",
      "v": "59732.5385784"
    },
    {
      "s": "doge_usdt",
      "t": 1779971249223,
      "cv": "-0.00452",
      "cr": "-0.0443",
      "o": "0.10203",
      "l": "0.09711",
      "h": "0.10338",
      "c": "0.09751",
      "q": "130407883",
      "v": "13017207.27464"
    },
    {
      "s": "dot_usdt",
      "t": 1779971247134,
      "cv": "-0.083",
      "cr": "-0.0654",
      "o": "1.268",
      "l": "1.176",
      "h": "1.278",
      "c": "1.185",
      "q": "2477073.36",
      "v": "3026092.57289"
    },
    {
      "s": "super_usdt",
      "t": 1779971246847,
      "cv": "-0.0069",
      "cr": "-0.0594",
      "o": "0.1161",
      "l": "0.1083",
      "h": "0.1173",
      "c": "0.1092",
      "q": "1174577",
      "v": "132680.0150"
    },
    {
      "s": "quick_usdt",
      "t": 1779971249217,
      "cv": "-0.00122",
      "cr": "-0.1367",
      "o": "0.00892",
      "l": "0.00760",
      "h": "0.00936",
      "c": "0.00770",
      "q": "47952866.0",
      "v": "410925.99076"
    },
    {
      "s": "rare_usdt",
      "t": 1779971249206,
      "cv": "-0.0007",
      "cr": "-0.0457",
      "o": "0.0153",
      "l": "0.0144",
      "h": "0.0157",
      "c": "0.0146",
      "q": "19179370.1",
      "v": "288447.5388"
    },
    {
      "s": "hmstr_usdt",
      "t": 1779971231463,
      "cv": "-0.0000055",
      "cr": "-0.0339",
      "o": "0.0001621",
      "l": "0.0001542",
      "h": "0.0001746",
      "c": "0.0001566",
      "q": "593562611",
      "v": "97148.7091444"
    },
    {
      "s": "arkm_usdt",
      "t": 1779971249215,
      "cv": "-0.0216",
      "cr": "-0.1414",
      "o": "0.1527",
      "l": "0.1305",
      "h": "0.1551",
      "c": "0.1311",
      "q": "1220441.1",
      "v": "174220.74002"
    },
    {
      "s": "eth_usdt",
      "t": 1779971249323,
      "cv": "-99.95",
      "cr": "-0.0479",
      "o": "2083.59",
      "l": "1967.24",
      "h": "2088.20",
      "c": "1983.64",
      "q": "63550.8338",
      "v": "128466912.622786"
    },
    {
      "s": "bigtime_usdt",
      "t": 1779971247106,
      "cv": "-0.00076",
      "cr": "-0.0649",
      "o": "0.01171",
      "l": "0.01092",
      "h": "0.01201",
      "c": "0.01095",
      "q": "14024191",
      "v": "160072.85629"
    },
    {
      "s": "sun_usdt",
      "t": 1779971248333,
      "cv": "-0.00150",
      "cr": "-0.0748",
      "o": "0.02003",
      "l": "0.01851",
      "h": "0.02007",
      "c": "0.01853",
      "q": "73056210",
      "v": "1406778.42239"
    },
    {
      "s": "auction_usdt",
      "t": 1779971246960,
      "cv": "-0.23",
      "cr": "-0.0500",
      "o": "4.60",
      "l": "4.34",
      "h": "4.65",
      "c": "4.37",
      "q": "99212.06",
      "v": "448707.6951"
    },
    {
      "s": "aave_usdt",
      "t": 1779971246720,
      "cv": "-5.46",
      "cr": "-0.0636",
      "o": "85.81",
      "l": "80.05",
      "h": "87.02",
      "c": "80.35",
      "q": "37553.207",
      "v": "3105845.43397"
    },
    {
      "s": "pyr_usdt",
      "t": 1779971246718,
      "cv": "-0.016",
      "cr": "-0.0647",
      "o": "0.247",
      "l": "0.231",
      "h": "0.253",
      "c": "0.231",
      "q": "852915.300",
      "v": "207279.728747"
    },
    {
      "s": "sol_usdt",
      "t": 1779971248690,
      "cv": "-3.58",
      "cr": "-0.0424",
      "o": "84.25",
      "l": "80.00",
      "h": "84.83",
      "c": "80.67",
      "q": "431473.259",
      "v": "35557607.816"
    },
    {
      "s": "axl_usdt",
      "t": 1779971249072,
      "cv": "-0.0049",
      "cr": "-0.0878",
      "o": "0.0558",
      "l": "0.0504",
      "h": "0.0566",
      "c": "0.0509",
      "q": "3636887.62",
      "v": "193883.78438"
    },
    {
      "s": "agld_usdt",
      "t": 1779971248806,
      "cv": "-0.014",
      "cr": "-0.0622",
      "o": "0.225",
      "l": "0.209",
      "h": "0.229",
      "c": "0.211",
      "q": "1656924.9",
      "v": "363413.9409"
    },
    {
      "s": "virtual_usdt",
      "t": 1779971247949,
      "cv": "-0.1271",
      "cr": "-0.1538",
      "o": "0.8263",
      "l": "0.6881",
      "h": "0.8308",
      "c": "0.6992",
      "q": "1186651.8",
      "v": "888152.6495"
    },
    {
      "s": "ilv_usdt",
      "t": 1779971248199,
      "cv": "-0.30",
      "cr": "-0.0719",
      "o": "4.17",
      "l": "3.86",
      "h": "4.37",
      "c": "3.87",
      "q": "51744.614",
      "v": "212553.54789"
    },
    {
      "s": "lqty_usdt",
      "t": 1779971248315,
      "cv": "-0.013",
      "cr": "-0.0526",
      "o": "0.247",
      "l": "0.233",
      "h": "0.254",
      "c": "0.234",
      "q": "1563240.9",
      "v": "380000.4264"
    },
    {
      "s": "anime_usdt",
      "t": 1779971248836,
      "cv": "-0.00042",
      "cr": "-0.0995",
      "o": "0.00422",
      "l": "0.00377",
      "h": "0.00423",
      "c": "0.00380",
      "q": "39796774.5",
      "v": "161083.452809"
    },
    {
      "s": "zro_usdt",
      "t": 1779971247805,
      "cv": "-0.112",
      "cr": "-0.0886",
      "o": "1.263",
      "l": "1.126",
      "h": "1.284",
      "c": "1.151",
      "q": "355935.30",
      "v": "427280.0401"
    },
    {
      "s": "audio_usdt",
      "t": 1779971237934,
      "cv": "-0.0007",
      "cr": "-0.0362",
      "o": "0.0193",
      "l": "0.0184",
      "h": "0.0198",
      "c": "0.0186",
      "q": "6699123.6",
      "v": "127331.53561"
    },
    {
      "s": "bch_usdt",
      "t": 1779971249432,
      "cv": "-42.8",
      "cr": "-0.1242",
      "o": "344.6",
      "l": "295.6",
      "h": "347.5",
      "c": "301.8",
      "q": "27571.809",
      "v": "8842569.2288"
    },
    {
      "s": "xtz_usdt",
      "t": 1779971247522,
      "cv": "-0.0189",
      "cr": "-0.0576",
      "o": "0.3278",
      "l": "0.3052",
      "h": "0.3288",
      "c": "0.3089",
      "q": "809302.4",
      "v": "256014.31623"
    },
    {
      "s": "tst_usdt",
      "t": 1779971239478,
      "cv": "-0.0009",
      "cr": "-0.0511",
      "o": "0.0176",
      "l": "0.0161",
      "h": "0.0180",
      "c": "0.0167",
      "q": "7954508.1",
      "v": "136681.1809"
    },
    {
      "s": "rpl_usdt",
      "t": 1779971248573,
      "cv": "-0.09",
      "cr": "-0.0532",
      "o": "1.69",
      "l": "1.58",
      "h": "1.72",
      "c": "1.60",
      "q": "175270.69",
      "v": "289593.2403"
    },
    {
      "s": "cgpt_usdt",
      "t": 1779971245844,
      "cv": "-0.0025",
      "cr": "-0.1028",
      "o": "0.0243",
      "l": "0.0217",
      "h": "0.0247",
      "c": "0.0218",
      "q": "3426524.9",
      "v": "79176.47959"
    },
    {
      "s": "shib_usdt",
      "t": 1779971247813,
      "cv": "-0.00000026",
      "cr": "-0.0470",
      "o": "0.00000553",
      "l": "0.00000524",
      "h": "0.00000556",
      "c": "0.00000527",
      "q": "218937503620",
      "v": "1176687.06015895"
    },
    {
      "s": "tnsr_usdt",
      "t": 1779971248691,
      "cv": "-0.0032",
      "cr": "-0.0844",
      "o": "0.0379",
      "l": "0.0345",
      "h": "0.0387",
      "c": "0.0347",
      "q": "4945833.7",
      "v": "181258.43743"
    },
    {
      "s": "pendle_usdt",
      "t": 1779971247291,
      "cv": "-0.174",
      "cr": "-0.1020",
      "o": "1.705",
      "l": "1.511",
      "h": "1.717",
      "c": "1.531",
      "q": "349863.4",
      "v": "562263.349"
    },
    {
      "s": "psg_usdt",
      "t": 1779971249444,
      "cv": "0.080",
      "cr": "0.0746",
      "o": "1.072",
      "l": "1.042",
      "h": "1.196",
      "c": "1.152",
      "q": "482693.77",
      "v": "540370.1003"
    },
    {
      "s": "pnut_usdt",
      "t": 1779971249210,
      "cv": "-0.0048",
      "cr": "-0.0858",
      "o": "0.0559",
      "l": "0.0506",
      "h": "0.0566",
      "c": "0.0511",
      "q": "5321161.2",
      "v": "284827.8479"
    },
    {
      "s": "trx_usdt",
      "t": 1779971249443,
      "cv": "-0.0245",
      "cr": "-0.0654",
      "o": "0.3741",
      "l": "0.3482",
      "h": "0.3744",
      "c": "0.3496",
      "q": "58198824.8",
      "v": "20998152.86831"
    },
    {
      "s": "hot_usdt",
      "t": 1779971247952,
      "cv": "-0.000019",
      "cr": "-0.0501",
      "o": "0.000379",
      "l": "0.000353",
      "h": "0.000385",
      "c": "0.000360",
      "q": "903572684.0",
      "v": "334606.139150"
    },
    {
      "s": "sui_usdt",
      "t": 1779971243684,
      "cv": "-0.0997",
      "cr": "-0.0987",
      "o": "1.0093",
      "l": "0.9071",
      "h": "1.0128",
      "c": "0.9096",
      "q": "12817229.9",
      "v": "12235114.064790001"
    },
    {
      "s": "yfi_usdt",
      "t": 1779971242804,
      "cv": "-134",
      "cr": "-0.0548",
      "o": "2443",
      "l": "2300",
      "h": "2454",
      "c": "2309",
      "q": "132.10445",
      "v": "314400.88562"
    },
    {
      "s": "ape_usdt",
      "t": 1779971234012,
      "cv": "-0.0140",
      "cr": "-0.1029",
      "o": "0.1360",
      "l": "0.1210",
      "h": "0.1390",
      "c": "0.1220",
      "q": "1192988.78",
      "v": "155738.59246"
    },
    {
      "s": "mask_usdt",
      "t": 1779971247554,
      "cv": "-0.018",
      "cr": "-0.0405",
      "o": "0.444",
      "l": "0.418",
      "h": "0.453",
      "c": "0.426",
      "q": "456666.1",
      "v": "198527.1596"
    },
    {
      "s": "ethfi_usdt",
      "t": 1779971249214,
      "cv": "-0.031",
      "cr": "-0.0786",
      "o": "0.394",
      "l": "0.356",
      "h": "0.404",
      "c": "0.363",
      "q": "1541124.8",
      "v": "588024.2575"
    },
    {
      "s": "red_usdt",
      "t": 1779971244432,
      "cv": "-0.0108",
      "cr": "-0.0829",
      "o": "0.1302",
      "l": "0.1191",
      "h": "0.1317",
      "c": "0.1194",
      "q": "1705687.9",
      "v": "213394.79195"
    },
    {
      "s": "epic_usdt",
      "t": 1779971246344,
      "cv": "-0.017",
      "cr": "-0.0805",
      "o": "0.211",
      "l": "0.192",
      "h": "0.218",
      "c": "0.194",
      "q": "631214.2",
      "v": "129231.9864"
    },
    {
      "s": "people_usdt",
      "t": 1779971249429,
      "cv": "-0.00049",
      "cr": "-0.0743",
      "o": "0.00659",
      "l": "0.00602",
      "h": "0.00667",
      "c": "0.00610",
      "q": "44866135.4",
      "v": "284981.828002"
    },
    {
      "s": "ondo_usdt",
      "t": 1779971242116,
      "cv": "-0.0513",
      "cr": "-0.1260",
      "o": "0.4069",
      "l": "0.3512",
      "h": "0.4077",
      "c": "0.3556",
      "q": "3456521.5",
      "v": "1271604.19501"
    },
    {
      "s": "jst_usdt",
      "t": 1779971242384,
      "cv": "-0.00059",
      "cr": "-0.0061",
      "o": "0.09545",
      "l": "0.09402",
      "h": "0.09709",
      "c": "0.09486",
      "q": "34585919.5",
      "v": "3309417.342294"
    },
    {
      "s": "turbo_usdt",
      "t": 1779971247239,
      "cv": "-0.000091",
      "cr": "-0.0821",
      "o": "0.001108",
      "l": "0.001006",
      "h": "0.001120",
      "c": "0.001017",
      "q": "183428018",
      "v": "194656.339046"
    },
    {
      "s": "coti_usdt",
      "t": 1779971247937,
      "cv": "-0.00096",
      "cr": "-0.0792",
      "o": "0.01211",
      "l": "0.01113",
      "h": "0.01227",
      "c": "0.01115",
      "q": "9996219.0",
      "v": "116601.49100"
    },
    {
      "s": "fida_usdt",
      "t": 1779971243186,
      "cv": "-0.00258",
      "cr": "-0.0824",
      "o": "0.03131",
      "l": "0.02860",
      "h": "0.03257",
      "c": "0.02873",
      "q": "4733571.5",
      "v": "144609.153301"
    },
    {
      "s": "powr_usdt",
      "t": 1779971248339,
      "cv": "-0.0025",
      "cr": "-0.0407",
      "o": "0.0614",
      "l": "0.0588",
      "h": "0.0630",
      "c": "0.0589",
      "q": "5533396",
      "v": "335929.7030"
    },
    {
      "s": "mbox_usdt",
      "t": 1779971247240,
      "cv": "-0.0005",
      "cr": "-0.0454",
      "o": "0.0110",
      "l": "0.0103",
      "h": "0.0113",
      "c": "0.0105",
      "q": "13806678.8",
      "v": "149102.90913"
    },
    {
      "s": "gps_usdt",
      "t": 1779971248206,
      "cv": "0.0001",
      "cr": "0.0147",
      "o": "0.0068",
      "l": "0.0066",
      "h": "0.0071",
      "c": "0.0069",
      "q": "61676898.3",
      "v": "421562.75897"
    },
    {
      "s": "trump_usdt",
      "t": 1779971249207,
      "cv": "-0.180",
      "cr": "-0.0891",
      "o": "2.020",
      "l": "1.840",
      "h": "2.030",
      "c": "1.840",
      "q": "1033402.136",
      "v": "1981791.09345"
    },
    {
      "s": "cow_usdt",
      "t": 1779971245972,
      "cv": "-0.0051",
      "cr": "-0.0319",
      "o": "0.1595",
      "l": "0.1478",
      "h": "0.1604",
      "c": "0.1544",
      "q": "4625097.3",
      "v": "713215.0206"
    },
    {
      "s": "paxg_usdt",
      "t": 1779971247527,
      "cv": "-71.9",
      "cr": "-0.0161",
      "o": "4459.8",
      "l": "4373.9",
      "h": "4465.8",
      "c": "4387.9",
      "q": "1720.1872",
      "v": "7602020.50731"
    },
    {
      "s": "btx_usdt",
      "t": 1779971249432,
      "cv": "-0.0008",
      "cr": "-0.0040",
      "o": "0.1967",
      "l": "0.1948",
      "h": "0.1968",
      "c": "0.1959",
      "q": "30238845.5",
      "v": "5927767.27701"
    },
    {
      "s": "io_usdt",
      "t": 1779971243953,
      "cv": "-0.0170",
      "cr": "-0.0977",
      "o": "0.1740",
      "l": "0.1560",
      "h": "0.1790",
      "c": "0.1570",
      "q": "1281334.19",
      "v": "214183.4095"
    },
    {
      "s": "ssv_usdt",
      "t": 1779971249205,
      "cv": "-0.129",
      "cr": "-0.0523",
      "o": "2.463",
      "l": "2.293",
      "h": "2.519",
      "c": "2.334",
      "q": "72651.087",
      "v": "174898.529717"
    },
    {
      "s": "usdc_usdt",
      "t": 1779971249091,
      "cv": "-0.00005",
      "cr": "0.0000",
      "o": "1.00120",
      "l": "1.00106",
      "h": "1.00422",
      "c": "1.00115",
      "q": "78360072",
      "v": "78456968.24369"
    },
    {
      "s": "nfp_usdt",
      "t": 1779971244062,
      "cv": "-0.0008",
      "cr": "-0.0800",
      "o": "0.0100",
      "l": "0.0091",
      "h": "0.0105",
      "c": "0.0092",
      "q": "13748905.0000",
      "v": "134684.3504"
    },
    {
      "s": "bera_usdt",
      "t": 1779971247650,
      "cv": "-0.033",
      "cr": "-0.0891",
      "o": "0.370",
      "l": "0.336",
      "h": "0.378",
      "c": "0.337",
      "q": "609494.578",
      "v": "214549.323548"
    },
    {
      "s": "alpine_usdt",
      "t": 1779971246830,
      "cv": "-0.004",
      "cr": "-0.0098",
      "o": "0.408",
      "l": "0.387",
      "h": "0.420",
      "c": "0.404",
      "q": "884054.38",
      "v": "357063.27396"
    },
    {
      "s": "w_usdt",
      "t": 1779971247116,
      "cv": "-0.0012",
      "cr": "-0.0975",
      "o": "0.0123",
      "l": "0.0111",
      "h": "0.0126",
      "c": "0.0111",
      "q": "23125550.4",
      "v": "272862.4378"
    },
    {
      "s": "fet_usdt",
      "t": 1779971244062,
      "cv": "-0.0300",
      "cr": "-0.1214",
      "o": "0.2470",
      "l": "0.2160",
      "h": "0.2480",
      "c": "0.2170",
      "q": "8025405.2",
      "v": "1864731.9251"
    },
    {
      "s": "aevo_usdt",
      "t": 1779971249216,
      "cv": "-0.0020",
      "cr": "-0.0809",
      "o": "0.0247",
      "l": "0.0226",
      "h": "0.0252",
      "c": "0.0227",
      "q": "9749330.00",
      "v": "232831.274718"
    },
    {
      "s": "blur_usdt",
      "t": 1779971247291,
      "cv": "-0.00163",
      "cr": "-0.0742",
      "o": "0.02196",
      "l": "0.02027",
      "h": "0.02260",
      "c": "0.02033",
      "q": "8062236.5",
      "v": "172146.743671"
    },
    {
      "s": "render_usdt",
      "t": 1779971249437,
      "cv": "-0.321",
      "cr": "-0.1409",
      "o": "2.277",
      "l": "1.955",
      "h": "2.301",
      "c": "1.956",
      "q": "545977.70",
      "v": "1146058.52197"
    },
    {
      "s": "etc_usdt",
      "t": 1779971249428,
      "cv": "-0.52",
      "cr": "-0.0603",
      "o": "8.62",
      "l": "8.09",
      "h": "8.73",
      "c": "8.10",
      "q": "51771.10",
      "v": "433192.2393"
    },
    {
      "s": "prom_usdt",
      "t": 1779971245708,
      "cv": "-0.078",
      "cr": "-0.0697",
      "o": "1.118",
      "l": "1.022",
      "h": "1.131",
      "c": "1.040",
      "q": "115752.35",
      "v": "124467.721"
    },
    {
      "s": "ach_usdt",
      "t": 1754554286580,
      "cv": "0.00000",
      "cr": "0.0000",
      "o": "0.02070",
      "l": "0.02070",
      "h": "0.02072",
      "c": "0.02070",
      "q": "8361",
      "v": "173.18994"
    },
    {
      "s": "usd1_usdt",
      "t": 1779971247823,
      "cv": "-0.00021",
      "cr": "-0.0002",
      "o": "0.99949",
      "l": "0.99921",
      "h": "0.99979",
      "c": "0.99928",
      "q": "68061632",
      "v": "68022156.02504"
    },
    {
      "s": "alt_usdt",
      "t": 1779971239711,
      "cv": "-0.00138",
      "cr": "-0.1642",
      "o": "0.00840",
      "l": "0.00701",
      "h": "0.00851",
      "c": "0.00702",
      "q": "40725908.0",
      "v": "312891.04293"
    },
    {
      "s": "near_usdt",
      "t": 1779971248940,
      "cv": "-0.188",
      "cr": "-0.0741",
      "o": "2.537",
      "l": "2.331",
      "h": "2.736",
      "c": "2.349",
      "q": "11281625.4",
      "v": "28328946.9485"
    },
    {
      "s": "qkc_usdt",
      "t": 1779971243408,
      "cv": "-0.000188",
      "cr": "-0.0655",
      "o": "0.002870",
      "l": "0.002678",
      "h": "0.002884",
      "c": "0.002682",
      "q": "84406083.0",
      "v": "236825.191629"
    },
    {
      "s": "hyper_usdt",
      "t": 1779971248672,
      "cv": "-0.0053",
      "cr": "-0.0557",
      "o": "0.0950",
      "l": "0.0883",
      "h": "0.0960",
      "c": "0.0897",
      "q": "6232960.0",
      "v": "573435.4990"
    },
    {
      "s": "pha_usdt",
      "t": 1779971248452,
      "cv": "-0.0079",
      "cr": "-0.1625",
      "o": "0.0486",
      "l": "0.0404",
      "h": "0.0497",
      "c": "0.0407",
      "q": "5631817",
      "v": "252923.9042"
    },
    {
      "s": "strk_usdt",
      "t": 1779971247424,
      "cv": "-0.0060",
      "cr": "-0.1449",
      "o": "0.0414",
      "l": "0.0351",
      "h": "0.0417",
      "c": "0.0354",
      "q": "6619742.96",
      "v": "250903.740507"
    },
    {
      "s": "act_usdt",
      "t": 1779971241624,
      "cv": "-0.00120",
      "cr": "-0.0952",
      "o": "0.01260",
      "l": "0.01140",
      "h": "0.01290",
      "c": "0.01140",
      "q": "9704012.3",
      "v": "117167.52910"
    },
    {
      "s": "cvc_usdt",
      "t": 1779971248206,
      "cv": "-0.00176",
      "cr": "-0.0613",
      "o": "0.02868",
      "l": "0.02671",
      "h": "0.02895",
      "c": "0.02692",
      "q": "8592101",
      "v": "239534.83960"
    },
    {
      "s": "rsr_usdt",
      "t": 1779971249210,
      "cv": "-0.000049",
      "cr": "-0.0304",
      "o": "0.001608",
      "l": "0.001532",
      "h": "0.001736",
      "c": "0.001559",
      "q": "160348865.7",
      "v": "260774.0118955"
    },
    {
      "s": "bmt_usdt",
      "t": 1779971245708,
      "cv": "-0.0008",
      "cr": "-0.0519",
      "o": "0.0154",
      "l": "0.0144",
      "h": "0.0157",
      "c": "0.0146",
      "q": "5683374.9",
      "v": "85272.71821"
    },
    {
      "s": "sxt_usdt",
      "t": 1779971245863,
      "cv": "-0.0010",
      "cr": "-0.0840",
      "o": "0.0119",
      "l": "0.0109",
      "h": "0.0126",
      "c": "0.0109",
      "q": "14523467.7",
      "v": "172069.04211"
    },
    {
      "s": "move_usdt",
      "t": 1779971236251,
      "cv": "-0.0013",
      "cr": "-0.0833",
      "o": "0.0156",
      "l": "0.0142",
      "h": "0.0158",
      "c": "0.0143",
      "q": "10289099.3",
      "v": "153967.21239"
    },
    {
      "s": "cfx_usdt",
      "t": 1779971247134,
      "cv": "-0.00411",
      "cr": "-0.0752",
      "o": "0.05461",
      "l": "0.05042",
      "h": "0.05583",
      "c": "0.05050",
      "q": "4197033",
      "v": "222065.41230"
    },
    {
      "s": "ygg_usdt",
      "t": 1779971245580,
      "cv": "-0.00335",
      "cr": "-0.0902",
      "o": "0.03712",
      "l": "0.03367",
      "h": "0.03784",
      "c": "0.03377",
      "q": "4141637.2",
      "v": "147943.211587"
    },
    {
      "s": "atm_usdt",
      "t": 1779971246092,
      "cv": "-0.028",
      "cr": "-0.0278",
      "o": "1.006",
      "l": "0.966",
      "h": "1.023",
      "c": "0.978",
      "q": "633944.15",
      "v": "631348.37248"
    },
    {
      "s": "pol_usdt",
      "t": 1779971242125,
      "cv": "-0.00470",
      "cr": "-0.0512",
      "o": "0.09170",
      "l": "0.08630",
      "h": "0.09180",
      "c": "0.08700",
      "q": "5756761.3",
      "v": "512601.97737"
    },
    {
      "s": "ena_usdt",
      "t": 1779971244306,
      "cv": "-0.0099",
      "cr": "-0.1021",
      "o": "0.0969",
      "l": "0.0868",
      "h": "0.0991",
      "c": "0.0870",
      "q": "30237118.35",
      "v": "2782006.772723"
    },
    {
      "s": "mubarak_usdt",
      "t": 1779971248801,
      "cv": "-0.0016",
      "cr": "-0.1203",
      "o": "0.0133",
      "l": "0.0117",
      "h": "0.0135",
      "c": "0.0117",
      "q": "27986974.7",
      "v": "351818.70868"
    },
    {
      "s": "asr_usdt",
      "t": 1779971246223,
      "cv": "-0.028",
      "cr": "-0.0272",
      "o": "1.027",
      "l": "0.975",
      "h": "1.049",
      "c": "0.999",
      "q": "423745.6",
      "v": "431390.4856"
    },
    {
      "s": "dusk_usdt",
      "t": 1779971249443,
      "cv": "-0.0122",
      "cr": "-0.0926",
      "o": "0.1317",
      "l": "0.1175",
      "h": "0.1338",
      "c": "0.1195",
      "q": "10831590.0",
      "v": "1353267.6520"
    },
    {
      "s": "sand_usdt",
      "t": 1779971249206,
      "cv": "-0.00450",
      "cr": "-0.0636",
      "o": "0.07070",
      "l": "0.06560",
      "h": "0.07150",
      "c": "0.06620",
      "q": "4697497",
      "v": "321853.29200"
    },
    {
      "s": "slp_usdt",
      "t": 1779971247248,
      "cv": "-0.000024",
      "cr": "-0.0389",
      "o": "0.000616",
      "l": "0.000587",
      "h": "0.000623",
      "c": "0.000592",
      "q": "266194399.0",
      "v": "161593.541019"
    },
    {
      "s": "cookie_usdt",
      "t": 1779971243953,
      "cv": "-0.0009",
      "cr": "-0.0714",
      "o": "0.0126",
      "l": "0.0114",
      "h": "0.0129",
      "c": "0.0117",
      "q": "11568328.1",
      "v": "139909.40143"
    },
    {
      "s": "cvx_usdt",
      "t": 1779971247128,
      "cv": "-0.120",
      "cr": "-0.0739",
      "o": "1.623",
      "l": "1.500",
      "h": "1.630",
      "c": "1.503",
      "q": "162468.705",
      "v": "253304.716249"
    },
    {
      "s": "amp_usdt",
      "t": 1779971243965,
      "cv": "-0.000048",
      "cr": "-0.0618",
      "o": "0.000776",
      "l": "0.000724",
      "h": "0.000790",
      "c": "0.000728",
      "q": "181756307.0",
      "v": "138661.753853"
    },
    {
      "s": "fil_usdt",
      "t": 1779971246952,
      "cv": "-0.121",
      "cr": "-0.1136",
      "o": "1.065",
      "l": "0.938",
      "h": "1.100",
      "c": "0.944",
      "q": "7971271.15",
      "v": "8168979.98909"
    },
    {
      "s": "ton_usdt",
      "t": 1779971249554,
      "cv": "-0.139",
      "cr": "-0.0730",
      "o": "1.902",
      "l": "1.761",
      "h": "1.921",
      "c": "1.763",
      "q": "1683022.45",
      "v": "3066623.01556"
    },
    {
      "s": "glm_usdt",
      "t": 1779971246583,
      "cv": "-0.0094",
      "cr": "-0.0686",
      "o": "0.1369",
      "l": "0.1264",
      "h": "0.1389",
      "c": "0.1275",
      "q": "2948545.4",
      "v": "390264.62156"
    },
    {
      "s": "avax_usdt",
      "t": 1779971246470,
      "cv": "-0.430",
      "cr": "-0.0467",
      "o": "9.200",
      "l": "8.710",
      "h": "9.290",
      "c": "8.770",
      "q": "664053.54",
      "v": "5960144.9302"
    },
    {
      "s": "cos_usdt",
      "t": 1779971246462,
      "cv": "-0.000049",
      "cr": "-0.0403",
      "o": "0.001213",
      "l": "0.001133",
      "h": "0.001274",
      "c": "0.001164",
      "q": "191595286.3",
      "v": "229047.4940866"
    },
    {
      "s": "dodo_usdt",
      "t": 1779971239831,
      "cv": "-0.0001",
      "cr": "-0.0055",
      "o": "0.0180",
      "l": "0.0174",
      "h": "0.0191",
      "c": "0.0179",
      "q": "11876856.7",
      "v": "214787.86765"
    },
    {
      "s": "c98_usdt",
      "t": 1779971248339,
      "cv": "-0.0012",
      "cr": "-0.0597",
      "o": "0.0201",
      "l": "0.0188",
      "h": "0.0215",
      "c": "0.0189",
      "q": "21043386.5",
      "v": "424907.18023"
    },
    {
      "s": "xai_usdt",
      "t": 1779971238557,
      "cv": "-0.00093",
      "cr": "-0.0918",
      "o": "0.01013",
      "l": "0.00917",
      "h": "0.01057",
      "c": "0.00920",
      "q": "17038335.5",
      "v": "170015.301757"
    },
    {
      "s": "bnb_usdt",
      "t": 1779971248929,
      "cv": "-25.13",
      "cr": "-0.0383",
      "o": "655.98",
      "l": "630.42",
      "h": "659.91",
      "c": "630.85",
      "q": "36563.689",
      "v": "23541293.50323"
    },
    {
      "s": "1inch_usdt",
      "t": 1779971248068,
      "cv": "-0.0048",
      "cr": "-0.0541",
      "o": "0.0887",
      "l": "0.0834",
      "h": "0.0895",
      "c": "0.0839",
      "q": "4083367.9",
      "v": "352134.14238"
    },
    {
      "s": "xrp_usdt",
      "t": 1779971248566,
      "cv": "-0.0505",
      "cr": "-0.0378",
      "o": "1.3353",
      "l": "1.2679",
      "h": "1.3431",
      "c": "1.2848",
      "q": "18399931.9",
      "v": "23942740.05186"
    },
    {
      "s": "pyth_usdt",
      "t": 1779971248801,
      "cv": "-0.0037",
      "cr": "-0.0887",
      "o": "0.0417",
      "l": "0.0377",
      "h": "0.0419",
      "c": "0.0380",
      "q": "5455136.9",
      "v": "216316.65899"
    },
    {
      "s": "pepe_usdt",
      "t": 1779971248432,
      "cv": "-0.00000024",
      "cr": "-0.0676",
      "o": "0.00000355",
      "l": "0.00000329",
      "h": "0.00000360",
      "c": "0.00000331",
      "q": "1610422552045",
      "v": "5555212.65745475"
    },
    {
      "s": "jup_usdt",
      "t": 1779971248449,
      "cv": "-0.0172",
      "cr": "-0.0888",
      "o": "0.1935",
      "l": "0.1757",
      "h": "0.1979",
      "c": "0.1763",
      "q": "817964.5",
      "v": "152498.99851"
    },
    {
      "s": "sushi_usdt",
      "t": 1779971245991,
      "cv": "-0.0110",
      "cr": "-0.0544",
      "o": "0.2020",
      "l": "0.1880",
      "h": "0.2070",
      "c": "0.1910",
      "q": "1216074.0",
      "v": "239868.7360"
    },
    {
      "s": "jasmy_usdt",
      "t": 1779971248691,
      "cv": "-0.00013",
      "cr": "-0.0240",
      "o": "0.00540",
      "l": "0.00518",
      "h": "0.00553",
      "c": "0.00527",
      "q": "43381870.6",
      "v": "233582.117114"
    },
    {
      "s": "kaito_usdt",
      "t": 1779971249217,
      "cv": "-0.0427",
      "cr": "-0.0853",
      "o": "0.5003",
      "l": "0.4531",
      "h": "0.5026",
      "c": "0.4576",
      "q": "736763.9",
      "v": "352407.4159"
    },
    {
      "s": "mana_usdt",
      "t": 1779971244554,
      "cv": "-0.0041",
      "cr": "-0.0476",
      "o": "0.0861",
      "l": "0.0812",
      "h": "0.0867",
      "c": "0.0820",
      "q": "3646270",
      "v": "305660.4515"
    },
    {
      "s": "santos_usdt",
      "t": 1779971246721,
      "cv": "-0.048",
      "cr": "-0.0576",
      "o": "0.833",
      "l": "0.772",
      "h": "0.858",
      "c": "0.785",
      "q": "366208.63",
      "v": "300881.89712"
    },
    {
      "s": "wbtc_usdt",
      "t": 1779971246344,
      "cv": "-2554.66",
      "cr": "-0.0337",
      "o": "75668.02",
      "l": "72548.25",
      "h": "75819.05",
      "c": "73113.36",
      "q": "77.83009",
      "v": "5765686.2573817"
    },
    {
      "s": "cyber_usdt",
      "t": 1779971248929,
      "cv": "-0.032",
      "cr": "-0.0691",
      "o": "0.463",
      "l": "0.429",
      "h": "0.471",
      "c": "0.431",
      "q": "417444.88",
      "v": "187836.89918"
    },
    {
      "s": "comp_usdt",
      "t": 1779971244561,
      "cv": "-1.94",
      "cr": "-0.1008",
      "o": "19.23",
      "l": "16.87",
      "h": "19.29",
      "c": "17.29",
      "q": "25928.157",
      "v": "463324.81513"
    },
    {
      "s": "snx_usdt",
      "t": 1779971248809,
      "cv": "-0.024",
      "cr": "-0.0759",
      "o": "0.316",
      "l": "0.292",
      "h": "0.319",
      "c": "0.292",
      "q": "1319530.9",
      "v": "405334.8915"
    },
    {
      "s": "tlm_usdt",
      "t": 1779971247950,
      "cv": "-0.000046",
      "cr": "-0.0332",
      "o": "0.001384",
      "l": "0.001301",
      "h": "0.001441",
      "c": "0.001338",
      "q": "151648368.0",
      "v": "207616.878569"
    },
    {
      "s": "nxpc_usdt",
      "t": 1779971220657,
      "cv": "-0.0061",
      "cr": "-0.0160",
      "o": "0.3810",
      "l": "0.3606",
      "h": "0.3843",
      "c": "0.3749",
      "q": "371352.0",
      "v": "138516.58384"
    },
    {
      "s": "kmno_usdt",
      "t": 1779971247811,
      "cv": "-0.00170",
      "cr": "-0.0868",
      "o": "0.01958",
      "l": "0.01783",
      "h": "0.02018",
      "c": "0.01788",
      "q": "11392478.0",
      "v": "215181.26258"
    },
    {
      "s": "link_usdt",
      "t": 1779971249438,
      "cv": "-0.620",
      "cr": "-0.0656",
      "o": "9.440",
      "l": "8.760",
      "h": "9.480",
      "c": "8.820",
      "q": "783728.66",
      "v": "7118636.1709"
    },
    {
      "s": "grt_usdt",
      "t": 1779971247245,
      "cv": "-0.00270",
      "cr": "-0.0947",
      "o": "0.02850",
      "l": "0.02560",
      "h": "0.02940",
      "c": "0.02580",
      "q": "7591219",
      "v": "208063.77320"
    },
    {
      "s": "id_usdt",
      "t": 1779971248080,
      "cv": "-0.0027",
      "cr": "-0.0937",
      "o": "0.0288",
      "l": "0.0261",
      "h": "0.0293",
      "c": "0.0261",
      "q": "6314891.0",
      "v": "174153.6411"
    },
    {
      "s": "t_usdt",
      "t": 1779971245299,
      "cv": "-0.00038",
      "cr": "-0.0746",
      "o": "0.00509",
      "l": "0.00467",
      "h": "0.00516",
      "c": "0.00471",
      "q": "33241823.7",
      "v": "164618.652536"
    },
    {
      "s": "mav_usdt",
      "t": 1779971245179,
      "cv": "-0.00103",
      "cr": "-0.0779",
      "o": "0.01322",
      "l": "0.01216",
      "h": "0.01342",
      "c": "0.01219",
      "q": "17218649",
      "v": "220386.09243"
    },
    {
      "s": "gmt_usdt",
      "t": 1779971244561,
      "cv": "-0.00049",
      "cr": "-0.0461",
      "o": "0.01061",
      "l": "0.00992",
      "h": "0.01087",
      "c": "0.01012",
      "q": "19360008.9",
      "v": "202947.95850"
    },
    {
      "s": "qnt_usdt",
      "t": 1779971248337,
      "cv": "-5.19",
      "cr": "-0.0686",
      "o": "75.65",
      "l": "69.62",
      "h": "75.85",
      "c": "70.46",
      "q": "4690.782",
      "v": "340073.55055"
    }
  ],
  "ts": 1779971249665
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.023511" elapsed="0.001148"/>
</kw>
<doc>验证24小时行情接口基本功能获取24小时行情数据</doc>
<tag>market</tag>
<status status="PASS" start="2026-05-28T20:27:29.086038" elapsed="0.938874"/>
</test>
<doc>24小时行情</doc>
<status status="PASS" start="2026-05-28T20:27:29.073157" elapsed="0.952322"/>
</suite>
<suite id="s1-s4-s2-s2" name="Market Depth" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/mark/market_depth.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.035241" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:30.035017" elapsed="0.000256"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.035573" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:30.035368" elapsed="0.000252"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.035836" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.035724" elapsed="0.000149"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:30.035650" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:30.035338" elapsed="0.000582"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.036514" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.036416" elapsed="0.000132"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.036735" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.036834" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.036928" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.037020" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.037112" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:30.036601" elapsed="0.000549"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.037510" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.037294" elapsed="0.000249"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.037814" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.037623" elapsed="0.000221"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.038094" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.037928" elapsed="0.000195"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.038374" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.038204" elapsed="0.000204"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.038663" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.038492" elapsed="0.000199"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.038954" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.038770" elapsed="0.000222"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.039270" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.039072" elapsed="0.000227"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.039574" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.039385" elapsed="0.000217"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.040209" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.039855" elapsed="0.000408"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:30.037174" elapsed="0.003131"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.040457" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.040595" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.040729" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.040852" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.040973" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.041134" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.041258" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.041377" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.041500" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:30.040338" elapsed="0.001219"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:30.036587" elapsed="0.004996"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.041881" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.041688" elapsed="0.000246"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:30.042377" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:30.042058" elapsed="0.000511"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:30.036195" elapsed="0.006454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.042872" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.042769" elapsed="0.000150"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:30.034713" elapsed="0.008264"/>
</kw>
<test id="s1-s4-s2-s2-t1" name="获取市场深度数据" line="7">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.044438" level="INFO">&amp;{params} = { symbol=btc_usdt | limit=1000 }</msg>
<var>&amp;{params}</var>
<arg>symbol=btc_usdt</arg>
<arg>limit=1000</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.044230" elapsed="0.000233"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.046140" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.045532" elapsed="0.000638"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.046785" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:30.046291" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:30.046272" elapsed="0.000593"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:30.046896" elapsed="0.000039"/>
</return>
<msg time="2026-05-28T20:27:30.047089" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:30.044665" elapsed="0.002449"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:30.481907" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/market/public/depth?symbol=btc_usdt&amp;limit=1000 
 path_url=/v1/spot/market/public/depth?symbol=btc_usdt&amp;limit=1000 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:30.482315" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/market/public/depth?symbol=btc_usdt&amp;limit=1000 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:30 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'bed4dbcb79a86926b5a1f1ff42b791bf', 'X-Transparent': '00-bed4dbcb79a86926b5a1f1ff42b791bf-e9103d11763ec123-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40fb5b3a09e2-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":{"timestamp":1779971234734,"lastUpdateId":1775210765084,"bids":[["73310.10","2.11340"],["73310.09","2.41832"],["73310.08","3.13152"],["73310.05","1.52701"],["73310.03","1.32163"],["73310.02","0.35756"],["73310.01","18.72290"],["73310.00","16.67680"],["73309.97","1.62865"],["73309.96","12.09100"],["73309.91","0.22145"],["73309.90","2.70490"],["73309.87","0.21854"],["73309.82","0.37157"],["73309.76","5.56859"],["73309.72","4.47662"],["73309.71","0.31501"],["73309.65","0.34123"],["73309.53","0.51875"],["73309.47","0.46612"],["73309.42","2.16908"],["73309.39","5.00975"],["73309.37","0.25193"],["73309.36","0.59712"],["73309.34","0.31438"],["73309.27","3.06177"],["73308.96","2.14400"],["73308.84","0.32598"],["73308.83","0.43132"],["73308.81","0.43343"],["73308.70","0.35416"],["73308.67","0.34051"],["73308.55","0.32216"],["73308.54","3.71333"],["73308.40","0.54709"],["73308.00","1.84988"],["73307.99","3.14060"],["73307.96","2.82003"],["73307.88","0.23765"],["73307.85","1.95898"],["73307.83","0.57551"],["73307.80","1.22872"],["73307.67","0.39052"],["73307.54","0.40361"],["73307.45","0.48884"],["73307.40","3.18787"],["73307.36","2.08633"],["73307.26","1.40486"],["73307.20","0.43280"],["73307.09","1.96977"],["73307.01","0.55975"],["73306.85","0.42521"],["73306.82","1.83532"],["73306.79","3.39124"],["73306.67","0.52961"],["73306.45","0.65885"],["73306.17","0.36883"],["73306.11","0.20912"],["73306.04","0.35875"],["73305.98","0.29146"],["73305.59","0.34278"],["73305.55","0.45402"],["73305.49","3.07369"],["73304.96","0.46058"],["73304.95","0.38309"],["73304.92","0.88934"],["73304.89","1.75120"],["73304.84","0.40225"],["73304.78","2.25875"],["73304.77","0.14083"],["73304.59","3.33111"],["73304.07","0.87362"],["73303.96","2.84302"],["73303.89","2.81507"],["73303.81","0.25842"],["73303.01","0.18605"],["73302.72","0.27572"],["73302.59","0.33639"],["73302.54","0.60401"],["73302.48","0.25149"],["73302.46","0.71650"],["73302.29","3.01463"],["73302.23","1.88902"],["73302.08","0.28046"],["73301.70","0.49647"],["73301.48","0.38624"],["73301.41","2.28228"],["73301.32","0.39539"],["73300.77","0.44882"],["73300.62","1.34695"],["73300.19","0.27613"],["73299.98","1.68915"],["73299.71","2.66725"],["73299.39","1.46328"],["73299.17","0.48421"],["73299.14","0.63181"],["73298.90","0.53220"],["73298.82","2.14257"],["73298.62","0.41330"],["73298.18","3.59710"],["73298.08","4.38087"],["73298.05","0.33073"],["73297.23","3.16528"],["73297.22","2.63308"],["73297.13","4.15134"],["73296.70","3.90193"],["73296.28","3.48817"],["73295.51","2.62286"],["73295.47","0.45311"],["73294.94","0.18901"],["73294.88","0.15431"],["73294.68","0.28198"],["73294.00","2.37928"],["73293.94","0.84128"],["73293.89","0.45009"],["73293.85","0.17704"],["73293.69","1.00258"],["73293.47","1.95020"],["73293.42","3.41574"],["73293.31","1.55143"],["73293.13","2.00957"],["73293.07","1.05213"],["73292.45","3.48996"],["73291.98","0.70666"],["73291.94","1.20644"],["73291.84","0.38610"],["73291.56","2.32360"],["73291.55","1.72071"],["73291.52","1.15292"],["73291.31","0.43670"],["73290.53","2.60580"],["73290.50","0.54852"],["73290.15","0.09298"],["73289.92","2.12955"],["73289.51","2.40244"],["73289.32","1.38856"],["73288.96","0.35149"],["73288.60","0.40311"],["73288.27","5.32074"],["73288.18","5.67594"],["73287.43","2.13655"],["73286.82","1.90218"],["73286.77","3.69446"],["73286.65","0.25058"],["73286.53","0.50546"],["73286.17","0.30985"],["73285.40","0.74317"],["73285.15","0.66275"],["73284.55","2.06015"],["73284.39","0.38702"],["73284.06","0.39351"],["73283.66","1.50595"],["73283.63","1.59433"],["73283.31","2.31106"],["73283.23","2.41252"],["73283.20","2.56122"],["73282.80","0.20987"],["73282.43","2.20541"],["73282.02","4.57293"],["73281.99","1.20180"],["73281.64","0.33281"],["73281.55","0.96327"],["73281.19","0.41390"],["73280.98","1.47979"],["73280.75","1.97438"],["73280.50","0.70938"],["73280.42","2.50252"],["73280.11","0.25617"],["73278.59","0.57033"],["73278.55","1.33721"],["73278.16","2.56906"],["73277.13","0.52479"],["73276.93","2.81757"],["73276.44","0.50887"],["73276.36","0.19620"],["73276.34","0.41260"],["73276.31","0.51163"],["73276.21","4.09136"],["73275.89","0.65403"],["73275.87","0.12959"],["73275.63","2.01818"],["73275.53","0.23926"],["73275.50","0.34932"],["73275.12","0.44759"],["73274.57","0.48913"],["73272.89","0.27402"],["73272.72","0.16376"],["73272.64","3.12425"],["73272.56","0.30197"],["73271.67","2.79283"],["73271.01","0.37165"],["73270.80","3.97486"],["73270.63","2.75529"],["73270.39","0.32518"],["73269.41","2.26230"],["73269.14","0.23485"],["73268.44","0.61453"],["73268.02","0.49158"],["73267.91","1.64073"],["73267.20","0.43009"],["73265.42","1.53397"],["73265.03","2.30608"],["73264.77","2.63551"],["73264.67","0.39605"],["73264.52","3.57415"],["73264.34","0.58318"],["73264.19","0.92448"],["73263.88","0.28688"],["73263.79","0.65703"],["73263.12","2.84669"],["73262.83","3.36180"],["73262.78","0.51295"],["73262.51","0.47125"],["73262.39","0.72199"],["73262.31","0.31636"],["73262.24","1.01682"],["73261.32","1.98266"],["73260.74","1.69943"],["73260.49","1.16945"],["73259.34","3.10967"],["73259.30","0.65965"],["73259.05","0.36267"],["73258.61","0.37601"],["73258.32","0.50113"],["73258.31","2.31383"],["73258.14","0.68834"],["73257.62","5.18974"],["73257.56","0.45411"],["73257.51","2.92299"],["73257.33","1.18559"],["73257.27","1.57752"],["73257.12","0.36371"],["73256.92","1.88112"],["73255.96","0.33527"],["73255.59","0.45211"],["73254.21","2.43583"],["73253.66","0.93376"],["73253.65","1.80351"],["73253.61","0.22126"],["73251.64","3.23572"],["73251.58","0.23686"],["73251.53","2.44639"],["73250.96","0.43314"],["73249.78","2.25385"],["73249.71","0.26087"],["73247.69","3.52502"],["73247.24","0.55863"],["73246.84","0.78124"],["73246.82","3.04703"],["73246.76","0.24504"],["73245.79","0.44372"],["73245.72","0.37241"],["73244.91","0.29147"],["73244.88","2.85035"],["73244.14","0.48177"],["73243.47","0.47390"],["73242.29","0.71615"],["73241.79","0.42191"],["73241.62","0.37692"],["73240.11","2.66735"],["73239.75","4.11043"],["73239.58","3.62834"],["73238.12","0.41840"],["73237.93","0.12931"],["73237.87","0.33764"],["73234.58","0.60203"],["73234.33","1.92196"],["73233.83","0.42333"],["73233.48","0.54985"],["73233.32","0.43315"],["73233.29","0.42938"],["73232.50","0.43210"],["73231.72","0.20447"],["73231.56","2.26958"],["73231.52","1.52769"],["73230.69","0.24343"],["73230.58","0.80969"],["73229.62","3.80149"],["73229.25","0.56989"],["73228.85","0.57503"],["73228.81","2.45493"],["73228.53","1.07219"],["73228.30","0.64324"],["72855.00","0.00068"],["72361.72","0.00471"],["71430.51","0.00944"],["70000.00","0.00014"],["65000.00","0.00120"],["50708.14","0.00061"]],"asks":[["73310.11","2.73596"],["73310.12","2.89468"],["73310.14","0.36744"],["73310.16","0.35220"],["73310.18","4.23055"],["73310.20","13.34903"],["73310.21","14.85840"],["73310.25","16.76335"],["73310.26","0.75017"],["73310.29","3.15503"],["73310.32","1.44617"],["73310.35","3.24476"],["73310.38","0.04130"],["73310.45","2.57583"],["73310.47","0.36550"],["73310.52","0.24124"],["73310.60","0.32562"],["73310.62","0.08528"],["73310.64","0.63011"],["73310.85","0.40728"],["73310.90","0.31957"],["73310.93","0.17827"],["73311.12","1.81205"],["73311.16","0.54500"],["73311.26","1.10186"],["73311.27","0.72216"],["73311.31","0.25705"],["73311.37","0.33874"],["73311.41","0.70568"],["73311.53","1.42209"],["73311.57","2.80499"],["73311.58","0.24760"],["73311.63","1.95428"],["73311.67","0.66723"],["73311.73","1.05131"],["73311.78","0.44127"],["73311.93","3.92648"],["73312.12","0.41636"],["73312.20","0.63301"],["73312.28","0.34214"],["73312.40","0.25441"],["73312.47","1.34108"],["73312.71","2.79564"],["73312.82","2.29594"],["73312.92","1.61342"],["73312.95","0.35486"],["73313.15","0.59128"],["73313.21","1.56625"],["73313.24","0.32010"],["73313.33","0.26970"],["73313.51","0.47775"],["73313.61","0.20359"],["73313.79","0.60575"],["73313.93","1.82321"],["73314.22","0.39606"],["73314.25","1.52888"],["73314.26","3.89765"],["73314.27","1.31518"],["73314.28","0.67068"],["73314.41","0.39589"],["73314.80","0.25386"],["73315.18","0.43339"],["73315.36","0.26918"],["73315.51","2.78416"],["73315.57","0.37716"],["73315.63","0.55152"],["73316.06","2.11914"],["73316.07","3.80314"],["73316.21","1.31748"],["73316.23","2.16577"],["73316.34","0.22047"],["73316.35","3.97126"],["73316.67","1.34641"],["73316.76","4.76703"],["73316.86","1.67951"],["73317.23","0.32936"],["73317.42","0.20727"],["73317.63","0.33497"],["73317.81","0.90351"],["73318.14","1.22145"],["73318.49","0.29227"],["73318.64","3.73308"],["73319.15","0.35265"],["73319.31","0.84856"],["73319.33","0.43053"],["73319.56","2.15339"],["73319.62","1.71812"],["73319.69","0.38214"],["73319.80","0.31452"],["73319.81","2.59871"],["73320.00","1.71185"],["73320.52","0.16440"],["73320.78","1.28223"],["73320.83","0.36947"],["73320.88","2.38969"],["73321.05","1.67522"],["73321.09","2.00211"],["73321.16","2.51663"],["73322.05","1.46027"],["73322.34","1.71158"],["73322.85","2.04900"],["73323.04","1.38516"],["73323.36","1.32992"],["73323.50","0.26179"],["73323.62","0.37956"],["73323.63","1.15003"],["73324.11","0.35504"],["73324.16","1.13574"],["73324.24","0.79032"],["73324.30","2.78645"],["73324.70","2.89387"],["73324.86","1.53821"],["73324.92","3.41988"],["73324.98","5.14434"],["73325.01","2.63612"],["73325.11","0.40047"],["73325.28","0.91225"],["73325.85","0.36253"],["73325.99","0.03398"],["73326.03","0.41318"],["73326.92","4.03093"],["73327.11","0.58048"],["73327.21","4.33276"],["73327.43","2.48805"],["73327.95","3.57512"],["73327.99","0.39682"],["73328.14","0.46453"],["73328.22","3.71437"],["73329.13","0.37813"],["73329.22","3.94588"],["73329.41","1.80886"],["73329.96","3.61827"],["73330.34","0.86361"],["73330.69","0.33655"],["73331.31","0.56925"],["73331.32","0.30767"],["73331.57","0.21572"],["73332.60","3.24798"],["73332.72","0.59369"],["73333.54","0.62701"],["73334.... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-05-28T20:27:30.482897" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:30.483258" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>url=/v1/spot/market/public/depth</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<arg>expected_status=any</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:30.047215" elapsed="0.436106"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.485430" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:30.483861" elapsed="0.001732"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.488500" level="INFO">${resp_json} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': {'timestamp': 1779971234734, 'lastUpdateId': 1775210765084, 'bids': [['73310.10', '2.11340'], ['73310.09', '2.41832'], ['73310.08', '3.13152'], ['7...</msg>
<var>${resp_json}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:30.485937" elapsed="0.002615"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${resp_json}</arg>
<arg>data</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.488787" elapsed="0.000288"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.492945" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "timestamp": 1779971234734,
    "lastUpdateId": 1775210765084,
    "bids": [
      [
        "73310.10",
        "2.11340"
      ],
...</msg>
<var>${json_str}</var>
<arg>json.dumps($resp_json, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:30.489269" elapsed="0.003714"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.493485" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "timestamp": 1779971234734,
    "lastUpdateId": 1775210765084,
    "bids": [
      [
        "73310.10",
        "2.11340"
      ],
      [
        "73310.09",
        "2.41832"
      ],
      [
        "73310.08",
        "3.13152"
      ],
      [
        "73310.05",
        "1.52701"
      ],
      [
        "73310.03",
        "1.32163"
      ],
      [
        "73310.02",
        "0.35756"
      ],
      [
        "73310.01",
        "18.72290"
      ],
      [
        "73310.00",
        "16.67680"
      ],
      [
        "73309.97",
        "1.62865"
      ],
      [
        "73309.96",
        "12.09100"
      ],
      [
        "73309.91",
        "0.22145"
      ],
      [
        "73309.90",
        "2.70490"
      ],
      [
        "73309.87",
        "0.21854"
      ],
      [
        "73309.82",
        "0.37157"
      ],
      [
        "73309.76",
        "5.56859"
      ],
      [
        "73309.72",
        "4.47662"
      ],
      [
        "73309.71",
        "0.31501"
      ],
      [
        "73309.65",
        "0.34123"
      ],
      [
        "73309.53",
        "0.51875"
      ],
      [
        "73309.47",
        "0.46612"
      ],
      [
        "73309.42",
        "2.16908"
      ],
      [
        "73309.39",
        "5.00975"
      ],
      [
        "73309.37",
        "0.25193"
      ],
      [
        "73309.36",
        "0.59712"
      ],
      [
        "73309.34",
        "0.31438"
      ],
      [
        "73309.27",
        "3.06177"
      ],
      [
        "73308.96",
        "2.14400"
      ],
      [
        "73308.84",
        "0.32598"
      ],
      [
        "73308.83",
        "0.43132"
      ],
      [
        "73308.81",
        "0.43343"
      ],
      [
        "73308.70",
        "0.35416"
      ],
      [
        "73308.67",
        "0.34051"
      ],
      [
        "73308.55",
        "0.32216"
      ],
      [
        "73308.54",
        "3.71333"
      ],
      [
        "73308.40",
        "0.54709"
      ],
      [
        "73308.00",
        "1.84988"
      ],
      [
        "73307.99",
        "3.14060"
      ],
      [
        "73307.96",
        "2.82003"
      ],
      [
        "73307.88",
        "0.23765"
      ],
      [
        "73307.85",
        "1.95898"
      ],
      [
        "73307.83",
        "0.57551"
      ],
      [
        "73307.80",
        "1.22872"
      ],
      [
        "73307.67",
        "0.39052"
      ],
      [
        "73307.54",
        "0.40361"
      ],
      [
        "73307.45",
        "0.48884"
      ],
      [
        "73307.40",
        "3.18787"
      ],
      [
        "73307.36",
        "2.08633"
      ],
      [
        "73307.26",
        "1.40486"
      ],
      [
        "73307.20",
        "0.43280"
      ],
      [
        "73307.09",
        "1.96977"
      ],
      [
        "73307.01",
        "0.55975"
      ],
      [
        "73306.85",
        "0.42521"
      ],
      [
        "73306.82",
        "1.83532"
      ],
      [
        "73306.79",
        "3.39124"
      ],
      [
        "73306.67",
        "0.52961"
      ],
      [
        "73306.45",
        "0.65885"
      ],
      [
        "73306.17",
        "0.36883"
      ],
      [
        "73306.11",
        "0.20912"
      ],
      [
        "73306.04",
        "0.35875"
      ],
      [
        "73305.98",
        "0.29146"
      ],
      [
        "73305.59",
        "0.34278"
      ],
      [
        "73305.55",
        "0.45402"
      ],
      [
        "73305.49",
        "3.07369"
      ],
      [
        "73304.96",
        "0.46058"
      ],
      [
        "73304.95",
        "0.38309"
      ],
      [
        "73304.92",
        "0.88934"
      ],
      [
        "73304.89",
        "1.75120"
      ],
      [
        "73304.84",
        "0.40225"
      ],
      [
        "73304.78",
        "2.25875"
      ],
      [
        "73304.77",
        "0.14083"
      ],
      [
        "73304.59",
        "3.33111"
      ],
      [
        "73304.07",
        "0.87362"
      ],
      [
        "73303.96",
        "2.84302"
      ],
      [
        "73303.89",
        "2.81507"
      ],
      [
        "73303.81",
        "0.25842"
      ],
      [
        "73303.01",
        "0.18605"
      ],
      [
        "73302.72",
        "0.27572"
      ],
      [
        "73302.59",
        "0.33639"
      ],
      [
        "73302.54",
        "0.60401"
      ],
      [
        "73302.48",
        "0.25149"
      ],
      [
        "73302.46",
        "0.71650"
      ],
      [
        "73302.29",
        "3.01463"
      ],
      [
        "73302.23",
        "1.88902"
      ],
      [
        "73302.08",
        "0.28046"
      ],
      [
        "73301.70",
        "0.49647"
      ],
      [
        "73301.48",
        "0.38624"
      ],
      [
        "73301.41",
        "2.28228"
      ],
      [
        "73301.32",
        "0.39539"
      ],
      [
        "73300.77",
        "0.44882"
      ],
      [
        "73300.62",
        "1.34695"
      ],
      [
        "73300.19",
        "0.27613"
      ],
      [
        "73299.98",
        "1.68915"
      ],
      [
        "73299.71",
        "2.66725"
      ],
      [
        "73299.39",
        "1.46328"
      ],
      [
        "73299.17",
        "0.48421"
      ],
      [
        "73299.14",
        "0.63181"
      ],
      [
        "73298.90",
        "0.53220"
      ],
      [
        "73298.82",
        "2.14257"
      ],
      [
        "73298.62",
        "0.41330"
      ],
      [
        "73298.18",
        "3.59710"
      ],
      [
        "73298.08",
        "4.38087"
      ],
      [
        "73298.05",
        "0.33073"
      ],
      [
        "73297.23",
        "3.16528"
      ],
      [
        "73297.22",
        "2.63308"
      ],
      [
        "73297.13",
        "4.15134"
      ],
      [
        "73296.70",
        "3.90193"
      ],
      [
        "73296.28",
        "3.48817"
      ],
      [
        "73295.51",
        "2.62286"
      ],
      [
        "73295.47",
        "0.45311"
      ],
      [
        "73294.94",
        "0.18901"
      ],
      [
        "73294.88",
        "0.15431"
      ],
      [
        "73294.68",
        "0.28198"
      ],
      [
        "73294.00",
        "2.37928"
      ],
      [
        "73293.94",
        "0.84128"
      ],
      [
        "73293.89",
        "0.45009"
      ],
      [
        "73293.85",
        "0.17704"
      ],
      [
        "73293.69",
        "1.00258"
      ],
      [
        "73293.47",
        "1.95020"
      ],
      [
        "73293.42",
        "3.41574"
      ],
      [
        "73293.31",
        "1.55143"
      ],
      [
        "73293.13",
        "2.00957"
      ],
      [
        "73293.07",
        "1.05213"
      ],
      [
        "73292.45",
        "3.48996"
      ],
      [
        "73291.98",
        "0.70666"
      ],
      [
        "73291.94",
        "1.20644"
      ],
      [
        "73291.84",
        "0.38610"
      ],
      [
        "73291.56",
        "2.32360"
      ],
      [
        "73291.55",
        "1.72071"
      ],
      [
        "73291.52",
        "1.15292"
      ],
      [
        "73291.31",
        "0.43670"
      ],
      [
        "73290.53",
        "2.60580"
      ],
      [
        "73290.50",
        "0.54852"
      ],
      [
        "73290.15",
        "0.09298"
      ],
      [
        "73289.92",
        "2.12955"
      ],
      [
        "73289.51",
        "2.40244"
      ],
      [
        "73289.32",
        "1.38856"
      ],
      [
        "73288.96",
        "0.35149"
      ],
      [
        "73288.60",
        "0.40311"
      ],
      [
        "73288.27",
        "5.32074"
      ],
      [
        "73288.18",
        "5.67594"
      ],
      [
        "73287.43",
        "2.13655"
      ],
      [
        "73286.82",
        "1.90218"
      ],
      [
        "73286.77",
        "3.69446"
      ],
      [
        "73286.65",
        "0.25058"
      ],
      [
        "73286.53",
        "0.50546"
      ],
      [
        "73286.17",
        "0.30985"
      ],
      [
        "73285.40",
        "0.74317"
      ],
      [
        "73285.15",
        "0.66275"
      ],
      [
        "73284.55",
        "2.06015"
      ],
      [
        "73284.39",
        "0.38702"
      ],
      [
        "73284.06",
        "0.39351"
      ],
      [
        "73283.66",
        "1.50595"
      ],
      [
        "73283.63",
        "1.59433"
      ],
      [
        "73283.31",
        "2.31106"
      ],
      [
        "73283.23",
        "2.41252"
      ],
      [
        "73283.20",
        "2.56122"
      ],
      [
        "73282.80",
        "0.20987"
      ],
      [
        "73282.43",
        "2.20541"
      ],
      [
        "73282.02",
        "4.57293"
      ],
      [
        "73281.99",
        "1.20180"
      ],
      [
        "73281.64",
        "0.33281"
      ],
      [
        "73281.55",
        "0.96327"
      ],
      [
        "73281.19",
        "0.41390"
      ],
      [
        "73280.98",
        "1.47979"
      ],
      [
        "73280.75",
        "1.97438"
      ],
      [
        "73280.50",
        "0.70938"
      ],
      [
        "73280.42",
        "2.50252"
      ],
      [
        "73280.11",
        "0.25617"
      ],
      [
        "73278.59",
        "0.57033"
      ],
      [
        "73278.55",
        "1.33721"
      ],
      [
        "73278.16",
        "2.56906"
      ],
      [
        "73277.13",
        "0.52479"
      ],
      [
        "73276.93",
        "2.81757"
      ],
      [
        "73276.44",
        "0.50887"
      ],
      [
        "73276.36",
        "0.19620"
      ],
      [
        "73276.34",
        "0.41260"
      ],
      [
        "73276.31",
        "0.51163"
      ],
      [
        "73276.21",
        "4.09136"
      ],
      [
        "73275.89",
        "0.65403"
      ],
      [
        "73275.87",
        "0.12959"
      ],
      [
        "73275.63",
        "2.01818"
      ],
      [
        "73275.53",
        "0.23926"
      ],
      [
        "73275.50",
        "0.34932"
      ],
      [
        "73275.12",
        "0.44759"
      ],
      [
        "73274.57",
        "0.48913"
      ],
      [
        "73272.89",
        "0.27402"
      ],
      [
        "73272.72",
        "0.16376"
      ],
      [
        "73272.64",
        "3.12425"
      ],
      [
        "73272.56",
        "0.30197"
      ],
      [
        "73271.67",
        "2.79283"
      ],
      [
        "73271.01",
        "0.37165"
      ],
      [
        "73270.80",
        "3.97486"
      ],
      [
        "73270.63",
        "2.75529"
      ],
      [
        "73270.39",
        "0.32518"
      ],
      [
        "73269.41",
        "2.26230"
      ],
      [
        "73269.14",
        "0.23485"
      ],
      [
        "73268.44",
        "0.61453"
      ],
      [
        "73268.02",
        "0.49158"
      ],
      [
        "73267.91",
        "1.64073"
      ],
      [
        "73267.20",
        "0.43009"
      ],
      [
        "73265.42",
        "1.53397"
      ],
      [
        "73265.03",
        "2.30608"
      ],
      [
        "73264.77",
        "2.63551"
      ],
      [
        "73264.67",
        "0.39605"
      ],
      [
        "73264.52",
        "3.57415"
      ],
      [
        "73264.34",
        "0.58318"
      ],
      [
        "73264.19",
        "0.92448"
      ],
      [
        "73263.88",
        "0.28688"
      ],
      [
        "73263.79",
        "0.65703"
      ],
      [
        "73263.12",
        "2.84669"
      ],
      [
        "73262.83",
        "3.36180"
      ],
      [
        "73262.78",
        "0.51295"
      ],
      [
        "73262.51",
        "0.47125"
      ],
      [
        "73262.39",
        "0.72199"
      ],
      [
        "73262.31",
        "0.31636"
      ],
      [
        "73262.24",
        "1.01682"
      ],
      [
        "73261.32",
        "1.98266"
      ],
      [
        "73260.74",
        "1.69943"
      ],
      [
        "73260.49",
        "1.16945"
      ],
      [
        "73259.34",
        "3.10967"
      ],
      [
        "73259.30",
        "0.65965"
      ],
      [
        "73259.05",
        "0.36267"
      ],
      [
        "73258.61",
        "0.37601"
      ],
      [
        "73258.32",
        "0.50113"
      ],
      [
        "73258.31",
        "2.31383"
      ],
      [
        "73258.14",
        "0.68834"
      ],
      [
        "73257.62",
        "5.18974"
      ],
      [
        "73257.56",
        "0.45411"
      ],
      [
        "73257.51",
        "2.92299"
      ],
      [
        "73257.33",
        "1.18559"
      ],
      [
        "73257.27",
        "1.57752"
      ],
      [
        "73257.12",
        "0.36371"
      ],
      [
        "73256.92",
        "1.88112"
      ],
      [
        "73255.96",
        "0.33527"
      ],
      [
        "73255.59",
        "0.45211"
      ],
      [
        "73254.21",
        "2.43583"
      ],
      [
        "73253.66",
        "0.93376"
      ],
      [
        "73253.65",
        "1.80351"
      ],
      [
        "73253.61",
        "0.22126"
      ],
      [
        "73251.64",
        "3.23572"
      ],
      [
        "73251.58",
        "0.23686"
      ],
      [
        "73251.53",
        "2.44639"
      ],
      [
        "73250.96",
        "0.43314"
      ],
      [
        "73249.78",
        "2.25385"
      ],
      [
        "73249.71",
        "0.26087"
      ],
      [
        "73247.69",
        "3.52502"
      ],
      [
        "73247.24",
        "0.55863"
      ],
      [
        "73246.84",
        "0.78124"
      ],
      [
        "73246.82",
        "3.04703"
      ],
      [
        "73246.76",
        "0.24504"
      ],
      [
        "73245.79",
        "0.44372"
      ],
      [
        "73245.72",
        "0.37241"
      ],
      [
        "73244.91",
        "0.29147"
      ],
      [
        "73244.88",
        "2.85035"
      ],
      [
        "73244.14",
        "0.48177"
      ],
      [
        "73243.47",
        "0.47390"
      ],
      [
        "73242.29",
        "0.71615"
      ],
      [
        "73241.79",
        "0.42191"
      ],
      [
        "73241.62",
        "0.37692"
      ],
      [
        "73240.11",
        "2.66735"
      ],
      [
        "73239.75",
        "4.11043"
      ],
      [
        "73239.58",
        "3.62834"
      ],
      [
        "73238.12",
        "0.41840"
      ],
      [
        "73237.93",
        "0.12931"
      ],
      [
        "73237.87",
        "0.33764"
      ],
      [
        "73234.58",
        "0.60203"
      ],
      [
        "73234.33",
        "1.92196"
      ],
      [
        "73233.83",
        "0.42333"
      ],
      [
        "73233.48",
        "0.54985"
      ],
      [
        "73233.32",
        "0.43315"
      ],
      [
        "73233.29",
        "0.42938"
      ],
      [
        "73232.50",
        "0.43210"
      ],
      [
        "73231.72",
        "0.20447"
      ],
      [
        "73231.56",
        "2.26958"
      ],
      [
        "73231.52",
        "1.52769"
      ],
      [
        "73230.69",
        "0.24343"
      ],
      [
        "73230.58",
        "0.80969"
      ],
      [
        "73229.62",
        "3.80149"
      ],
      [
        "73229.25",
        "0.56989"
      ],
      [
        "73228.85",
        "0.57503"
      ],
      [
        "73228.81",
        "2.45493"
      ],
      [
        "73228.53",
        "1.07219"
      ],
      [
        "73228.30",
        "0.64324"
      ],
      [
        "72855.00",
        "0.00068"
      ],
      [
        "72361.72",
        "0.00471"
      ],
      [
        "71430.51",
        "0.00944"
      ],
      [
        "70000.00",
        "0.00014"
      ],
      [
        "65000.00",
        "0.00120"
      ],
      [
        "50708.14",
        "0.00061"
      ]
    ],
    "asks": [
      [
        "73310.11",
        "2.73596"
      ],
      [
        "73310.12",
        "2.89468"
      ],
      [
        "73310.14",
        "0.36744"
      ],
      [
        "73310.16",
        "0.35220"
      ],
      [
        "73310.18",
        "4.23055"
      ],
      [
        "73310.20",
        "13.34903"
      ],
      [
        "73310.21",
        "14.85840"
      ],
      [
        "73310.25",
        "16.76335"
      ],
      [
        "73310.26",
        "0.75017"
      ],
      [
        "73310.29",
        "3.15503"
      ],
      [
        "73310.32",
        "1.44617"
      ],
      [
        "73310.35",
        "3.24476"
      ],
      [
        "73310.38",
        "0.04130"
      ],
      [
        "73310.45",
        "2.57583"
      ],
      [
        "73310.47",
        "0.36550"
      ],
      [
        "73310.52",
        "0.24124"
      ],
      [
        "73310.60",
        "0.32562"
      ],
      [
        "73310.62",
        "0.08528"
      ],
      [
        "73310.64",
        "0.63011"
      ],
      [
        "73310.85",
        "0.40728"
      ],
      [
        "73310.90",
        "0.31957"
      ],
      [
        "73310.93",
        "0.17827"
      ],
      [
        "73311.12",
        "1.81205"
      ],
      [
        "73311.16",
        "0.54500"
      ],
      [
        "73311.26",
        "1.10186"
      ],
      [
        "73311.27",
        "0.72216"
      ],
      [
        "73311.31",
        "0.25705"
      ],
      [
        "73311.37",
        "0.33874"
      ],
      [
        "73311.41",
        "0.70568"
      ],
      [
        "73311.53",
        "1.42209"
      ],
      [
        "73311.57",
        "2.80499"
      ],
      [
        "73311.58",
        "0.24760"
      ],
      [
        "73311.63",
        "1.95428"
      ],
      [
        "73311.67",
        "0.66723"
      ],
      [
        "73311.73",
        "1.05131"
      ],
      [
        "73311.78",
        "0.44127"
      ],
      [
        "73311.93",
        "3.92648"
      ],
      [
        "73312.12",
        "0.41636"
      ],
      [
        "73312.20",
        "0.63301"
      ],
      [
        "73312.28",
        "0.34214"
      ],
      [
        "73312.40",
        "0.25441"
      ],
      [
        "73312.47",
        "1.34108"
      ],
      [
        "73312.71",
        "2.79564"
      ],
      [
        "73312.82",
        "2.29594"
      ],
      [
        "73312.92",
        "1.61342"
      ],
      [
        "73312.95",
        "0.35486"
      ],
      [
        "73313.15",
        "0.59128"
      ],
      [
        "73313.21",
        "1.56625"
      ],
      [
        "73313.24",
        "0.32010"
      ],
      [
        "73313.33",
        "0.26970"
      ],
      [
        "73313.51",
        "0.47775"
      ],
      [
        "73313.61",
        "0.20359"
      ],
      [
        "73313.79",
        "0.60575"
      ],
      [
        "73313.93",
        "1.82321"
      ],
      [
        "73314.22",
        "0.39606"
      ],
      [
        "73314.25",
        "1.52888"
      ],
      [
        "73314.26",
        "3.89765"
      ],
      [
        "73314.27",
        "1.31518"
      ],
      [
        "73314.28",
        "0.67068"
      ],
      [
        "73314.41",
        "0.39589"
      ],
      [
        "73314.80",
        "0.25386"
      ],
      [
        "73315.18",
        "0.43339"
      ],
      [
        "73315.36",
        "0.26918"
      ],
      [
        "73315.51",
        "2.78416"
      ],
      [
        "73315.57",
        "0.37716"
      ],
      [
        "73315.63",
        "0.55152"
      ],
      [
        "73316.06",
        "2.11914"
      ],
      [
        "73316.07",
        "3.80314"
      ],
      [
        "73316.21",
        "1.31748"
      ],
      [
        "73316.23",
        "2.16577"
      ],
      [
        "73316.34",
        "0.22047"
      ],
      [
        "73316.35",
        "3.97126"
      ],
      [
        "73316.67",
        "1.34641"
      ],
      [
        "73316.76",
        "4.76703"
      ],
      [
        "73316.86",
        "1.67951"
      ],
      [
        "73317.23",
        "0.32936"
      ],
      [
        "73317.42",
        "0.20727"
      ],
      [
        "73317.63",
        "0.33497"
      ],
      [
        "73317.81",
        "0.90351"
      ],
      [
        "73318.14",
        "1.22145"
      ],
      [
        "73318.49",
        "0.29227"
      ],
      [
        "73318.64",
        "3.73308"
      ],
      [
        "73319.15",
        "0.35265"
      ],
      [
        "73319.31",
        "0.84856"
      ],
      [
        "73319.33",
        "0.43053"
      ],
      [
        "73319.56",
        "2.15339"
      ],
      [
        "73319.62",
        "1.71812"
      ],
      [
        "73319.69",
        "0.38214"
      ],
      [
        "73319.80",
        "0.31452"
      ],
      [
        "73319.81",
        "2.59871"
      ],
      [
        "73320.00",
        "1.71185"
      ],
      [
        "73320.52",
        "0.16440"
      ],
      [
        "73320.78",
        "1.28223"
      ],
      [
        "73320.83",
        "0.36947"
      ],
      [
        "73320.88",
        "2.38969"
      ],
      [
        "73321.05",
        "1.67522"
      ],
      [
        "73321.09",
        "2.00211"
      ],
      [
        "73321.16",
        "2.51663"
      ],
      [
        "73322.05",
        "1.46027"
      ],
      [
        "73322.34",
        "1.71158"
      ],
      [
        "73322.85",
        "2.04900"
      ],
      [
        "73323.04",
        "1.38516"
      ],
      [
        "73323.36",
        "1.32992"
      ],
      [
        "73323.50",
        "0.26179"
      ],
      [
        "73323.62",
        "0.37956"
      ],
      [
        "73323.63",
        "1.15003"
      ],
      [
        "73324.11",
        "0.35504"
      ],
      [
        "73324.16",
        "1.13574"
      ],
      [
        "73324.24",
        "0.79032"
      ],
      [
        "73324.30",
        "2.78645"
      ],
      [
        "73324.70",
        "2.89387"
      ],
      [
        "73324.86",
        "1.53821"
      ],
      [
        "73324.92",
        "3.41988"
      ],
      [
        "73324.98",
        "5.14434"
      ],
      [
        "73325.01",
        "2.63612"
      ],
      [
        "73325.11",
        "0.40047"
      ],
      [
        "73325.28",
        "0.91225"
      ],
      [
        "73325.85",
        "0.36253"
      ],
      [
        "73325.99",
        "0.03398"
      ],
      [
        "73326.03",
        "0.41318"
      ],
      [
        "73326.92",
        "4.03093"
      ],
      [
        "73327.11",
        "0.58048"
      ],
      [
        "73327.21",
        "4.33276"
      ],
      [
        "73327.43",
        "2.48805"
      ],
      [
        "73327.95",
        "3.57512"
      ],
      [
        "73327.99",
        "0.39682"
      ],
      [
        "73328.14",
        "0.46453"
      ],
      [
        "73328.22",
        "3.71437"
      ],
      [
        "73329.13",
        "0.37813"
      ],
      [
        "73329.22",
        "3.94588"
      ],
      [
        "73329.41",
        "1.80886"
      ],
      [
        "73329.96",
        "3.61827"
      ],
      [
        "73330.34",
        "0.86361"
      ],
      [
        "73330.69",
        "0.33655"
      ],
      [
        "73331.31",
        "0.56925"
      ],
      [
        "73331.32",
        "0.30767"
      ],
      [
        "73331.57",
        "0.21572"
      ],
      [
        "73332.60",
        "3.24798"
      ],
      [
        "73332.72",
        "0.59369"
      ],
      [
        "73333.54",
        "0.62701"
      ],
      [
        "73334.10",
        "0.42838"
      ],
      [
        "73335.34",
        "1.51237"
      ],
      [
        "73335.46",
        "5.35989"
      ],
      [
        "73335.70",
        "3.58245"
      ],
      [
        "73336.34",
        "0.49186"
      ],
      [
        "73336.96",
        "2.47774"
      ],
      [
        "73337.62",
        "0.44805"
      ],
      [
        "73338.50",
        "0.59335"
      ],
      [
        "73338.89",
        "0.54972"
      ],
      [
        "73339.03",
        "0.51488"
      ],
      [
        "73339.12",
        "0.51820"
      ],
      [
        "73339.69",
        "1.86403"
      ],
      [
        "73339.81",
        "0.22732"
      ],
      [
        "73340.24",
        "0.28182"
      ],
      [
        "73340.31",
        "0.85809"
      ],
      [
        "73341.08",
        "1.63828"
      ],
      [
        "73341.16",
        "0.31870"
      ],
      [
        "73341.25",
        "0.46609"
      ],
      [
        "73341.99",
        "1.57775"
      ],
      [
        "73342.10",
        "0.29014"
      ],
      [
        "73342.71",
        "0.46515"
      ],
      [
        "73342.73",
        "3.94781"
      ],
      [
        "73342.76",
        "2.24776"
      ],
      [
        "73343.08",
        "1.23001"
      ],
      [
        "73343.66",
        "0.32011"
      ],
      [
        "73343.88",
        "6.66972"
      ],
      [
        "73343.89",
        "2.37953"
      ],
      [
        "73343.93",
        "1.74807"
      ],
      [
        "73344.34",
        "0.28562"
      ],
      [
        "73345.18",
        "0.25022"
      ],
      [
        "73345.34",
        "0.50319"
      ],
      [
        "73345.38",
        "0.32859"
      ],
      [
        "73345.54",
        "0.35181"
      ],
      [
        "73346.20",
        "0.21449"
      ],
      [
        "73346.37",
        "2.61323"
      ],
      [
        "73346.65",
        "0.30897"
      ],
      [
        "73347.27",
        "0.48712"
      ],
      [
        "73347.36",
        "2.38562"
      ],
      [
        "73347.55",
        "0.39881"
      ],
      [
        "73347.65",
        "0.26862"
      ],
      [
        "73347.88",
        "0.43351"
      ],
      [
        "73348.00",
        "0.60843"
      ],
      [
        "73348.64",
        "0.28505"
      ],
      [
        "73348.78",
        "0.61207"
      ],
      [
        "73348.98",
        "0.50168"
      ],
      [
        "73349.40",
        "2.85628"
      ],
      [
        "73349.61",
        "0.29002"
      ],
      [
        "73349.88",
        "0.43678"
      ],
      [
        "73350.21",
        "0.33619"
      ],
      [
        "73350.22",
        "0.21494"
      ],
      [
        "73350.31",
        "4.93580"
      ],
      [
        "73350.49",
        "0.55497"
      ],
      [
        "73350.84",
        "0.38244"
      ],
      [
        "73350.96",
        "0.66644"
      ],
      [
        "73351.46",
        "1.82497"
      ],
      [
        "73351.55",
        "0.28793"
      ],
      [
        "73351.58",
        "1.53243"
      ],
      [
        "73351.69",
        "2.91280"
      ],
      [
        "73351.72",
        "1.45089"
      ],
      [
        "73351.90",
        "1.60004"
      ],
      [
        "73352.05",
        "0.40635"
      ],
      [
        "73352.84",
        "1.56136"
      ],
      [
        "73353.11",
        "0.28839"
      ],
      [
        "73353.18",
        "4.21907"
      ],
      [
        "73353.60",
        "0.46296"
      ],
      [
        "73353.66",
        "0.48351"
      ],
      [
        "73353.81",
        "0.29052"
      ],
      [
        "73354.15",
        "1.26778"
      ],
      [
        "73354.17",
        "2.44068"
      ],
      [
        "73354.28",
        "2.56583"
      ],
      [
        "73354.46",
        "0.31751"
      ],
      [
        "73354.80",
        "0.61581"
      ],
      [
        "73355.18",
        "3.23758"
      ],
      [
        "73355.35",
        "1.77004"
      ],
      [
        "73355.38",
        "2.72628"
      ],
      [
        "73355.41",
        "1.02493"
      ],
      [
        "73355.55",
        "5.00149"
      ],
      [
        "73355.75",
        "0.19862"
      ],
      [
        "73356.32",
        "2.02333"
      ],
      [
        "73356.69",
        "2.84567"
      ],
      [
        "73356.77",
        "0.09899"
      ],
      [
        "73356.78",
        "0.17687"
      ],
      [
        "73357.83",
        "1.69939"
      ],
      [
        "73358.78",
        "2.36285"
      ],
      [
        "73358.84",
        "1.67708"
      ],
      [
        "73359.36",
        "0.33139"
      ],
      [
        "73359.39",
        "0.54561"
      ],
      [
        "73359.62",
        "0.48855"
      ],
      [
        "73360.34",
        "0.57767"
      ],
      [
        "73360.51",
        "0.68213"
      ],
      [
        "73360.63",
        "1.85661"
      ],
      [
        "73361.36",
        "2.04758"
      ],
      [
        "73362.16",
        "0.69029"
      ],
      [
        "73362.77",
        "0.32780"
      ],
      [
        "73362.86",
        "1.95162"
      ],
      [
        "73362.88",
        "0.30288"
      ],
      [
        "73364.09",
        "0.44726"
      ],
      [
        "73364.31",
        "2.93647"
      ],
      [
        "73364.32",
        "2.93782"
      ],
      [
        "73364.37",
        "0.89743"
      ],
      [
        "73364.61",
        "1.78754"
      ],
      [
        "73364.70",
        "4.05150"
      ],
      [
        "73364.77",
        "5.54651"
      ],
      [
        "73365.41",
        "0.62309"
      ],
      [
        "73365.53",
        "3.48102"
      ],
      [
        "73365.62",
        "2.63287"
      ],
      [
        "73366.04",
        "0.49023"
      ],
      [
        "73366.37",
        "0.59716"
      ],
      [
        "73366.45",
        "0.91650"
      ],
      [
        "73367.27",
        "0.31804"
      ],
      [
        "73367.35",
        "1.89564"
      ],
      [
        "73367.38",
        "2.16957"
      ],
      [
        "73368.00",
        "0.30406"
      ],
      [
        "73369.15",
        "2.18811"
      ],
      [
        "73369.50",
        "0.39277"
      ],
      [
        "73369.86",
        "0.23372"
      ],
      [
        "73370.28",
        "0.39087"
      ],
      [
        "73370.52",
        "0.30080"
      ],
      [
        "73370.77",
        "0.53978"
      ],
      [
        "73372.20",
        "2.01117"
      ],
      [
        "73372.51",
        "2.81574"
      ],
      [
        "73373.23",
        "2.17160"
      ],
      [
        "73373.24",
        "0.48214"
      ],
      [
        "73373.39",
        "0.52437"
      ],
      [
        "73373.81",
        "3.87125"
      ],
      [
        "73374.26",
        "1.02210"
      ],
      [
        "73375.00",
        "0.36413"
      ],
      [
        "73375.62",
        "4.48066"
      ],
      [
        "73375.68",
        "2.52674"
      ],
      [
        "73375.85",
        "0.23556"
      ],
      [
        "73375.87",
        "3.49408"
      ],
      [
        "73377.68",
        "0.25717"
      ],
      [
        "73378.63",
        "0.42385"
      ],
      [
        "73380.82",
        "1.24547"
      ],
      [
        "73381.17",
        "0.26989"
      ],
      [
        "73382.36",
        "0.25664"
      ],
      [
        "73382.38",
        "0.41107"
      ],
      [
        "73382.66",
        "0.33979"
      ],
      [
        "73383.70",
        "1.53939"
      ],
      [
        "73384.50",
        "0.19604"
      ],
      [
        "73384.60",
        "2.14962"
      ],
      [
        "73385.16",
        "3.82075"
      ],
      [
        "73387.26",
        "0.52450"
      ],
      [
        "73522.17",
        "0.00028"
      ],
      [
        "73524.99",
        "1.00035"
      ],
      [
        "74179.00",
        "0.00041"
      ],
      [
        "74293.24",
        "0.00041"
      ],
      [
        "75823.74",
        "1.85845"
      ],
      [
        "75901.45",
        "0.46643"
      ],
      [
        "75901.51",
        "4.62003"
      ],
      [
        "76033.54",
        "0.22877"
      ],
      [
        "77000.00",
        "0.01673"
      ],
      [
        "78000.00",
        "0.00122"
      ],
      [
        "78069.44",
        "0.38695"
      ],
      [
        "79135.84",
        "0.00025"
      ],
      [
        "79429.10",
        "2.18232"
      ],
      [
        "79429.15",
        "0.57785"
      ],
      [
        "80000.00",
        "0.00039"
      ],
      [
        "80602.00",
        "0.00010"
      ],
      [
        "80899.84",
        "0.19418"
      ],
      [
        "80905.88",
        "2.20034"
      ],
      [
        "81814.10",
        "2.23224"
      ],
      [
        "81814.11",
        "2.37060"
      ],
      [
        "81814.12",
        "0.64898"
      ],
      [
        "81814.14",
        "1.19114"
      ],
      [
        "81814.15",
        "0.28265"
      ],
      [
        "81814.16",
        "0.22341"
      ],
      [
        "81814.22",
        "0.47208"
      ],
      [
        "81814.34",
        "3.02582"
      ],
      [
        "81814.37",
        "4.13911"
      ],
      [
        "81814.38",
        "3.76863"
      ],
      [
        "81814.39",
        "4.75486"
      ],
      [
        "81814.53",
        "0.36103"
      ],
      [
        "81814.62",
        "0.42870"
      ],
      [
        "81814.64",
        "1.62346"
      ],
      [
        "81814.65",
        "1.06809"
      ],
      [
        "81814.66",
        "4.34345"
      ],
      [
        "81814.68",
        "2.51713"
      ],
      [
        "81814.84",
        "2.61090"
      ],
      [
        "81814.85",
        "1.33182"
      ],
      [
        "81814.86",
        "0.32864"
      ],
      [
        "81815.03",
        "2.62183"
      ],
      [
        "81815.06",
        "0.43559"
      ],
      [
        "81815.09",
        "3.11643"
      ],
      [
        "81815.11",
        "0.13362"
      ],
      [
        "81815.19",
        "1.65993"
      ],
      [
        "81815.29",
        "0.20376"
      ],
      [
        "81815.40",
        "4.60743"
      ],
      [
        "81815.65",
        "0.63658"
      ],
      [
        "81815.89",
        "0.43083"
      ],
      [
        "81815.97",
        "1.10209"
      ],
      [
        "81816.00",
        "0.40701"
      ],
      [
        "81816.03",
        "0.27611"
      ],
      [
        "81816.06",
        "0.54962"
      ],
      [
        "81816.18",
        "1.08058"
      ],
      [
        "81816.26",
        "0.30479"
      ],
      [
        "81816.33",
        "0.46369"
      ],
      [
        "81816.38",
        "5.80148"
      ],
      [
        "81816.45",
        "0.42555"
      ],
      [
        "81816.51",
        "1.26207"
      ],
      [
        "81816.55",
        "1.53487"
      ],
      [
        "81816.88",
        "2.39902"
      ],
      [
        "81817.13",
        "2.27792"
      ],
      [
        "81817.29",
        "0.73067"
      ],
      [
        "81817.46",
        "0.34653"
      ],
      [
        "81817.80",
        "2.54134"
      ],
      [
        "81817.92",
        "2.99164"
      ],
      [
        "81817.94",
        "0.14691"
      ],
      [
        "81817.97",
        "2.69782"
      ],
      [
        "81818.02",
        "2.00007"
      ],
      [
        "81818.23",
        "4.06889"
      ],
      [
        "81818.28",
        "0.34788"
      ],
      [
        "81818.37",
        "0.33902"
      ],
      [
        "81818.58",
        "0.47357"
      ],
      [
        "81818.76",
        "1.82431"
      ],
      [
        "81818.77",
        "0.85279"
      ],
      [
        "81818.78",
        "0.39763"
      ],
      [
        "81818.86",
        "0.27296"
      ],
      [
        "81818.96",
        "0.05662"
      ],
      [
        "81819.09",
        "0.44913"
      ],
      [
        "81819.18",
        "1.32720"
      ],
      [
        "82500.00",
        "0.00246"
      ],
      [
        "83500.00",
        "0.00006"
      ],
      [
        "85000.00",
        "0.00019"
      ],
      [
        "111000.00",
        "0.00206"
      ]
    ]
  },
  "ts": 1779971250462
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.493151" elapsed="0.000938"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:30.495715" level="INFO">${data} = {'timestamp': 1779971234734, 'lastUpdateId': 1775210765084, 'bids': [['73310.10', '2.11340'], ['73310.09', '2.41832'], ['73310.08', '3.13152'], ['73310.05', '1.52701'], ['73310.03', '1.32163'], ['7331...</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.494239" elapsed="0.001514"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.495928" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, list)</arg>
<arg>验证深度数据列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.496474" elapsed="0.000226"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证深度数据字典结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($depth_dict, dict)</arg>
<arg>深度数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.497734" elapsed="0.000233"/>
</kw>
<kw name="Get Dictionary Keys" owner="Collections">
<msg time="2026-05-28T20:27:30.498265" level="INFO">${dict_keys} = ['asks', 'bids', 'lastUpdateId', 'timestamp']</msg>
<var>${dict_keys}</var>
<arg>${depth_dict}</arg>
<doc>Returns keys of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-05-28T20:27:30.498090" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.498551" level="INFO">深度数据字典包含字段: ['asks', 'bids', 'lastUpdateId', 'timestamp']</msg>
<arg>深度数据字典包含字段: ${dict_keys}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.498403" elapsed="0.000193"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${depth_dict}</arg>
<arg>bids</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.498879" elapsed="0.000160"/>
</kw>
<msg time="2026-05-28T20:27:30.499129" level="INFO">${has_bids} = True</msg>
<var>${has_bids}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${depth_dict}</arg>
<arg>bids</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:30.498725" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${depth_dict}</arg>
<arg>asks</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.499413" elapsed="0.000150"/>
</kw>
<msg time="2026-05-28T20:27:30.499658" level="INFO">${has_asks} = True</msg>
<var>${has_asks}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${depth_dict}</arg>
<arg>asks</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:30.499278" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:30.500224" level="FAIL">Dictionary does not contain key 'symbol'.</msg>
<arg>${depth_dict}</arg>
<arg>symbol</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:30.499974" elapsed="0.000391">Dictionary does not contain key 'symbol'.</status>
</kw>
<msg time="2026-05-28T20:27:30.500457" level="INFO">${has_symbol} = False</msg>
<var>${has_symbol}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${depth_dict}</arg>
<arg>symbol</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:30.499829" elapsed="0.000654"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${depth_dict}</arg>
<arg>timestamp</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.500760" elapsed="0.000146"/>
</kw>
<msg time="2026-05-28T20:27:30.500989" level="INFO">${has_timestamp} = True</msg>
<var>${has_timestamp}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${depth_dict}</arg>
<arg>timestamp</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:30.500612" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${depth_dict}</arg>
<arg>lastUpdateId</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.501245" elapsed="0.000131"/>
</kw>
<msg time="2026-05-28T20:27:30.501450" level="INFO">${has_lastUpdateId} = True</msg>
<var>${has_lastUpdateId}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${depth_dict}</arg>
<arg>lastUpdateId</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:30.501128" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.501686" level="INFO">深度数据包含买盘(bids): True</msg>
<arg>深度数据包含买盘(bids): ${has_bids}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.501576" elapsed="0.000150"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.501923" level="INFO">深度数据包含卖盘(asks): True</msg>
<arg>深度数据包含卖盘(asks): ${has_asks}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.501821" elapsed="0.000141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.502159" level="INFO">深度数据包含交易对(symbol): False</msg>
<arg>深度数据包含交易对(symbol): ${has_symbol}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.502049" elapsed="0.000149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.502405" level="INFO">深度数据包含时间戳(timestamp): True</msg>
<arg>深度数据包含时间戳(timestamp): ${has_timestamp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.502289" elapsed="0.000157"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.502654" level="INFO">深度数据包含更新ID(lastUpdateId): True</msg>
<arg>深度数据包含更新ID(lastUpdateId): ${has_lastUpdateId}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.502543" elapsed="0.000152"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证买盘数据">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($bids, list)</arg>
<arg>买盘数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.503693" elapsed="0.000216"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.504249" level="INFO">Length is 289.</msg>
<msg time="2026-05-28T20:27:30.504318" level="INFO">${bids_length} = 289</msg>
<var>${bids_length}</var>
<arg>${bids}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:30.504014" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.504589" level="INFO">买盘数据包含 289 个价位</msg>
<arg>买盘数据包含 ${bids_length} 个价位</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.504480" elapsed="0.000145"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证价格层级数据">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($price_level, list)</arg>
<arg>${side}数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.505797" elapsed="0.000349"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.506403" level="INFO">Length is 2.</msg>
<msg time="2026-05-28T20:27:30.506489" level="INFO">${level_length} = 2</msg>
<var>${level_length}</var>
<arg>${price_level}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:30.506274" elapsed="0.000242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.506805" level="INFO">买盘数据包含 2 个元素</msg>
<arg>${side}数据包含 ${level_length} 个元素</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.506636" elapsed="0.000216"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.508220" level="INFO">买盘价格: 73310.10, 数量: 2.11340</msg>
<arg>${side}价格: ${price_level[0]}, 数量: ${price_level[1]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.507214" elapsed="0.001055"/>
</kw>
<arg>${level_length} &gt;= 2</arg>
<arg>Log</arg>
<arg>${side}价格: ${price_level[0]}, 数量: ${price_level[1]}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.506984" elapsed="0.001337"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($price_level[0], (int, float, str))</arg>
<arg>价格应该是数字格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.508673" elapsed="0.000296"/>
</kw>
<arg>${level_length} &gt;= 1</arg>
<arg>Should Be True</arg>
<arg>isinstance($price_level[0], (int, float, str))</arg>
<arg>价格应该是数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.508457" elapsed="0.000570"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($price_level[1], (int, float, str))</arg>
<arg>数量应该是数字格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.509373" elapsed="0.000286"/>
</kw>
<arg>${level_length} &gt;= 2</arg>
<arg>Should Be True</arg>
<arg>isinstance($price_level[1], (int, float, str))</arg>
<arg>数量应该是数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.509160" elapsed="0.000561"/>
</kw>
<arg>${bids[0]}</arg>
<arg>买盘</arg>
<doc>验证单个价格层级数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:30.504970" elapsed="0.004826"/>
</kw>
<arg>${bids_length} &gt; 0</arg>
<arg>验证价格层级数据</arg>
<arg>${bids[0]}</arg>
<arg>买盘</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.504723" elapsed="0.005130"/>
</kw>
<arg>${depth_dict['bids']}</arg>
<doc>验证买盘数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:30.503021" elapsed="0.006893"/>
</kw>
<arg>${has_bids}</arg>
<arg>验证买盘数据</arg>
<arg>${depth_dict['bids']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.502796" elapsed="0.007158"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证卖盘数据">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($asks, list)</arg>
<arg>卖盘数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.510889" elapsed="0.000191"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.511286" level="INFO">Length is 365.</msg>
<msg time="2026-05-28T20:27:30.511355" level="INFO">${asks_length} = 365</msg>
<var>${asks_length}</var>
<arg>${asks}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:30.511185" elapsed="0.000191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.511589" level="INFO">卖盘数据包含 365 个价位</msg>
<arg>卖盘数据包含 ${asks_length} 个价位</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.511471" elapsed="0.000158"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证价格层级数据">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($price_level, list)</arg>
<arg>${side}数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.512554" elapsed="0.000220"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.512978" level="INFO">Length is 2.</msg>
<msg time="2026-05-28T20:27:30.513047" level="INFO">${level_length} = 2</msg>
<var>${level_length}</var>
<arg>${price_level}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:30.512876" elapsed="0.000192"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.513304" level="INFO">卖盘数据包含 2 个元素</msg>
<arg>${side}数据包含 ${level_length} 个元素</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.513167" elapsed="0.000175"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.514429" level="INFO">卖盘价格: 73310.11, 数量: 2.73596</msg>
<arg>${side}价格: ${price_level[0]}, 数量: ${price_level[1]}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.513625" elapsed="0.000845"/>
</kw>
<arg>${level_length} &gt;= 2</arg>
<arg>Log</arg>
<arg>${side}价格: ${price_level[0]}, 数量: ${price_level[1]}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.513443" elapsed="0.001068"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($price_level[0], (int, float, str))</arg>
<arg>价格应该是数字格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.514805" elapsed="0.000228"/>
</kw>
<arg>${level_length} &gt;= 1</arg>
<arg>Should Be True</arg>
<arg>isinstance($price_level[0], (int, float, str))</arg>
<arg>价格应该是数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.514623" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($price_level[1], (int, float, str))</arg>
<arg>数量应该是数字格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.515369" elapsed="0.000227"/>
</kw>
<arg>${level_length} &gt;= 2</arg>
<arg>Should Be True</arg>
<arg>isinstance($price_level[1], (int, float, str))</arg>
<arg>数量应该是数字格式</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.515188" elapsed="0.000456"/>
</kw>
<arg>${asks[0]}</arg>
<arg>卖盘</arg>
<doc>验证单个价格层级数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:30.511939" elapsed="0.003794"/>
</kw>
<arg>${asks_length} &gt; 0</arg>
<arg>验证价格层级数据</arg>
<arg>${asks[0]}</arg>
<arg>卖盘</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.511726" elapsed="0.004049"/>
</kw>
<arg>${depth_dict['asks']}</arg>
<doc>验证卖盘数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:30.510281" elapsed="0.005545"/>
</kw>
<arg>${has_asks}</arg>
<arg>验证卖盘数据</arg>
<arg>${depth_dict['asks']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.510063" elapsed="0.005800"/>
</kw>
<arg>${data}</arg>
<doc>验证深度数据字典的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:30.497330" elapsed="0.018582"/>
</kw>
<arg>isinstance($data, dict)</arg>
<arg>验证深度数据字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:30.496839" elapsed="0.019118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.516515" level="INFO">获取市场深度数据 /v1/spot/market/public/depth status=200</msg>
<arg>获取市场深度数据 /v1/spot/market/public/depth status=${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.516064" elapsed="0.000495"/>
</kw>
<doc>验证市场深度数据接口功能</doc>
<tag>market</tag>
<status status="PASS" start="2026-05-28T20:27:30.043056" elapsed="0.473618"/>
</test>
<doc>市场深度数据接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:30.026904" elapsed="0.490046"/>
</suite>
<suite id="s1-s4-s2-s3" name="Market Plate" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/mark/market_plate.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.521257" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:30.521099" elapsed="0.000181"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.521501" elapsed="0.000015"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:30.521347" elapsed="0.000199"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.521739" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.521640" elapsed="0.000133"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:30.521565" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:30.521330" elapsed="0.000484"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.522332" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.522232" elapsed="0.000135"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.522536" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.522631" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.522722" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.522813" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.522902" elapsed="0.000014"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:30.522415" elapsed="0.000526"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.523257" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.523080" elapsed="0.000210"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.523540" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.523375" elapsed="0.000196"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.523821" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.523655" elapsed="0.000197"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.524105" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.523936" elapsed="0.000200"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.524387" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.524220" elapsed="0.000198"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.524674" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.524500" elapsed="0.000204"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.524967" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.524788" elapsed="0.000210"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.525259" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.525082" elapsed="0.000208"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.525581" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:30.525395" elapsed="0.000218"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:30.522958" elapsed="0.002683"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.525737" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.525833" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.525923" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.526011" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.526100" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.526185" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.526272" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.526359" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.526444" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:30.525658" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:30.522403" elapsed="0.004091"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.526688" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.526564" elapsed="0.000158"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:30.527030" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:30.526809" elapsed="0.000354"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:30.522040" elapsed="0.005176"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.527350" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:30.527288" elapsed="0.000090"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:30.520925" elapsed="0.006489"/>
</kw>
<test id="s1-s4-s2-s3-t1" name="获取市场盘口数据" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:30.529276" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:30.528795" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:30.529741" elapsed="0.000014"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:30.529382" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:30.529370" elapsed="0.000427"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:30.529822" elapsed="0.000023"/>
</return>
<msg time="2026-05-28T20:27:30.529966" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:30.528265" elapsed="0.001719"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:31.000909" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/market/public/plate 
 path_url=/v1/spot/market/public/plate 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:31.001290" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/market/public/plate 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:30 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': 'd022b9a63663f7698d0bdef729cfe9af', 'X-Transparent': '00-d022b9a63663f7698d0bdef729cfe9af-1a9f55bae74b2ab6-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d40fe99f7f5e9-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":[{"id":"246","plate":"Innovation"},{"id":"254","plate":"brc20"},{"id":"244","plate":"DeFi1"},{"id":"258","plate":"GameFi"},{"id":"251","plate":"Fan Token"},{"id":"257","plate":"Public Chain"},{"id":"256","plate":"Infrastructure"},{"id":"255","plate":"Solana"}],"ts":1779971250981} 
 </msg>
<msg time="2026-05-28T20:27:31.001622" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:31.001910" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:30.530572" elapsed="0.471374"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:31.002090" elapsed="0.000085"/>
</return>
<msg time="2026-05-28T20:27:31.002414" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/spot/market/public/plate</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:30.530087" elapsed="0.472354"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.005076" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:31.003793" elapsed="0.001434"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.006126" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.005533" elapsed="0.000624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.006459" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.006298" elapsed="0.000210"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:31.002883" elapsed="0.003696"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.007891" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': [{'id': '246', 'plate': 'Innovation'}, {'id': '254', 'plate': 'brc20'}, {'id': '244', 'plate': 'DeFi1'}, {'id': '258', 'plate': 'GameFi'}, {'id': '...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.007129" elapsed="0.000809"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:31.008127" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.008775" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.008584" elapsed="0.000260"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:31.006786" elapsed="0.002145"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.010433" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': [{'id': '246', 'plate': 'Innovation'}, {'id': '254', 'plate': 'brc20'}, {'id': '244', 'plate': 'DeFi1'}, {'id': '258', 'plate': 'GameFi'}, {'id': '...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.009611" elapsed="0.000866"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.011472" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": [
    {
      "id": "246",
      "plate": "Innovation"
    },
    {
      "id": "254",
      "plate": "brc20"
    },
    {
      "id": "24...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:31.010649" elapsed="0.000869"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.011995" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": [
    {
      "id": "246",
      "plate": "Innovation"
    },
    {
      "id": "254",
      "plate": "brc20"
    },
    {
      "id": "244",
      "plate": "DeFi1"
    },
    {
      "id": "258",
      "plate": "GameFi"
    },
    {
      "id": "251",
      "plate": "Fan Token"
    },
    {
      "id": "257",
      "plate": "Public Chain"
    },
    {
      "id": "256",
      "plate": "Infrastructure"
    },
    {
      "id": "255",
      "plate": "Solana"
    }
  ],
  "ts": 1779971250981
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.011718" elapsed="0.000443"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:31.009176" elapsed="0.003067"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:31.013140" level="INFO">${data} = [{'id': '246', 'plate': 'Innovation'}, {'id': '254', 'plate': 'brc20'}, {'id': '244', 'plate': 'DeFi1'}, {'id': '258', 'plate': 'GameFi'}, {'id': '251', 'plate': 'Fan Token'}, {'id': '257', 'plate': '...</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:31.012405" elapsed="0.000774"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.013339" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证盘口数据列表结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($plate_list, list)</arg>
<arg>盘口数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.014795" elapsed="0.000302"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.015409" level="INFO">Length is 8.</msg>
<msg time="2026-05-28T20:27:31.015504" level="INFO">${length} = 8</msg>
<var>${length}</var>
<arg>${plate_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:31.015254" elapsed="0.000368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.015936" level="INFO">盘口数据列表包含 8 个盘口</msg>
<arg>盘口数据列表包含 ${length} 个盘口</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.015763" elapsed="0.000221"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证盘口数据项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($plate_item, dict)</arg>
<arg>盘口数据项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.017261" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.017825" level="INFO">盘口数据项内容: {'id': '246', 'plate': 'Innovation'}</msg>
<arg>盘口数据项内容: ${plate_item}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.017680" elapsed="0.000198"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:31.018883" level="FAIL">Dictionary does not contain key 'symbol'.</msg>
<arg>${plate_item}</arg>
<arg>symbol</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:31.018556" elapsed="0.000452">Dictionary does not contain key 'symbol'.</status>
</kw>
<msg time="2026-05-28T20:27:31.019138" level="INFO">${has_symbol} = False</msg>
<var>${has_symbol}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${plate_item}</arg>
<arg>symbol</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:31.018003" elapsed="0.001162"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_symbol}</arg>
<arg>Log</arg>
<arg>交易对符号: ${plate_item['symbol']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.019320" elapsed="0.000140"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:31.019945" level="FAIL">Dictionary does not contain key 'timestamp'.</msg>
<arg>${plate_item}</arg>
<arg>timestamp</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:31.019741" elapsed="0.000279">Dictionary does not contain key 'timestamp'.</status>
</kw>
<msg time="2026-05-28T20:27:31.020124" level="INFO">${has_timestamp} = False</msg>
<var>${has_timestamp}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${plate_item}</arg>
<arg>timestamp</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:31.019593" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_timestamp}</arg>
<arg>Log</arg>
<arg>时间戳: ${plate_item['timestamp']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.020290" elapsed="0.000113"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:31.020806" level="FAIL">Dictionary does not contain key 'bids'.</msg>
<arg>${plate_item}</arg>
<arg>bids</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:31.020638" elapsed="0.000225">Dictionary does not contain key 'bids'.</status>
</kw>
<msg time="2026-05-28T20:27:31.020947" level="INFO">${has_bids} = False</msg>
<var>${has_bids}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${plate_item}</arg>
<arg>bids</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:31.020514" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_bids}</arg>
<arg>验证买盘数据</arg>
<arg>${plate_item['bids']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.021077" elapsed="0.000099"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:31.021548" level="FAIL">Dictionary does not contain key 'asks'.</msg>
<arg>${plate_item}</arg>
<arg>asks</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:31.021397" elapsed="0.000201">Dictionary does not contain key 'asks'.</status>
</kw>
<msg time="2026-05-28T20:27:31.021677" level="INFO">${has_asks} = False</msg>
<var>${has_asks}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${plate_item}</arg>
<arg>asks</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:31.021278" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_asks}</arg>
<arg>验证卖盘数据</arg>
<arg>${plate_item['asks']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.021811" elapsed="0.000095"/>
</kw>
<arg>${plate_list[0]}</arg>
<doc>验证单个盘口数据的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:31.016440" elapsed="0.005531"/>
</kw>
<arg>${length} &gt; 0</arg>
<arg>验证盘口数据项结构</arg>
<arg>${plate_list[0]}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.016112" elapsed="0.005904"/>
</kw>
<arg>${data}</arg>
<doc>验证盘口数据列表的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:31.014406" elapsed="0.007671"/>
</kw>
<arg>isinstance($data, list)</arg>
<arg>验证盘口数据列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.013939" elapsed="0.008188"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, dict)</arg>
<arg>验证盘口数据字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.022247" elapsed="0.000210"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.023534" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.023029" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:31.023800" elapsed="0.000496"/>
</kw>
<msg time="2026-05-28T20:27:31.024377" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:31.023665" elapsed="0.000734"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.024754" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:31.024517" elapsed="0.000271"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.025214" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:31.024991" elapsed="0.000252"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.025563" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:31.025375" elapsed="0.000216"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.026016" level="INFO">${summary_content} = 🧪 测试过程: 获取市场盘口数据 | 📡 请求接口: /v1/spot/market/public/plate | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.025716" elapsed="0.000331"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.026388" level="INFO">${final_summary} = 🧪 测试过程: 获取市场盘口数据 | 📡 请求接口: /v1/spot/market/public/plate | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:31.026173" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.026674" level="INFO">🧪 测试过程: 获取市场盘口数据 | 📡 请求接口: /v1/spot/market/public/plate | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.026541" elapsed="0.000180"/>
</kw>
<arg>获取市场盘口数据</arg>
<arg>/v1/spot/market/public/plate</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:31.022694" elapsed="0.004087"/>
</kw>
<doc>验证市场盘口数据接口功能</doc>
<tag>market</tag>
<status status="PASS" start="2026-05-28T20:27:30.527456" elapsed="0.499462"/>
</test>
<doc>市场盘口数据接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:30.517837" elapsed="0.509373"/>
</suite>
<suite id="s1-s4-s2-s4" name="Market Symbol" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/mark/market_symbol.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.032373" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:31.032173" elapsed="0.000230"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.032683" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:31.032486" elapsed="0.000244"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.032952" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.032834" elapsed="0.000158"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:31.032752" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:31.032464" elapsed="0.000575"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.033628" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.033515" elapsed="0.000152"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.033866" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.033977" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.034083" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.034186" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.034289" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:31.033724" elapsed="0.000609"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.034689" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.034493" elapsed="0.000233"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.035021" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.034825" elapsed="0.000232"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.035339" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.035155" elapsed="0.000219"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.035661" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.035471" elapsed="0.000226"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.035989" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.035796" elapsed="0.000229"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.036320" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.036121" elapsed="0.000258"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.036691" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.036478" elapsed="0.000249"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.037029" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.036825" elapsed="0.000239"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.037331" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.037150" elapsed="0.000213"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:31.034352" elapsed="0.003039"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.037487" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.037581" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.037674" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.037761" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.037850" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.037938" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.038025" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.038112" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.038198" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:31.037409" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:31.033710" elapsed="0.004540"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.038441" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.038320" elapsed="0.000156"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:31.038771" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:31.038560" elapsed="0.000336"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:31.033290" elapsed="0.005658"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.039099" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.039030" elapsed="0.000103"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:31.031940" elapsed="0.007233"/>
</kw>
<test id="s1-s4-s2-s4-t1" name="获取市场交易对列表" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.041260" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:31.040740" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.041781" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:31.041378" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:31.041364" elapsed="0.000482"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:31.041871" elapsed="0.000027"/>
</return>
<msg time="2026-05-28T20:27:31.042027" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:31.040140" elapsed="0.001908"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:31.600695" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/market/public/symbol 
 path_url=/v1/spot/market/public/symbol 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:31.601258" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/market/public/symbol 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:31 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '7c6fbff385d544715edca58fdc4b64c6', 'X-Transparent': '00-7c6fbff385d544715edca58fdc4b64c6-367de9ad8be18f00-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d4101d8a3e35f-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":{"time":1779971251505,"version":"6e571e65290270d339a693b8f87eaf6d","symbols":[{"id":9517,"symbol":"btx_usdt","displayName":"BTX_USDT","state":"ONLINE","stateTime":1745259672000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"btx","baseCurrencyPrecision":8,"baseCurrencyId":2779,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":4,"quantityPrecision":1,"orderTypes":[],"timeInForces":[],"displayWeight":999999,"displayLevel":"FULL","plates":[],"filters":[]},{"id":614,"symbol":"btc_usdt","displayName":"BTC_USDT","state":"ONLINE","stateTime":1739066408000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":8,"baseCurrency":"btc","baseCurrencyPrecision":8,"baseCurrencyId":2,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":2,"quantityPrecision":5,"orderTypes":["LIMIT","MARKET"],"timeInForces":["GTC","IOC"],"displayWeight":100999,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":616,"symbol":"eth_usdt","displayName":"ETH_USDT","state":"ONLINE","stateTime":1739066432000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":4,"baseCurrency":"eth","baseCurrencyPrecision":8,"baseCurrencyId":5,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":2,"quantityPrecision":4,"orderTypes":["LIMIT","MARKET"],"timeInForces":["GTC","IOC"],"displayWeight":100002,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUANTITY","min":"0.0001","max":"1000","tickSize":"0.0001"},{"filter":"QUOTE_QTY","min":"5"}]},{"id":9444,"symbol":"ada_usdt","displayName":"ADA_USDT","state":"ONLINE","stateTime":1739425543000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"ada","baseCurrencyPrecision":8,"baseCurrencyId":12,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":4,"quantityPrecision":1,"orderTypes":[],"timeInForces":[],"displayWeight":99987,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9440,"symbol":"avax_usdt","displayName":"AVAX_USDT","state":"ONLINE","stateTime":1739425405000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"avax","baseCurrencyPrecision":8,"baseCurrencyId":13,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":3,"quantityPrecision":2,"orderTypes":[],"timeInForces":[],"displayWeight":9999,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":621,"symbol":"xrp_usdt","displayName":"XRP_USDT","state":"ONLINE","stateTime":1747048186000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"xrp","baseCurrencyPrecision":8,"baseCurrencyId":90,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":4,"quantityPrecision":1,"orderTypes":["LIMIT","MARKET"],"timeInForces":["GTC","IOC"],"displayWeight":9998,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":617,"symbol":"etc_usdt","displayName":"ETC_USDT","state":"ONLINE","stateTime":1739425771000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"etc","baseCurrencyPrecision":8,"baseCurrencyId":6,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":2,"quantityPrecision":2,"orderTypes":["LIMIT","MARKET"],"timeInForces":["GTC","IOC"],"displayWeight":9996,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9437,"symbol":"doge_usdt","displayName":"DOGE_USDT","state":"ONLINE","stateTime":1739066566000,"tradingEnabled":true,"openapiEnabled":true,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"doge","baseCurrencyPrecision":8,"baseCurrencyId":131,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":5,"quantityPrecision":0,"orderTypes":[],"timeInForces":[],"displayWeight":999,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9438,"symbol":"bnb_usdt","displayName":"BNB_USDT","state":"ONLINE","stateTime":1739066518000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"bnb","baseCurrencyPrecision":8,"baseCurrencyId":675,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":2,"quantityPrecision":3,"orderTypes":[],"timeInForces":[],"displayWeight":999,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9657,"symbol":"paxg_usdt","displayName":"PAXG_USDT","state":"ONLINE","stateTime":1770282233000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"paxg","baseCurrencyPrecision":8,"baseCurrencyId":95,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":1,"quantityPrecision":4,"orderTypes":[],"timeInForces":[],"displayWeight":999,"displayLevel":"FULL","plates":[],"filters":[]},{"id":9658,"symbol":"xaut_usdt","displayName":"XAUT_USDT","state":"ONLINE","stateTime":1775877545000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"xaut","baseCurrencyPrecision":8,"baseCurrencyId":381,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":1,"quantityPrecision":4,"orderTypes":[],"timeInForces":[],"displayWeight":999,"displayLevel":"DIRECT","plates":[],"filters":[]},{"id":9443,"symbol":"trump_usdt","displayName":"TRUMP_USDT","state":"ONLINE","stateTime":1739199445000,"tradingEnabled":true,"openapiEnabled":true,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"trump","baseCurrencyPrecision":2,"baseCurrencyId":2735,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":3,"quantityPrecision":3,"orderTypes":[],"timeInForces":[],"displayWeight":997,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9506,"symbol":"act_usdt","displayName":"ACT_USDT","state":"ONLINE","stateTime":1739427819000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"act","baseCurrencyPrecision":8,"baseCurrencyId":2762,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":5,"quantityPrecision":1,"orderTypes":[],"timeInForces":[],"displayWeight":969,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9505,"symbol":"jto_usdt","displayName":"JTO_USDT","state":"ONLINE","stateTime":1739427725000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"jto","baseCurrencyPrecision":8,"baseCurrencyId":119,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":4,"quantityPrecision":1,"orderTypes":[],"timeInForces":[],"displayWeight":968,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9504,"symbol":"turbo_usdt","displayName":"TURBO_USDT","state":"ONLINE","stateTime":1739427418000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"turbo","baseCurrencyPrecision":8,"baseCurrencyId":2761,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":6,"quantityPrecision":0,"orderTypes":[],"timeInForces":[],"displayWeight":966,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9503,"symbol":"jup_usdt","displayName":"JUP_USDT","state":"ONLINE","stateTime":1739427338000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"jup","baseCurrencyPrecision":8,"baseCurrencyId":71,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":4,"quantityPrecision":1,"orderTypes":[],"timeInForces":[],"displayWeight":965,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9502,"symbol":"cookie_usdt","displayName":"COOKIE_USDT","state":"ONLINE","stateTime":1739427237000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"cookie","baseCurrencyPrecision":8,"baseCurrencyId":2760,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":4,"quantityPrecision":1,"orderTypes":[],"timeInForces":[],"displayWeight":964,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9501,"symbol":"ray_usdt","displayName":"RAY_USDT","state":"ONLINE","stateTime":1739426952000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"ray","baseCurrencyPrecision":8,"baseCurrencyId":75,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":3,"quantityPrecision":1,"orderTypes":[],"timeInForces":[],"displayWeight":963,"displayLevel":"FULL","plates":[],"filters":[{"filter":"QUOTE_QTY","min":"5"}]},{"id":9500,"symbol":"spell_usdt","displayName":"SPELL_USDT","state":"ONLINE","stateTime":1739426778000,"tradingEnabled":true,"openapiEnabled":false,"nextStateTime":null,"nextState":null,"depthMergePrecision":5,"baseCurrency":"spell","baseCurrencyPrecision":8,"baseCurrencyId":203,"quoteCurrency":"usdt","quoteCurrencyPrecision":8,"quoteCurrencyId":11,"pricePrecision":7,"quantityPrecision":0,"order... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-05-28T20:27:31.601660" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:31.602054" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:31.042692" elapsed="0.559430"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:31.602362" elapsed="0.000141"/>
</return>
<msg time="2026-05-28T20:27:31.602893" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/spot/market/public/symbol</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:31.042159" elapsed="0.560791"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.605739" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:31.604435" elapsed="0.001449"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.607216" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.606174" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.607797" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.607511" elapsed="0.000385"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:31.603546" elapsed="0.004472"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.614371" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': {'time': 1779971251505, 'version': '6e571e65290270d339a693b8f87eaf6d', 'symbols': [{'id': 9517, 'symbol': 'btx_usdt', 'displayName': 'BTX_USDT', 's...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.609009" elapsed="0.005405"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:31.614588" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.615133" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.614980" elapsed="0.000205"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:31.608362" elapsed="0.006896"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.622176" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': {'time': 1779971251505, 'version': '6e571e65290270d339a693b8f87eaf6d', 'symbols': [{'id': 9517, 'symbol': 'btx_usdt', 'displayName': 'BTX_USDT', 's...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.615826" elapsed="0.006391"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.628576" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "time": 1779971251505,
    "version": "6e571e65290270d339a693b8f87eaf6d",
    "symbols": [
      {
        "id": 9517,
        "symb...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:31.622364" elapsed="0.006252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.629170" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "time": 1779971251505,
    "version": "6e571e65290270d339a693b8f87eaf6d",
    "symbols": [
      {
        "id": 9517,
        "symbol": "btx_usdt",
        "displayName": "BTX_USDT",
        "state": "ONLINE",
        "stateTime": 1745259672000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "btx",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2779,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 999999,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 614,
        "symbol": "btc_usdt",
        "displayName": "BTC_USDT",
        "state": "ONLINE",
        "stateTime": 1739066408000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 8,
        "baseCurrency": "btc",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 5,
        "orderTypes": [
          "LIMIT",
          "MARKET"
        ],
        "timeInForces": [
          "GTC",
          "IOC"
        ],
        "displayWeight": 100999,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 616,
        "symbol": "eth_usdt",
        "displayName": "ETH_USDT",
        "state": "ONLINE",
        "stateTime": 1739066432000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 4,
        "baseCurrency": "eth",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 5,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 4,
        "orderTypes": [
          "LIMIT",
          "MARKET"
        ],
        "timeInForces": [
          "GTC",
          "IOC"
        ],
        "displayWeight": 100002,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUANTITY",
            "min": "0.0001",
            "max": "1000",
            "tickSize": "0.0001"
          },
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9444,
        "symbol": "ada_usdt",
        "displayName": "ADA_USDT",
        "state": "ONLINE",
        "stateTime": 1739425543000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ada",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 12,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 99987,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9440,
        "symbol": "avax_usdt",
        "displayName": "AVAX_USDT",
        "state": "ONLINE",
        "stateTime": 1739425405000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "avax",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 13,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 9999,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 621,
        "symbol": "xrp_usdt",
        "displayName": "XRP_USDT",
        "state": "ONLINE",
        "stateTime": 1747048186000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "xrp",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 90,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [
          "LIMIT",
          "MARKET"
        ],
        "timeInForces": [
          "GTC",
          "IOC"
        ],
        "displayWeight": 9998,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 617,
        "symbol": "etc_usdt",
        "displayName": "ETC_USDT",
        "state": "ONLINE",
        "stateTime": 1739425771000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "etc",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 6,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 2,
        "orderTypes": [
          "LIMIT",
          "MARKET"
        ],
        "timeInForces": [
          "GTC",
          "IOC"
        ],
        "displayWeight": 9996,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9437,
        "symbol": "doge_usdt",
        "displayName": "DOGE_USDT",
        "state": "ONLINE",
        "stateTime": 1739066566000,
        "tradingEnabled": true,
        "openapiEnabled": true,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "doge",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 131,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 999,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9438,
        "symbol": "bnb_usdt",
        "displayName": "BNB_USDT",
        "state": "ONLINE",
        "stateTime": 1739066518000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "bnb",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 675,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 999,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9657,
        "symbol": "paxg_usdt",
        "displayName": "PAXG_USDT",
        "state": "ONLINE",
        "stateTime": 1770282233000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "paxg",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 95,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 1,
        "quantityPrecision": 4,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 999,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9658,
        "symbol": "xaut_usdt",
        "displayName": "XAUT_USDT",
        "state": "ONLINE",
        "stateTime": 1775877545000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "xaut",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 381,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 1,
        "quantityPrecision": 4,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 999,
        "displayLevel": "DIRECT",
        "plates": [],
        "filters": []
      },
      {
        "id": 9443,
        "symbol": "trump_usdt",
        "displayName": "TRUMP_USDT",
        "state": "ONLINE",
        "stateTime": 1739199445000,
        "tradingEnabled": true,
        "openapiEnabled": true,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "trump",
        "baseCurrencyPrecision": 2,
        "baseCurrencyId": 2735,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 997,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9506,
        "symbol": "act_usdt",
        "displayName": "ACT_USDT",
        "state": "ONLINE",
        "stateTime": 1739427819000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "act",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2762,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 969,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9505,
        "symbol": "jto_usdt",
        "displayName": "JTO_USDT",
        "state": "ONLINE",
        "stateTime": 1739427725000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "jto",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 119,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 968,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9504,
        "symbol": "turbo_usdt",
        "displayName": "TURBO_USDT",
        "state": "ONLINE",
        "stateTime": 1739427418000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "turbo",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2761,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 966,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9503,
        "symbol": "jup_usdt",
        "displayName": "JUP_USDT",
        "state": "ONLINE",
        "stateTime": 1739427338000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "jup",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 71,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 965,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9502,
        "symbol": "cookie_usdt",
        "displayName": "COOKIE_USDT",
        "state": "ONLINE",
        "stateTime": 1739427237000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cookie",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2760,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 964,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9501,
        "symbol": "ray_usdt",
        "displayName": "RAY_USDT",
        "state": "ONLINE",
        "stateTime": 1739426952000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ray",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 75,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 963,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9500,
        "symbol": "spell_usdt",
        "displayName": "SPELL_USDT",
        "state": "ONLINE",
        "stateTime": 1739426778000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "spell",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 203,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 7,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 962,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9494,
        "symbol": "render_usdt",
        "displayName": "RENDER_USDT",
        "state": "ONLINE",
        "stateTime": 1746287682000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "render",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2750,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 959,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9495,
        "symbol": "pol_usdt",
        "displayName": "POL_USDT",
        "state": "ONLINE",
        "stateTime": 1746287897000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "pol",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2751,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 959,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9496,
        "symbol": "xlm_usdt",
        "displayName": "XLM_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "xlm",
        "baseCurrencyPrecision": 7,
        "baseCurrencyId": 2715,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 959,
        "displayLevel": "NONE",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9493,
        "symbol": "ena_usdt",
        "displayName": "ENA_USDT",
        "state": "ONLINE",
        "stateTime": 1746287761000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ena",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2749,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 958,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9492,
        "symbol": "move_usdt",
        "displayName": "MOVE_USDT",
        "state": "ONLINE",
        "stateTime": 1741181548000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "move",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2748,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 957,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9491,
        "symbol": "ape_usdt",
        "displayName": "APE_USDT",
        "state": "ONLINE",
        "stateTime": 1745936111000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ape",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 61,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 956,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9490,
        "symbol": "strk_usdt",
        "displayName": "STRK_USDT",
        "state": "ONLINE",
        "stateTime": 1739426202000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "strk",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 43,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 955,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9489,
        "symbol": "crv_usdt",
        "displayName": "CRV_USDT",
        "state": "ONLINE",
        "stateTime": 1739426097000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "crv",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 116,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 954,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9488,
        "symbol": "sand_usdt",
        "displayName": "SAND_USDT",
        "state": "ONLINE",
        "stateTime": 1746627252000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sand",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 132,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 953,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9487,
        "symbol": "rune_usdt",
        "displayName": "RUNE_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "rune",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 55,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 952,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9485,
        "symbol": "gala_usdt",
        "displayName": "GALA_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "gala",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 68,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 950,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9483,
        "symbol": "jasmy_usdt",
        "displayName": "JASMY_USDT",
        "state": "ONLINE",
        "stateTime": 1752490522000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "jasmy",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 57,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 948,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9482,
        "symbol": "sei_usdt",
        "displayName": "SEI_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sei",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 72,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 947,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9480,
        "symbol": "grt_usdt",
        "displayName": "GRT_USDT",
        "state": "ONLINE",
        "stateTime": 1752490394000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "grt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 40,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 945,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9478,
        "symbol": "imx_usdt",
        "displayName": "IMX_USDT",
        "state": "ONLINE",
        "stateTime": 1752490582000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "imx",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 26,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 943,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9476,
        "symbol": "stx_usdt",
        "displayName": "STX_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "stx",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 25,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 941,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9471,
        "symbol": "xmr_usdt",
        "displayName": "XMR_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "xmr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 382,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 1,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 936,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9470,
        "symbol": "arb_usdt",
        "displayName": "ARB_USDT",
        "state": "ONLINE",
        "stateTime": 1739197141000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "arb",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 23,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 935,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9469,
        "symbol": "tao_usdt",
        "displayName": "TAO_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "tao",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 47,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 1,
        "quantityPrecision": 4,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 934,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9468,
        "symbol": "fet_usdt",
        "displayName": "FET_USDT",
        "state": "ONLINE",
        "stateTime": 1741181468000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "fet",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 37,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 933,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9467,
        "symbol": "vet_usdt",
        "displayName": "VET_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "vet",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 31,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 932,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9465,
        "symbol": "hbar_usdt",
        "displayName": "HBAR_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "hbar",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 53,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 930,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9464,
        "symbol": "wbtc_usdt",
        "displayName": "WBTC_USDT",
        "state": "ONLINE",
        "stateTime": 1747617837000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "wbtc",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 20,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 5,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 929,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9463,
        "symbol": "ton_usdt",
        "displayName": "TON_USDT",
        "state": "ONLINE",
        "stateTime": 1739066662000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ton",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 421,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 928,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9462,
        "symbol": "sui_usdt",
        "displayName": "SUI_USDT",
        "state": "ONLINE",
        "stateTime": 1739066632000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sui",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 36,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 927,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9461,
        "symbol": "apt_usdt",
        "displayName": "APT_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "apt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 44,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 926,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9460,
        "symbol": "ftm_usdt",
        "displayName": "FTM_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ftm",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 50,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 925,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9459,
        "symbol": "aave_usdt",
        "displayName": "AAVE_USDT",
        "state": "ONLINE",
        "stateTime": 1739425658000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "aave",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 60,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 924,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9458,
        "symbol": "algo_usdt",
        "displayName": "ALGO_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "algo",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 65,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 923,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9457,
        "symbol": "fil_usdt",
        "displayName": "FIL_USDT",
        "state": "ONLINE",
        "stateTime": 1739197499000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "fil",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 24,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 922,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9455,
        "symbol": "link_usdt",
        "displayName": "LINK_USDT",
        "state": "ONLINE",
        "stateTime": 1750420491000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "link",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 17,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 920,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9454,
        "symbol": "matic_usdt",
        "displayName": "MATIC_USDT",
        "state": "OFFLINE",
        "stateTime": 1758870221000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "matic",
        "baseCurrencyPrecision": 6,
        "baseCurrencyId": 2719,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 919,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9453,
        "symbol": "people_usdt",
        "displayName": "PEOPLE_USDT",
        "state": "ONLINE",
        "stateTime": 1739356483000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "people",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 94,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 918,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9452,
        "symbol": "pnut_usdt",
        "displayName": "PNUT_USDT",
        "state": "ONLINE",
        "stateTime": 1739356595000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "pnut",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2742,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 917,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9451,
        "symbol": "rvn_usdt",
        "displayName": "RVN_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "rvn",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 164,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 916,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9450,
        "symbol": "bome_usdt",
        "displayName": "BOME_USDT",
        "state": "ONLINE",
        "stateTime": 1741181626000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "bome",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 137,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 915,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9447,
        "symbol": "pengu_usdt",
        "displayName": "PENGU_USDT",
        "state": "ONLINE",
        "stateTime": 1739198539000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "pengu",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2736,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 912,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9446,
        "symbol": "bonk_usdt",
        "displayName": "BONK_USDT",
        "state": "ONLINE",
        "stateTime": 1739198161000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "bonk",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 46,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 8,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 911,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9445,
        "symbol": "pepe_usdt",
        "displayName": "PEPE_USDT",
        "state": "ONLINE",
        "stateTime": 1739356161000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "pepe",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 28,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 8,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 910,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9431,
        "symbol": "sol_usdt",
        "displayName": "SOL_USDT",
        "state": "ONLINE",
        "stateTime": 1739066496000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sol",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 941,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 663,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9656,
        "symbol": "band_usdt",
        "displayName": "BAND_USDT",
        "state": "ONLINE",
        "stateTime": 1753690757000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "band",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 163,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 181,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9655,
        "symbol": "qkc_usdt",
        "displayName": "QKC_USDT",
        "state": "ONLINE",
        "stateTime": 1753690747000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "qkc",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 308,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 180,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9654,
        "symbol": "ankr_usdt",
        "displayName": "ANKR_USDT",
        "state": "ONLINE",
        "stateTime": 1753690734000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ankr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 117,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 179,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9653,
        "symbol": "audio_usdt",
        "displayName": "AUDIO_USDT",
        "state": "ONLINE",
        "stateTime": 1753690718000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "audio",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 346,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 178,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9652,
        "symbol": "alice_usdt",
        "displayName": "ALICE_USDT",
        "state": "ONLINE",
        "stateTime": 1753690706000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "alice",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 229,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 177,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9651,
        "symbol": "nfp_usdt",
        "displayName": "NFP_USDT",
        "state": "ONLINE",
        "stateTime": 1753690694000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "nfp",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 224,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 4,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 176,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9648,
        "symbol": "jst_usdt",
        "displayName": "JST_USDT",
        "state": "ONLINE",
        "stateTime": 1753690646000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "jst",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 114,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 173,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9646,
        "symbol": "ilv_usdt",
        "displayName": "ILV_USDT",
        "state": "ONLINE",
        "stateTime": 1753690607000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ilv",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 115,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 171,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9644,
        "symbol": "slp_usdt",
        "displayName": "SLP_USDT",
        "state": "ONLINE",
        "stateTime": 1753690570000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "slp",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 375,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 169,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9642,
        "symbol": "agld_usdt",
        "displayName": "AGLD_USDT",
        "state": "ONLINE",
        "stateTime": 1753690543000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "agld",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 9,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 167,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9640,
        "symbol": "hot_usdt",
        "displayName": "HOT_USDT",
        "state": "ONLINE",
        "stateTime": 1753690514000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "hot",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 105,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 165,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9639,
        "symbol": "dodo_usdt",
        "displayName": "DODO_USDT",
        "state": "ONLINE",
        "stateTime": 1753690489000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "dodo",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 227,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 164,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9638,
        "symbol": "cvx_usdt",
        "displayName": "CVX_USDT",
        "state": "ONLINE",
        "stateTime": 1753690475000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cvx",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 159,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 163,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9637,
        "symbol": "storj_usdt",
        "displayName": "STORJ_USDT",
        "state": "ONLINE",
        "stateTime": 1753690462000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "storj",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 281,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 162,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9636,
        "symbol": "id_usdt",
        "displayName": "ID_USDT",
        "state": "ONLINE",
        "stateTime": 1753690448000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "id",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 153,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 161,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9635,
        "symbol": "yfi_usdt",
        "displayName": "YFI_USDT",
        "state": "ONLINE",
        "stateTime": 1753690435000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "yfi",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 130,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 0,
        "quantityPrecision": 5,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 160,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9634,
        "symbol": "g_usdt",
        "displayName": "G_USDT",
        "state": "ONLINE",
        "stateTime": 1753690416000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "g",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2804,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 159,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9633,
        "symbol": "snx_usdt",
        "displayName": "SNX_USDT",
        "state": "ONLINE",
        "stateTime": 1753690404000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "snx",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 144,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 158,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9631,
        "symbol": "glmr_usdt",
        "displayName": "GLMR_USDT",
        "state": "ONLINE",
        "stateTime": 1753690311000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "glmr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 175,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 156,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9629,
        "symbol": "xtz_usdt",
        "displayName": "XTZ_USDT",
        "state": "ONLINE",
        "stateTime": 1753690281000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "xtz",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 107,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 154,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9628,
        "symbol": "nexo_usdt",
        "displayName": "NEXO_USDT",
        "state": "ONLINE",
        "stateTime": 1753690267000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "nexo",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 138,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 153,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9627,
        "symbol": "rpl_usdt",
        "displayName": "RPL_USDT",
        "state": "ONLINE",
        "stateTime": 1753690253000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "rpl",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 108,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 152,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9626,
        "symbol": "egld_usdt",
        "displayName": "EGLD_USDT",
        "state": "ONLINE",
        "stateTime": 1753690237000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "egld",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 80,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 151,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9625,
        "symbol": "kmno_usdt",
        "displayName": "KMNO_USDT",
        "state": "ONLINE",
        "stateTime": 1753690218000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "kmno",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2803,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 150,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9624,
        "symbol": "acx_usdt",
        "displayName": "ACX_USDT",
        "state": "ONLINE",
        "stateTime": 1753690190000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "acx",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2802,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 149,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9623,
        "symbol": "alt_usdt",
        "displayName": "ALT_USDT",
        "state": "ONLINE",
        "stateTime": 1752892976000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "alt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 171,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 148,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9622,
        "symbol": "axl_usdt",
        "displayName": "AXL_USDT",
        "state": "ONLINE",
        "stateTime": 1752893594000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "axl",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2801,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 147,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9621,
        "symbol": "atm_usdt",
        "displayName": "ATM_USDT",
        "state": "ONLINE",
        "stateTime": 1752893574000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "atm",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 265,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 146,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9620,
        "symbol": "cos_usdt",
        "displayName": "COS_USDT",
        "state": "ONLINE",
        "stateTime": 1752893551000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cos",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 329,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 145,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9619,
        "symbol": "tlm_usdt",
        "displayName": "TLM_USDT",
        "state": "ONLINE",
        "stateTime": 1752893527000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "tlm",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 313,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 144,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9618,
        "symbol": "arpa_usdt",
        "displayName": "ARPA_USDT",
        "state": "ONLINE",
        "stateTime": 1752893509000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "arpa",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 298,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 143,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9617,
        "symbol": "amp_usdt",
        "displayName": "AMP_USDT",
        "state": "ONLINE",
        "stateTime": 1752893481000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "amp",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 170,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 142,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9616,
        "symbol": "ctk_usdt",
        "displayName": "CTK_USDT",
        "state": "ONLINE",
        "stateTime": 1752893455000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ctk",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 208,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 141,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9615,
        "symbol": "nmr_usdt",
        "displayName": "NMR_USDT",
        "state": "ONLINE",
        "stateTime": 1752893437000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "nmr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 176,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 140,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9613,
        "symbol": "aevo_usdt",
        "displayName": "AEVO_USDT",
        "state": "ONLINE",
        "stateTime": 1752893391000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "aevo",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 96,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 138,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9612,
        "symbol": "pyr_usdt",
        "displayName": "PYR_USDT",
        "state": "ONLINE",
        "stateTime": 1752893365000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "pyr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 212,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 137,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9611,
        "symbol": "tnsr_usdt",
        "displayName": "TNSR_USDT",
        "state": "ONLINE",
        "stateTime": 1752893342000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "tnsr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 302,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 136,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9610,
        "symbol": "ygg_usdt",
        "displayName": "YGG_USDT",
        "state": "ONLINE",
        "stateTime": 1752893320000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ygg",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 168,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 135,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9609,
        "symbol": "quick_usdt",
        "displayName": "QUICK_USDT",
        "state": "ONLINE",
        "stateTime": 1752893296000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "quick",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 276,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 134,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9606,
        "symbol": "coti_usdt",
        "displayName": "COTI_USDT",
        "state": "ONLINE",
        "stateTime": 1752893235000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "coti",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 277,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 131,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9605,
        "symbol": "t_usdt",
        "displayName": "T_USDT",
        "state": "ONLINE",
        "stateTime": 1752893216000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "t",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 158,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 130,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9603,
        "symbol": "dusk_usdt",
        "displayName": "DUSK_USDT",
        "state": "ONLINE",
        "stateTime": 1752893179000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "dusk",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 177,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 128,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9602,
        "symbol": "blur_usdt",
        "displayName": "BLUR_USDT",
        "state": "ONLINE",
        "stateTime": 1752893158000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "blur",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 97,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 127,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9601,
        "symbol": "awe_usdt",
        "displayName": "AWE_USDT",
        "state": "ONLINE",
        "stateTime": 1752893138000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "awe",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2800,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 126,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9600,
        "symbol": "psg_usdt",
        "displayName": "PSG_USDT",
        "state": "ONLINE",
        "stateTime": 1752893106000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "psg",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 419,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 125,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9599,
        "symbol": "ssv_usdt",
        "displayName": "SSV_USDT",
        "state": "ONLINE",
        "stateTime": 1752893062000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ssv",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 120,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 124,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9598,
        "symbol": "hmstr_usdt",
        "displayName": "HMSTR_USDT",
        "state": "ONLINE",
        "stateTime": 1752893044000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "hmstr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2799,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 7,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 123,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9597,
        "symbol": "tut_usdt",
        "displayName": "TUT_USDT",
        "state": "ONLINE",
        "stateTime": 1752893025000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "tut",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2798,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 122,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9595,
        "symbol": "mana_usdt",
        "displayName": "MANA_USDT",
        "state": "ONLINE",
        "stateTime": 1752892958000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "mana",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 140,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 120,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9594,
        "symbol": "cyber_usdt",
        "displayName": "CYBER_USDT",
        "state": "ONLINE",
        "stateTime": 1752892935000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cyber",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 183,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 119,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9592,
        "symbol": "epic_usdt",
        "displayName": "EPIC_USDT",
        "state": "ONLINE",
        "stateTime": 1752892892000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "epic",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2797,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 117,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9591,
        "symbol": "prom_usdt",
        "displayName": "PROM_USDT",
        "state": "ONLINE",
        "stateTime": 1752892872000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "prom",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 291,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 116,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9590,
        "symbol": "mask_usdt",
        "displayName": "MASK_USDT",
        "state": "ONLINE",
        "stateTime": 1752892840000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "mask",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 124,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 115,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9589,
        "symbol": "porto_usdt",
        "displayName": "PORTO_USDT",
        "state": "ONLINE",
        "stateTime": 1752490633000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "porto",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 257,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 114,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9588,
        "symbol": "super_usdt",
        "displayName": "SUPER_USDT",
        "state": "ONLINE",
        "stateTime": 1752490602000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "super",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 103,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 113,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9585,
        "symbol": "fida_usdt",
        "displayName": "FIDA_USDT",
        "state": "ONLINE",
        "stateTime": 1752490501000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "fida",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 334,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 110,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9584,
        "symbol": "lazio_usdt",
        "displayName": "LAZIO_USDT",
        "state": "ONLINE",
        "stateTime": 1752490482000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "lazio",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 258,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 109,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9583,
        "symbol": "mav_usdt",
        "displayName": "MAV_USDT",
        "state": "ONLINE",
        "stateTime": 1752490464000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "mav",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 303,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 108,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9582,
        "symbol": "xai_usdt",
        "displayName": "XAI_USDT",
        "state": "ONLINE",
        "stateTime": 1752490446000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "xai",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 198,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 107,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9580,
        "symbol": "cvc_usdt",
        "displayName": "CVC_USDT",
        "state": "ONLINE",
        "stateTime": 1752490413000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cvc",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 202,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 106,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9581,
        "symbol": "ens_usdt",
        "displayName": "ENS_USDT",
        "state": "ONLINE",
        "stateTime": 1752490429000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ens",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 77,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 105,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9579,
        "symbol": "1inch_usdt",
        "displayName": "1INCH_USDT",
        "state": "ONLINE",
        "stateTime": 1752490376000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "1inch",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2716,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 104,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9578,
        "symbol": "ach_usdt",
        "displayName": "ACH_USDT",
        "state": "OFFLINE",
        "stateTime": 1754554272000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ach",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 149,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 103,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9577,
        "symbol": "og_usdt",
        "displayName": "OG_USDT",
        "state": "OFFLINE",
        "stateTime": 1755524714000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "og",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 254,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 102,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9576,
        "symbol": "c98_usdt",
        "displayName": "C98_USDT",
        "state": "ONLINE",
        "stateTime": 1752490325000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "c98",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 283,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 101,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9518,
        "symbol": "usdn_usdt",
        "displayName": "USDN_USDT",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "usdn",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2778,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 100,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9575,
        "symbol": "comp_usdt",
        "displayName": "COMP_USDT",
        "state": "ONLINE",
        "stateTime": 1752490288000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "comp",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 99,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 100,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9434,
        "symbol": "dot_usdt",
        "displayName": "DOT_USDT",
        "state": "ONLINE",
        "stateTime": 1739196088000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "dot",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 16,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 99,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9439,
        "symbol": "trx_usdt",
        "displayName": "TRX_USDT",
        "state": "ONLINE",
        "stateTime": 1739066595000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "trx",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 73,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 99,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9573,
        "symbol": "lpt_usdt",
        "displayName": "LPT_USDT",
        "state": "ONLINE",
        "stateTime": 1752490248000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "lpt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 62,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 98,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9572,
        "symbol": "osmo_usdt",
        "displayName": "OSMO_USDT",
        "state": "OFFLINE",
        "stateTime": 1754502032000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "osmo",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 118,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 97,
        "displayLevel": "NONE",
        "plates": [],
        "filters": []
      },
      {
        "id": 9571,
        "symbol": "loka_usdt",
        "displayName": "LOKA_USDT",
        "state": "OFFLINE",
        "stateTime": 1754582093000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "loka",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 275,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 96,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9569,
        "symbol": "asr_usdt",
        "displayName": "ASR_USDT",
        "state": "ONLINE",
        "stateTime": 1752490183000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "asr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 268,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 94,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9567,
        "symbol": "santos_usdt",
        "displayName": "SANTOS_USDT",
        "state": "ONLINE",
        "stateTime": 1752490148000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "santos",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2794,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 92,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9566,
        "symbol": "bel_usdt",
        "displayName": "BEL_USDT",
        "state": "ONLINE",
        "stateTime": 1752490127000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "bel",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 336,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 91,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9565,
        "symbol": "ondo_usdt",
        "displayName": "ONDO_USDT",
        "state": "ONLINE",
        "stateTime": 1752490107000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ondo",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2747,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 90,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9564,
        "symbol": "usd1_usdt",
        "displayName": "USD1_USDT",
        "state": "ONLINE",
        "stateTime": 1752490087000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "usd1",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2793,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 89,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9561,
        "symbol": "mbox_usdt",
        "displayName": "MBOX_USDT",
        "state": "ONLINE",
        "stateTime": 1752489996000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "mbox",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 228,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 86,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9559,
        "symbol": "alpine_usdt",
        "displayName": "ALPINE_USDT",
        "state": "ONLINE",
        "stateTime": 1752489918000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "alpine",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 243,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 84,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9558,
        "symbol": "uni_usdc",
        "displayName": "UNI_USDC",
        "state": "OFFLINE",
        "stateTime": null,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "uni",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 27,
        "quoteCurrency": "usdc",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 2780,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 83,
        "displayLevel": "DIRECT",
        "plates": [],
        "filters": []
      },
      {
        "id": 9557,
        "symbol": "usdc_usdt",
        "displayName": "USDC_USDT",
        "state": "ONLINE",
        "stateTime": 1750421442000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "usdc",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2780,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 82,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9555,
        "symbol": "pha_usdt",
        "displayName": "PHA_USDT",
        "state": "ONLINE",
        "stateTime": 1750421305000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "pha",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 188,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 80,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9554,
        "symbol": "pyth_usdt",
        "displayName": "PYTH_USDT",
        "state": "ONLINE",
        "stateTime": 1750421251000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "pyth",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 67,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 79,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9553,
        "symbol": "cow_usdt",
        "displayName": "COW_USDT",
        "state": "ONLINE",
        "stateTime": 1750421188000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cow",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2791,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 78,
        "displayLevel": "FULL",
        "plates": [
          244
        ],
        "filters": []
      },
      {
        "id": 9552,
        "symbol": "sxt_usdt",
        "displayName": "SXT_USDT",
        "state": "ONLINE",
        "stateTime": 1750421132000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sxt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2790,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 77,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9551,
        "symbol": "orca_usdt",
        "displayName": "ORCA_USDT",
        "state": "ONLINE",
        "stateTime": 1750421063000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "orca",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2789,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 76,
        "displayLevel": "FULL",
        "plates": [
          244
        ],
        "filters": []
      },
      {
        "id": 9550,
        "symbol": "mubarak_usdt",
        "displayName": "MUBARAK_USDT",
        "state": "ONLINE",
        "stateTime": 1750421000000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "mubarak",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2788,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 75,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9486,
        "symbol": "qnt_usdt",
        "displayName": "QNT_USDT",
        "state": "ONLINE",
        "stateTime": 1750420913000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "qnt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 74,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 74,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9549,
        "symbol": "cake_usdt",
        "displayName": "CAKE_USDT",
        "state": "ONLINE",
        "stateTime": 1750420847000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cake",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 59,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 73,
        "displayLevel": "FULL",
        "plates": [
          244
        ],
        "filters": []
      },
      {
        "id": 9441,
        "symbol": "bch_usdt",
        "displayName": "BCH_USDT",
        "state": "ONLINE",
        "stateTime": 1750420799000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "bch",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 18,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 1,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 72,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      },
      {
        "id": 9548,
        "symbol": "virtual_usdt",
        "displayName": "VIRTUAL_USDT",
        "state": "ONLINE",
        "stateTime": 1750420411000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "virtual",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2787,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 71,
        "displayLevel": "FULL",
        "plates": [
          246
        ],
        "filters": []
      },
      {
        "id": 9547,
        "symbol": "trb_usdt",
        "displayName": "TRB_USDT",
        "state": "ONLINE",
        "stateTime": 1750420326000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "trb",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 576,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 70,
        "displayLevel": "FULL",
        "plates": [
          256
        ],
        "filters": []
      },
      {
        "id": 9546,
        "symbol": "cgpt_usdt",
        "displayName": "CGPT_USDT",
        "state": "ONLINE",
        "stateTime": 1748326687000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cgpt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2786,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 69,
        "displayLevel": "FULL",
        "plates": [
          246
        ],
        "filters": []
      },
      {
        "id": 9545,
        "symbol": "nxpc_usdt",
        "displayName": "NXPC_USDT",
        "state": "ONLINE",
        "stateTime": 1747703729000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "nxpc",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2785,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 68,
        "displayLevel": "FULL",
        "plates": [
          256
        ],
        "filters": []
      },
      {
        "id": 9544,
        "symbol": "bigtime_usdt",
        "displayName": "BIGTIME_USDT",
        "state": "ONLINE",
        "stateTime": 1746870683000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "bigtime",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 423,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 67,
        "displayLevel": "FULL",
        "plates": [
          258
        ],
        "filters": []
      },
      {
        "id": 9543,
        "symbol": "kernel_usdt",
        "displayName": "KERNEL_USDT",
        "state": "ONLINE",
        "stateTime": 1746870591000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "kernel",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2784,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 66,
        "displayLevel": "FULL",
        "plates": [
          244
        ],
        "filters": []
      },
      {
        "id": 9542,
        "symbol": "hyper_usdt",
        "displayName": "HYPER_USDT",
        "state": "ONLINE",
        "stateTime": 1746870446000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "hyper",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2783,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 65,
        "displayLevel": "FULL",
        "plates": [
          256
        ],
        "filters": []
      },
      {
        "id": 9540,
        "symbol": "sto_usdt",
        "displayName": "STO_USDT",
        "state": "ONLINE",
        "stateTime": 1746869235000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sto",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2781,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 63,
        "displayLevel": "FULL",
        "plates": [
          244
        ],
        "filters": []
      },
      {
        "id": 9538,
        "symbol": "cfx_usdt",
        "displayName": "CFX_USDT",
        "state": "ONLINE",
        "stateTime": 1746627343000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "cfx",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 135,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 61,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9537,
        "symbol": "ethfi_usdt",
        "displayName": "ETHFI_USDT",
        "state": "ONLINE",
        "stateTime": 1746627078000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ethfi",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 160,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 60,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9536,
        "symbol": "arkm_usdt",
        "displayName": "ARKM_USDT",
        "state": "ONLINE",
        "stateTime": 1746626795000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "arkm",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 85,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 59,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9535,
        "symbol": "rare_usdt",
        "displayName": "RARE_USDT",
        "state": "ONLINE",
        "stateTime": 1746626722000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "rare",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 250,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 58,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9534,
        "symbol": "pendle_usdt",
        "displayName": "PENDLE_USDT",
        "state": "ONLINE",
        "stateTime": 1746626617000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "pendle",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 134,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 57,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9533,
        "symbol": "zro_usdt",
        "displayName": "ZRO_USDT",
        "state": "ONLINE",
        "stateTime": 1746626539000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "zro",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 78,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 56,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9532,
        "symbol": "api3_usdt",
        "displayName": "API3_USDT",
        "state": "ONLINE",
        "stateTime": 1746626446000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "api3",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 185,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 55,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9531,
        "symbol": "bmt_usdt",
        "displayName": "BMT_USDT",
        "state": "ONLINE",
        "stateTime": 1746626294000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "bmt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2777,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 54,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9541,
        "symbol": "sign_usdt",
        "displayName": "SIGN_USDT",
        "state": "ONLINE",
        "stateTime": 1746870315000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sign",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2782,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 54,
        "displayLevel": "FULL",
        "plates": [
          256
        ],
        "filters": []
      },
      {
        "id": 9530,
        "symbol": "powr_usdt",
        "displayName": "POWR_USDT",
        "state": "ONLINE",
        "stateTime": 1746287602000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "powr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 199,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 53,
        "displayLevel": "FULL",
        "plates": [
          256
        ],
        "filters": []
      },
      {
        "id": 9529,
        "symbol": "lqty_usdt",
        "displayName": "LQTY_USDT",
        "state": "ONLINE",
        "stateTime": 1746287515000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "lqty",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 196,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 52,
        "displayLevel": "FULL",
        "plates": [
          244
        ],
        "filters": []
      },
      {
        "id": 9528,
        "symbol": "sun_usdt",
        "displayName": "SUN_USDT",
        "state": "ONLINE",
        "stateTime": 1746287289000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sun",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2776,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 51,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9527,
        "symbol": "gmt_usdt",
        "displayName": "GMT_USDT",
        "state": "ONLINE",
        "stateTime": 1746287226000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "gmt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 92,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 50,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9524,
        "symbol": "anime_usdt",
        "displayName": "ANIME_USDT",
        "state": "ONLINE",
        "stateTime": 1746287019000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "anime",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2775,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 5,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 47,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9523,
        "symbol": "bera_usdt",
        "displayName": "BERA_USDT",
        "state": "ONLINE",
        "stateTime": 1746286382000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "bera",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2765,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 3,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 46,
        "displayLevel": "FULL",
        "plates": [
          257
        ],
        "filters": []
      },
      {
        "id": 9522,
        "symbol": "tst_usdt",
        "displayName": "TST_USDT",
        "state": "ONLINE",
        "stateTime": 1746286306000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "tst",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2774,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 45,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9521,
        "symbol": "kaito_usdt",
        "displayName": "KAITO_USDT",
        "state": "ONLINE",
        "stateTime": 1747108499000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "kaito",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2773,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 44,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9520,
        "symbol": "gps_usdt",
        "displayName": "GPS_USDT",
        "state": "ONLINE",
        "stateTime": 1746285861000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "gps",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2772,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 43,
        "displayLevel": "FULL",
        "plates": [
          256
        ],
        "filters": []
      },
      {
        "id": 9519,
        "symbol": "red_usdt",
        "displayName": "RED_USDT",
        "state": "ONLINE",
        "stateTime": 1746285735000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "red",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2771,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 42,
        "displayLevel": "FULL",
        "plates": [
          246
        ],
        "filters": []
      },
      {
        "id": 9516,
        "symbol": "rsr_usdt",
        "displayName": "RSR_USDT",
        "state": "ONLINE",
        "stateTime": 1741181923000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "rsr",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 169,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 6,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 41,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9515,
        "symbol": "w_usdt",
        "displayName": "W_USDT",
        "state": "ONLINE",
        "stateTime": 1741181861000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "w",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 143,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 40,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9514,
        "symbol": "eigen_usdt",
        "displayName": "EIGEN_USDT",
        "state": "ONLINE",
        "stateTime": 1741181826000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "eigen",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2770,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 39,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9513,
        "symbol": "glm_usdt",
        "displayName": "GLM_USDT",
        "state": "ONLINE",
        "stateTime": 1741181789000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "glm",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 83,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 38,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9512,
        "symbol": "sushi_usdt",
        "displayName": "SUSHI_USDT",
        "state": "ONLINE",
        "stateTime": 1741181738000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "sushi",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 2769,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 37,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9509,
        "symbol": "auction_usdt",
        "displayName": "AUCTION_USDT",
        "state": "ONLINE",
        "stateTime": 1741181512000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "auction",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 201,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 2,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 35,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9510,
        "symbol": "io_usdt",
        "displayName": "IO_USDT",
        "state": "ONLINE",
        "stateTime": 1741181590000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "io",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 422,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 35,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9508,
        "symbol": "ftt_usdt",
        "displayName": "FTT_USDT",
        "state": "ONLINE",
        "stateTime": 1741181359000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "ftt",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 87,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 4,
        "quantityPrecision": 2,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 30,
        "displayLevel": "FULL",
        "plates": [],
        "filters": []
      },
      {
        "id": 9435,
        "symbol": "near_usdt",
        "displayName": "NEAR_USDT",
        "state": "ONLINE",
        "stateTime": 1750420555000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "near",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 19,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 3,
        "quantityPrecision": 1,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 10,
        "displayLevel": "FULL",
        "plates": [
          257
        ],
        "filters": []
      },
      {
        "id": 9433,
        "symbol": "shib_usdt",
        "displayName": "SHIB_USDT",
        "state": "ONLINE",
        "stateTime": 1739066717000,
        "tradingEnabled": true,
        "openapiEnabled": false,
        "nextStateTime": null,
        "nextState": null,
        "depthMergePrecision": 5,
        "baseCurrency": "shib",
        "baseCurrencyPrecision": 8,
        "baseCurrencyId": 15,
        "quoteCurrency": "usdt",
        "quoteCurrencyPrecision": 8,
        "quoteCurrencyId": 11,
        "pricePrecision": 8,
        "quantityPrecision": 0,
        "orderTypes": [],
        "timeInForces": [],
        "displayWeight": 1,
        "displayLevel": "FULL",
        "plates": [],
        "filters": [
          {
            "filter": "QUOTE_QTY",
            "min": "5"
          }
        ]
      }
    ]
  },
  "ts": 1779971251505
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.628777" elapsed="0.001766"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:31.615466" elapsed="0.015147"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:31.633513" level="INFO">${data} = {'time': 1779971251505, 'version': '6e571e65290270d339a693b8f87eaf6d', 'symbols': [{'id': 9517, 'symbol': 'btx_usdt', 'displayName': 'BTX_USDT', 'state': 'ONLINE', 'stateTime': 1745259672000, 'trading...</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:31.630748" elapsed="0.002793"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.633650" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, list)</arg>
<arg>验证交易对列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.634014" elapsed="0.000152"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证交易对字典结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($symbol_dict, dict)</arg>
<arg>交易对数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.634793" elapsed="0.000200"/>
</kw>
<kw name="Get Dictionary Keys" owner="Collections">
<msg time="2026-05-28T20:27:31.635251" level="INFO">${keys} = ['symbols', 'time', 'version']</msg>
<var>${keys}</var>
<arg>${symbol_dict}</arg>
<doc>Returns keys of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-05-28T20:27:31.635096" elapsed="0.000178"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.635481" level="INFO">Length is 3.</msg>
<msg time="2026-05-28T20:27:31.635545" level="INFO">${count} = 3</msg>
<var>${count}</var>
<arg>${keys}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:31.635375" elapsed="0.000192"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.635778" level="INFO">交易对字典包含 3 个字段</msg>
<arg>交易对字典包含 ${count} 个字段</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.635661" elapsed="0.000155"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.637277" level="INFO">交易对字典内容: {'time': 1779971251505, 'version': '6e571e65290270d339a693b8f87eaf6d', 'symbols': [{'id': 9517, 'symbol': 'btx_usdt', 'displayName': 'BTX_USDT', 'state': 'ONLINE', 'stateTime': 1745259672000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'btx', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2779, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 999999, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 614, 'symbol': 'btc_usdt', 'displayName': 'BTC_USDT', 'state': 'ONLINE', 'stateTime': 1739066408000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 8, 'baseCurrency': 'btc', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 5, 'orderTypes': ['LIMIT', 'MARKET'], 'timeInForces': ['GTC', 'IOC'], 'displayWeight': 100999, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 616, 'symbol': 'eth_usdt', 'displayName': 'ETH_USDT', 'state': 'ONLINE', 'stateTime': 1739066432000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 4, 'baseCurrency': 'eth', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 5, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 4, 'orderTypes': ['LIMIT', 'MARKET'], 'timeInForces': ['GTC', 'IOC'], 'displayWeight': 100002, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUANTITY', 'min': '0.0001', 'max': '1000', 'tickSize': '0.0001'}, {'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9444, 'symbol': 'ada_usdt', 'displayName': 'ADA_USDT', 'state': 'ONLINE', 'stateTime': 1739425543000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ada', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 12, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 99987, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9440, 'symbol': 'avax_usdt', 'displayName': 'AVAX_USDT', 'state': 'ONLINE', 'stateTime': 1739425405000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'avax', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 13, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 9999, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 621, 'symbol': 'xrp_usdt', 'displayName': 'XRP_USDT', 'state': 'ONLINE', 'stateTime': 1747048186000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'xrp', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 90, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': ['LIMIT', 'MARKET'], 'timeInForces': ['GTC', 'IOC'], 'displayWeight': 9998, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 617, 'symbol': 'etc_usdt', 'displayName': 'ETC_USDT', 'state': 'ONLINE', 'stateTime': 1739425771000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'etc', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 6, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 2, 'orderTypes': ['LIMIT', 'MARKET'], 'timeInForces': ['GTC', 'IOC'], 'displayWeight': 9996, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9437, 'symbol': 'doge_usdt', 'displayName': 'DOGE_USDT', 'state': 'ONLINE', 'stateTime': 1739066566000, 'tradingEnabled': True, 'openapiEnabled': True, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'doge', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 131, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 999, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9438, 'symbol': 'bnb_usdt', 'displayName': 'BNB_USDT', 'state': 'ONLINE', 'stateTime': 1739066518000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'bnb', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 675, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 999, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9657, 'symbol': 'paxg_usdt', 'displayName': 'PAXG_USDT', 'state': 'ONLINE', 'stateTime': 1770282233000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'paxg', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 95, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 1, 'quantityPrecision': 4, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 999, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9658, 'symbol': 'xaut_usdt', 'displayName': 'XAUT_USDT', 'state': 'ONLINE', 'stateTime': 1775877545000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'xaut', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 381, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 1, 'quantityPrecision': 4, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 999, 'displayLevel': 'DIRECT', 'plates': [], 'filters': []}, {'id': 9443, 'symbol': 'trump_usdt', 'displayName': 'TRUMP_USDT', 'state': 'ONLINE', 'stateTime': 1739199445000, 'tradingEnabled': True, 'openapiEnabled': True, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'trump', 'baseCurrencyPrecision': 2, 'baseCurrencyId': 2735, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 997, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9506, 'symbol': 'act_usdt', 'displayName': 'ACT_USDT', 'state': 'ONLINE', 'stateTime': 1739427819000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'act', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2762, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 969, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9505, 'symbol': 'jto_usdt', 'displayName': 'JTO_USDT', 'state': 'ONLINE', 'stateTime': 1739427725000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'jto', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 119, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 968, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9504, 'symbol': 'turbo_usdt', 'displayName': 'TURBO_USDT', 'state': 'ONLINE', 'stateTime': 1739427418000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'turbo', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2761, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 966, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9503, 'symbol': 'jup_usdt', 'displayName': 'JUP_USDT', 'state': 'ONLINE', 'stateTime': 1739427338000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'jup', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 71, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 965, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9502, 'symbol': 'cookie_usdt', 'displayName': 'COOKIE_USDT', 'state': 'ONLINE', 'stateTime': 1739427237000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cookie', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2760, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 964, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9501, 'symbol': 'ray_usdt', 'displayName': 'RAY_USDT', 'state': 'ONLINE', 'stateTime': 1739426952000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ray', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 75, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 963, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9500, 'symbol': 'spell_usdt', 'displayName': 'SPELL_USDT', 'state': 'ONLINE', 'stateTime': 1739426778000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'spell', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 203, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 7, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 962, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9494, 'symbol': 'render_usdt', 'displayName': 'RENDER_USDT', 'state': 'ONLINE', 'stateTime': 1746287682000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'render', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2750, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 959, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9495, 'symbol': 'pol_usdt', 'displayName': 'POL_USDT', 'state': 'ONLINE', 'stateTime': 1746287897000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'pol', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2751, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 959, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9496, 'symbol': 'xlm_usdt', 'displayName': 'XLM_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'xlm', 'baseCurrencyPrecision': 7, 'baseCurrencyId': 2715, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 959, 'displayLevel': 'NONE', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9493, 'symbol': 'ena_usdt', 'displayName': 'ENA_USDT', 'state': 'ONLINE', 'stateTime': 1746287761000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ena', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2749, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 958, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9492, 'symbol': 'move_usdt', 'displayName': 'MOVE_USDT', 'state': 'ONLINE', 'stateTime': 1741181548000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'move', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2748, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 957, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9491, 'symbol': 'ape_usdt', 'displayName': 'APE_USDT', 'state': 'ONLINE', 'stateTime': 1745936111000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ape', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 61, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 956, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9490, 'symbol': 'strk_usdt', 'displayName': 'STRK_USDT', 'state': 'ONLINE', 'stateTime': 1739426202000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'strk', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 43, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 955, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9489, 'symbol': 'crv_usdt', 'displayName': 'CRV_USDT', 'state': 'ONLINE', 'stateTime': 1739426097000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'crv', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 116, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 954, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9488, 'symbol': 'sand_usdt', 'displayName': 'SAND_USDT', 'state': 'ONLINE', 'stateTime': 1746627252000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sand', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 132, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 953, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9487, 'symbol': 'rune_usdt', 'displayName': 'RUNE_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'rune', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 55, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 952, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9485, 'symbol': 'gala_usdt', 'displayName': 'GALA_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'gala', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 68, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 950, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9483, 'symbol': 'jasmy_usdt', 'displayName': 'JASMY_USDT', 'state': 'ONLINE', 'stateTime': 1752490522000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'jasmy', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 57, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 948, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9482, 'symbol': 'sei_usdt', 'displayName': 'SEI_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sei', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 72, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 947, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9480, 'symbol': 'grt_usdt', 'displayName': 'GRT_USDT', 'state': 'ONLINE', 'stateTime': 1752490394000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'grt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 40, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 945, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9478, 'symbol': 'imx_usdt', 'displayName': 'IMX_USDT', 'state': 'ONLINE', 'stateTime': 1752490582000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'imx', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 26, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 943, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9476, 'symbol': 'stx_usdt', 'displayName': 'STX_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'stx', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 25, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 941, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9471, 'symbol': 'xmr_usdt', 'displayName': 'XMR_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'xmr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 382, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 1, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 936, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9470, 'symbol': 'arb_usdt', 'displayName': 'ARB_USDT', 'state': 'ONLINE', 'stateTime': 1739197141000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'arb', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 23, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 935, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9469, 'symbol': 'tao_usdt', 'displayName': 'TAO_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'tao', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 47, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 1, 'quantityPrecision': 4, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 934, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9468, 'symbol': 'fet_usdt', 'displayName': 'FET_USDT', 'state': 'ONLINE', 'stateTime': 1741181468000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'fet', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 37, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 933, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9467, 'symbol': 'vet_usdt', 'displayName': 'VET_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'vet', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 31, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 932, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9465, 'symbol': 'hbar_usdt', 'displayName': 'HBAR_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'hbar', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 53, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 930, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9464, 'symbol': 'wbtc_usdt', 'displayName': 'WBTC_USDT', 'state': 'ONLINE', 'stateTime': 1747617837000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'wbtc', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 20, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 5, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 929, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9463, 'symbol': 'ton_usdt', 'displayName': 'TON_USDT', 'state': 'ONLINE', 'stateTime': 1739066662000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ton', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 421, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 928, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9462, 'symbol': 'sui_usdt', 'displayName': 'SUI_USDT', 'state': 'ONLINE', 'stateTime': 1739066632000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sui', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 36, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 927, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9461, 'symbol': 'apt_usdt', 'displayName': 'APT_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'apt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 44, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 926, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9460, 'symbol': 'ftm_usdt', 'displayName': 'FTM_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ftm', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 50, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 925, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9459, 'symbol': 'aave_usdt', 'displayName': 'AAVE_USDT', 'state': 'ONLINE', 'stateTime': 1739425658000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'aave', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 60, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 924, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9458, 'symbol': 'algo_usdt', 'displayName': 'ALGO_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'algo', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 65, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 923, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9457, 'symbol': 'fil_usdt', 'displayName': 'FIL_USDT', 'state': 'ONLINE', 'stateTime': 1739197499000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'fil', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 24, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 922, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9455, 'symbol': 'link_usdt', 'displayName': 'LINK_USDT', 'state': 'ONLINE', 'stateTime': 1750420491000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'link', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 17, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 920, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9454, 'symbol': 'matic_usdt', 'displayName': 'MATIC_USDT', 'state': 'OFFLINE', 'stateTime': 1758870221000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'matic', 'baseCurrencyPrecision': 6, 'baseCurrencyId': 2719, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 919, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9453, 'symbol': 'people_usdt', 'displayName': 'PEOPLE_USDT', 'state': 'ONLINE', 'stateTime': 1739356483000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'people', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 94, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 918, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9452, 'symbol': 'pnut_usdt', 'displayName': 'PNUT_USDT', 'state': 'ONLINE', 'stateTime': 1739356595000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'pnut', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2742, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 917, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9451, 'symbol': 'rvn_usdt', 'displayName': 'RVN_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'rvn', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 164, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 916, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9450, 'symbol': 'bome_usdt', 'displayName': 'BOME_USDT', 'state': 'ONLINE', 'stateTime': 1741181626000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'bome', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 137, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 915, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9447, 'symbol': 'pengu_usdt', 'displayName': 'PENGU_USDT', 'state': 'ONLINE', 'stateTime': 1739198539000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'pengu', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2736, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 912, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9446, 'symbol': 'bonk_usdt', 'displayName': 'BONK_USDT', 'state': 'ONLINE', 'stateTime': 1739198161000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'bonk', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 46, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 8, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 911, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9445, 'symbol': 'pepe_usdt', 'displayName': 'PEPE_USDT', 'state': 'ONLINE', 'stateTime': 1739356161000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'pepe', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 28, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 8, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 910, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9431, 'symbol': 'sol_usdt', 'displayName': 'SOL_USDT', 'state': 'ONLINE', 'stateTime': 1739066496000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sol', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 941, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 663, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9656, 'symbol': 'band_usdt', 'displayName': 'BAND_USDT', 'state': 'ONLINE', 'stateTime': 1753690757000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'band', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 163, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 181, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9655, 'symbol': 'qkc_usdt', 'displayName': 'QKC_USDT', 'state': 'ONLINE', 'stateTime': 1753690747000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'qkc', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 308, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 180, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9654, 'symbol': 'ankr_usdt', 'displayName': 'ANKR_USDT', 'state': 'ONLINE', 'stateTime': 1753690734000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ankr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 117, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 179, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9653, 'symbol': 'audio_usdt', 'displayName': 'AUDIO_USDT', 'state': 'ONLINE', 'stateTime': 1753690718000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'audio', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 346, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 178, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9652, 'symbol': 'alice_usdt', 'displayName': 'ALICE_USDT', 'state': 'ONLINE', 'stateTime': 1753690706000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'alice', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 229, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 177, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9651, 'symbol': 'nfp_usdt', 'displayName': 'NFP_USDT', 'state': 'ONLINE', 'stateTime': 1753690694000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'nfp', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 224, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 4, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 176, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9648, 'symbol': 'jst_usdt', 'displayName': 'JST_USDT', 'state': 'ONLINE', 'stateTime': 1753690646000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'jst', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 114, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 173, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9646, 'symbol': 'ilv_usdt', 'displayName': 'ILV_USDT', 'state': 'ONLINE', 'stateTime': 1753690607000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ilv', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 115, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 171, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9644, 'symbol': 'slp_usdt', 'displayName': 'SLP_USDT', 'state': 'ONLINE', 'stateTime': 1753690570000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'slp', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 375, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 169, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9642, 'symbol': 'agld_usdt', 'displayName': 'AGLD_USDT', 'state': 'ONLINE', 'stateTime': 1753690543000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'agld', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 9, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 167, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9640, 'symbol': 'hot_usdt', 'displayName': 'HOT_USDT', 'state': 'ONLINE', 'stateTime': 1753690514000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'hot', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 105, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 165, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9639, 'symbol': 'dodo_usdt', 'displayName': 'DODO_USDT', 'state': 'ONLINE', 'stateTime': 1753690489000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'dodo', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 227, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 164, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9638, 'symbol': 'cvx_usdt', 'displayName': 'CVX_USDT', 'state': 'ONLINE', 'stateTime': 1753690475000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cvx', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 159, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 163, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9637, 'symbol': 'storj_usdt', 'displayName': 'STORJ_USDT', 'state': 'ONLINE', 'stateTime': 1753690462000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'storj', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 281, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 162, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9636, 'symbol': 'id_usdt', 'displayName': 'ID_USDT', 'state': 'ONLINE', 'stateTime': 1753690448000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'id', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 153, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 161, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9635, 'symbol': 'yfi_usdt', 'displayName': 'YFI_USDT', 'state': 'ONLINE', 'stateTime': 1753690435000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'yfi', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 130, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 0, 'quantityPrecision': 5, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 160, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9634, 'symbol': 'g_usdt', 'displayName': 'G_USDT', 'state': 'ONLINE', 'stateTime': 1753690416000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'g', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2804, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 159, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9633, 'symbol': 'snx_usdt', 'displayName': 'SNX_USDT', 'state': 'ONLINE', 'stateTime': 1753690404000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'snx', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 144, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 158, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9631, 'symbol': 'glmr_usdt', 'displayName': 'GLMR_USDT', 'state': 'ONLINE', 'stateTime': 1753690311000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'glmr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 175, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 156, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9629, 'symbol': 'xtz_usdt', 'displayName': 'XTZ_USDT', 'state': 'ONLINE', 'stateTime': 1753690281000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'xtz', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 107, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 154, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9628, 'symbol': 'nexo_usdt', 'displayName': 'NEXO_USDT', 'state': 'ONLINE', 'stateTime': 1753690267000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'nexo', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 138, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 153, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9627, 'symbol': 'rpl_usdt', 'displayName': 'RPL_USDT', 'state': 'ONLINE', 'stateTime': 1753690253000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'rpl', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 108, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 152, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9626, 'symbol': 'egld_usdt', 'displayName': 'EGLD_USDT', 'state': 'ONLINE', 'stateTime': 1753690237000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'egld', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 80, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 151, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9625, 'symbol': 'kmno_usdt', 'displayName': 'KMNO_USDT', 'state': 'ONLINE', 'stateTime': 1753690218000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'kmno', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2803, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 150, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9624, 'symbol': 'acx_usdt', 'displayName': 'ACX_USDT', 'state': 'ONLINE', 'stateTime': 1753690190000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'acx', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2802, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 149, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9623, 'symbol': 'alt_usdt', 'displayName': 'ALT_USDT', 'state': 'ONLINE', 'stateTime': 1752892976000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'alt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 171, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 148, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9622, 'symbol': 'axl_usdt', 'displayName': 'AXL_USDT', 'state': 'ONLINE', 'stateTime': 1752893594000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'axl', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2801, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 147, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9621, 'symbol': 'atm_usdt', 'displayName': 'ATM_USDT', 'state': 'ONLINE', 'stateTime': 1752893574000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'atm', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 265, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 146, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9620, 'symbol': 'cos_usdt', 'displayName': 'COS_USDT', 'state': 'ONLINE', 'stateTime': 1752893551000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cos', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 329, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 145, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9619, 'symbol': 'tlm_usdt', 'displayName': 'TLM_USDT', 'state': 'ONLINE', 'stateTime': 1752893527000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'tlm', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 313, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 144, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9618, 'symbol': 'arpa_usdt', 'displayName': 'ARPA_USDT', 'state': 'ONLINE', 'stateTime': 1752893509000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'arpa', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 298, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 143, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9617, 'symbol': 'amp_usdt', 'displayName': 'AMP_USDT', 'state': 'ONLINE', 'stateTime': 1752893481000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'amp', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 170, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 142, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9616, 'symbol': 'ctk_usdt', 'displayName': 'CTK_USDT', 'state': 'ONLINE', 'stateTime': 1752893455000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ctk', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 208, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 141, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9615, 'symbol': 'nmr_usdt', 'displayName': 'NMR_USDT', 'state': 'ONLINE', 'stateTime': 1752893437000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'nmr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 176, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 140, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9613, 'symbol': 'aevo_usdt', 'displayName': 'AEVO_USDT', 'state': 'ONLINE', 'stateTime': 1752893391000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'aevo', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 96, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 138, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9612, 'symbol': 'pyr_usdt', 'displayName': 'PYR_USDT', 'state': 'ONLINE', 'stateTime': 1752893365000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'pyr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 212, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 137, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9611, 'symbol': 'tnsr_usdt', 'displayName': 'TNSR_USDT', 'state': 'ONLINE', 'stateTime': 1752893342000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'tnsr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 302, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 136, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9610, 'symbol': 'ygg_usdt', 'displayName': 'YGG_USDT', 'state': 'ONLINE', 'stateTime': 1752893320000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ygg', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 168, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 135, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9609, 'symbol': 'quick_usdt', 'displayName': 'QUICK_USDT', 'state': 'ONLINE', 'stateTime': 1752893296000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'quick', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 276, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 134, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9606, 'symbol': 'coti_usdt', 'displayName': 'COTI_USDT', 'state': 'ONLINE', 'stateTime': 1752893235000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'coti', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 277, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 131, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9605, 'symbol': 't_usdt', 'displayName': 'T_USDT', 'state': 'ONLINE', 'stateTime': 1752893216000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 't', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 158, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 130, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9603, 'symbol': 'dusk_usdt', 'displayName': 'DUSK_USDT', 'state': 'ONLINE', 'stateTime': 1752893179000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'dusk', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 177, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 128, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9602, 'symbol': 'blur_usdt', 'displayName': 'BLUR_USDT', 'state': 'ONLINE', 'stateTime': 1752893158000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'blur', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 97, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 127, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9601, 'symbol': 'awe_usdt', 'displayName': 'AWE_USDT', 'state': 'ONLINE', 'stateTime': 1752893138000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'awe', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2800, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 126, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9600, 'symbol': 'psg_usdt', 'displayName': 'PSG_USDT', 'state': 'ONLINE', 'stateTime': 1752893106000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'psg', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 419, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 125, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9599, 'symbol': 'ssv_usdt', 'displayName': 'SSV_USDT', 'state': 'ONLINE', 'stateTime': 1752893062000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ssv', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 120, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 124, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9598, 'symbol': 'hmstr_usdt', 'displayName': 'HMSTR_USDT', 'state': 'ONLINE', 'stateTime': 1752893044000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'hmstr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2799, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 7, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 123, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9597, 'symbol': 'tut_usdt', 'displayName': 'TUT_USDT', 'state': 'ONLINE', 'stateTime': 1752893025000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'tut', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2798, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 122, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9595, 'symbol': 'mana_usdt', 'displayName': 'MANA_USDT', 'state': 'ONLINE', 'stateTime': 1752892958000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'mana', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 140, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 120, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9594, 'symbol': 'cyber_usdt', 'displayName': 'CYBER_USDT', 'state': 'ONLINE', 'stateTime': 1752892935000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cyber', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 183, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 119, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9592, 'symbol': 'epic_usdt', 'displayName': 'EPIC_USDT', 'state': 'ONLINE', 'stateTime': 1752892892000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'epic', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2797, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 117, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9591, 'symbol': 'prom_usdt', 'displayName': 'PROM_USDT', 'state': 'ONLINE', 'stateTime': 1752892872000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'prom', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 291, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 116, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9590, 'symbol': 'mask_usdt', 'displayName': 'MASK_USDT', 'state': 'ONLINE', 'stateTime': 1752892840000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'mask', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 124, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 115, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9589, 'symbol': 'porto_usdt', 'displayName': 'PORTO_USDT', 'state': 'ONLINE', 'stateTime': 1752490633000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'porto', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 257, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 114, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9588, 'symbol': 'super_usdt', 'displayName': 'SUPER_USDT', 'state': 'ONLINE', 'stateTime': 1752490602000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'super', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 103, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 113, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9585, 'symbol': 'fida_usdt', 'displayName': 'FIDA_USDT', 'state': 'ONLINE', 'stateTime': 1752490501000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'fida', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 334, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 110, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9584, 'symbol': 'lazio_usdt', 'displayName': 'LAZIO_USDT', 'state': 'ONLINE', 'stateTime': 1752490482000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'lazio', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 258, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 109, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9583, 'symbol': 'mav_usdt', 'displayName': 'MAV_USDT', 'state': 'ONLINE', 'stateTime': 1752490464000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'mav', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 303, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 108, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9582, 'symbol': 'xai_usdt', 'displayName': 'XAI_USDT', 'state': 'ONLINE', 'stateTime': 1752490446000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'xai', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 198, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 107, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9580, 'symbol': 'cvc_usdt', 'displayName': 'CVC_USDT', 'state': 'ONLINE', 'stateTime': 1752490413000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cvc', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 202, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 106, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9581, 'symbol': 'ens_usdt', 'displayName': 'ENS_USDT', 'state': 'ONLINE', 'stateTime': 1752490429000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ens', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 77, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 105, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9579, 'symbol': '1inch_usdt', 'displayName': '1INCH_USDT', 'state': 'ONLINE', 'stateTime': 1752490376000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': '1inch', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2716, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 104, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9578, 'symbol': 'ach_usdt', 'displayName': 'ACH_USDT', 'state': 'OFFLINE', 'stateTime': 1754554272000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ach', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 149, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 103, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9577, 'symbol': 'og_usdt', 'displayName': 'OG_USDT', 'state': 'OFFLINE', 'stateTime': 1755524714000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'og', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 254, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 102, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9576, 'symbol': 'c98_usdt', 'displayName': 'C98_USDT', 'state': 'ONLINE', 'stateTime': 1752490325000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'c98', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 283, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 101, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9518, 'symbol': 'usdn_usdt', 'displayName': 'USDN_USDT', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'usdn', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2778, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 100, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9575, 'symbol': 'comp_usdt', 'displayName': 'COMP_USDT', 'state': 'ONLINE', 'stateTime': 1752490288000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'comp', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 99, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 100, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9434, 'symbol': 'dot_usdt', 'displayName': 'DOT_USDT', 'state': 'ONLINE', 'stateTime': 1739196088000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'dot', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 16, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 99, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9439, 'symbol': 'trx_usdt', 'displayName': 'TRX_USDT', 'state': 'ONLINE', 'stateTime': 1739066595000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'trx', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 73, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 99, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9573, 'symbol': 'lpt_usdt', 'displayName': 'LPT_USDT', 'state': 'ONLINE', 'stateTime': 1752490248000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'lpt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 62, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 98, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9572, 'symbol': 'osmo_usdt', 'displayName': 'OSMO_USDT', 'state': 'OFFLINE', 'stateTime': 1754502032000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'osmo', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 118, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 97, 'displayLevel': 'NONE', 'plates': [], 'filters': []}, {'id': 9571, 'symbol': 'loka_usdt', 'displayName': 'LOKA_USDT', 'state': 'OFFLINE', 'stateTime': 1754582093000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'loka', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 275, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 96, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9569, 'symbol': 'asr_usdt', 'displayName': 'ASR_USDT', 'state': 'ONLINE', 'stateTime': 1752490183000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'asr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 268, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 94, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9567, 'symbol': 'santos_usdt', 'displayName': 'SANTOS_USDT', 'state': 'ONLINE', 'stateTime': 1752490148000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'santos', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2794, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 92, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9566, 'symbol': 'bel_usdt', 'displayName': 'BEL_USDT', 'state': 'ONLINE', 'stateTime': 1752490127000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'bel', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 336, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 91, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9565, 'symbol': 'ondo_usdt', 'displayName': 'ONDO_USDT', 'state': 'ONLINE', 'stateTime': 1752490107000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ondo', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2747, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 90, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9564, 'symbol': 'usd1_usdt', 'displayName': 'USD1_USDT', 'state': 'ONLINE', 'stateTime': 1752490087000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'usd1', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2793, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 89, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9561, 'symbol': 'mbox_usdt', 'displayName': 'MBOX_USDT', 'state': 'ONLINE', 'stateTime': 1752489996000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'mbox', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 228, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 86, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9559, 'symbol': 'alpine_usdt', 'displayName': 'ALPINE_USDT', 'state': 'ONLINE', 'stateTime': 1752489918000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'alpine', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 243, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 84, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9558, 'symbol': 'uni_usdc', 'displayName': 'UNI_USDC', 'state': 'OFFLINE', 'stateTime': None, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'uni', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 27, 'quoteCurrency': 'usdc', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 2780, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 83, 'displayLevel': 'DIRECT', 'plates': [], 'filters': []}, {'id': 9557, 'symbol': 'usdc_usdt', 'displayName': 'USDC_USDT', 'state': 'ONLINE', 'stateTime': 1750421442000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'usdc', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2780, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 82, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9555, 'symbol': 'pha_usdt', 'displayName': 'PHA_USDT', 'state': 'ONLINE', 'stateTime': 1750421305000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'pha', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 188, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 80, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9554, 'symbol': 'pyth_usdt', 'displayName': 'PYTH_USDT', 'state': 'ONLINE', 'stateTime': 1750421251000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'pyth', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 67, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 79, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9553, 'symbol': 'cow_usdt', 'displayName': 'COW_USDT', 'state': 'ONLINE', 'stateTime': 1750421188000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cow', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2791, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 78, 'displayLevel': 'FULL', 'plates': [244], 'filters': []}, {'id': 9552, 'symbol': 'sxt_usdt', 'displayName': 'SXT_USDT', 'state': 'ONLINE', 'stateTime': 1750421132000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sxt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2790, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 77, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9551, 'symbol': 'orca_usdt', 'displayName': 'ORCA_USDT', 'state': 'ONLINE', 'stateTime': 1750421063000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'orca', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2789, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 76, 'displayLevel': 'FULL', 'plates': [244], 'filters': []}, {'id': 9550, 'symbol': 'mubarak_usdt', 'displayName': 'MUBARAK_USDT', 'state': 'ONLINE', 'stateTime': 1750421000000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'mubarak', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2788, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 75, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9486, 'symbol': 'qnt_usdt', 'displayName': 'QNT_USDT', 'state': 'ONLINE', 'stateTime': 1750420913000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'qnt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 74, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 74, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9549, 'symbol': 'cake_usdt', 'displayName': 'CAKE_USDT', 'state': 'ONLINE', 'stateTime': 1750420847000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cake', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 59, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 73, 'displayLevel': 'FULL', 'plates': [244], 'filters': []}, {'id': 9441, 'symbol': 'bch_usdt', 'displayName': 'BCH_USDT', 'state': 'ONLINE', 'stateTime': 1750420799000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'bch', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 18, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 1, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 72, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}, {'id': 9548, 'symbol': 'virtual_usdt', 'displayName': 'VIRTUAL_USDT', 'state': 'ONLINE', 'stateTime': 1750420411000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'virtual', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2787, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 71, 'displayLevel': 'FULL', 'plates': [246], 'filters': []}, {'id': 9547, 'symbol': 'trb_usdt', 'displayName': 'TRB_USDT', 'state': 'ONLINE', 'stateTime': 1750420326000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'trb', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 576, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 70, 'displayLevel': 'FULL', 'plates': [256], 'filters': []}, {'id': 9546, 'symbol': 'cgpt_usdt', 'displayName': 'CGPT_USDT', 'state': 'ONLINE', 'stateTime': 1748326687000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cgpt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2786, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 69, 'displayLevel': 'FULL', 'plates': [246], 'filters': []}, {'id': 9545, 'symbol': 'nxpc_usdt', 'displayName': 'NXPC_USDT', 'state': 'ONLINE', 'stateTime': 1747703729000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'nxpc', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2785, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 68, 'displayLevel': 'FULL', 'plates': [256], 'filters': []}, {'id': 9544, 'symbol': 'bigtime_usdt', 'displayName': 'BIGTIME_USDT', 'state': 'ONLINE', 'stateTime': 1746870683000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'bigtime', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 423, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 67, 'displayLevel': 'FULL', 'plates': [258], 'filters': []}, {'id': 9543, 'symbol': 'kernel_usdt', 'displayName': 'KERNEL_USDT', 'state': 'ONLINE', 'stateTime': 1746870591000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'kernel', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2784, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 66, 'displayLevel': 'FULL', 'plates': [244], 'filters': []}, {'id': 9542, 'symbol': 'hyper_usdt', 'displayName': 'HYPER_USDT', 'state': 'ONLINE', 'stateTime': 1746870446000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'hyper', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2783, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 65, 'displayLevel': 'FULL', 'plates': [256], 'filters': []}, {'id': 9540, 'symbol': 'sto_usdt', 'displayName': 'STO_USDT', 'state': 'ONLINE', 'stateTime': 1746869235000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sto', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2781, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 63, 'displayLevel': 'FULL', 'plates': [244], 'filters': []}, {'id': 9538, 'symbol': 'cfx_usdt', 'displayName': 'CFX_USDT', 'state': 'ONLINE', 'stateTime': 1746627343000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'cfx', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 135, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 61, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9537, 'symbol': 'ethfi_usdt', 'displayName': 'ETHFI_USDT', 'state': 'ONLINE', 'stateTime': 1746627078000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ethfi', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 160, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 60, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9536, 'symbol': 'arkm_usdt', 'displayName': 'ARKM_USDT', 'state': 'ONLINE', 'stateTime': 1746626795000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'arkm', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 85, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 59, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9535, 'symbol': 'rare_usdt', 'displayName': 'RARE_USDT', 'state': 'ONLINE', 'stateTime': 1746626722000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'rare', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 250, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 58, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9534, 'symbol': 'pendle_usdt', 'displayName': 'PENDLE_USDT', 'state': 'ONLINE', 'stateTime': 1746626617000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'pendle', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 134, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 57, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9533, 'symbol': 'zro_usdt', 'displayName': 'ZRO_USDT', 'state': 'ONLINE', 'stateTime': 1746626539000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'zro', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 78, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 56, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9532, 'symbol': 'api3_usdt', 'displayName': 'API3_USDT', 'state': 'ONLINE', 'stateTime': 1746626446000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'api3', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 185, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 55, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9531, 'symbol': 'bmt_usdt', 'displayName': 'BMT_USDT', 'state': 'ONLINE', 'stateTime': 1746626294000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'bmt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2777, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 54, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9541, 'symbol': 'sign_usdt', 'displayName': 'SIGN_USDT', 'state': 'ONLINE', 'stateTime': 1746870315000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sign', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2782, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 54, 'displayLevel': 'FULL', 'plates': [256], 'filters': []}, {'id': 9530, 'symbol': 'powr_usdt', 'displayName': 'POWR_USDT', 'state': 'ONLINE', 'stateTime': 1746287602000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'powr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 199, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 53, 'displayLevel': 'FULL', 'plates': [256], 'filters': []}, {'id': 9529, 'symbol': 'lqty_usdt', 'displayName': 'LQTY_USDT', 'state': 'ONLINE', 'stateTime': 1746287515000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'lqty', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 196, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 52, 'displayLevel': 'FULL', 'plates': [244], 'filters': []}, {'id': 9528, 'symbol': 'sun_usdt', 'displayName': 'SUN_USDT', 'state': 'ONLINE', 'stateTime': 1746287289000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sun', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2776, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 51, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9527, 'symbol': 'gmt_usdt', 'displayName': 'GMT_USDT', 'state': 'ONLINE', 'stateTime': 1746287226000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'gmt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 92, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 50, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9524, 'symbol': 'anime_usdt', 'displayName': 'ANIME_USDT', 'state': 'ONLINE', 'stateTime': 1746287019000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'anime', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2775, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 5, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 47, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9523, 'symbol': 'bera_usdt', 'displayName': 'BERA_USDT', 'state': 'ONLINE', 'stateTime': 1746286382000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'bera', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2765, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 3, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 46, 'displayLevel': 'FULL', 'plates': [257], 'filters': []}, {'id': 9522, 'symbol': 'tst_usdt', 'displayName': 'TST_USDT', 'state': 'ONLINE', 'stateTime': 1746286306000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'tst', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2774, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 45, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9521, 'symbol': 'kaito_usdt', 'displayName': 'KAITO_USDT', 'state': 'ONLINE', 'stateTime': 1747108499000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'kaito', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2773, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 44, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9520, 'symbol': 'gps_usdt', 'displayName': 'GPS_USDT', 'state': 'ONLINE', 'stateTime': 1746285861000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'gps', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2772, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 43, 'displayLevel': 'FULL', 'plates': [256], 'filters': []}, {'id': 9519, 'symbol': 'red_usdt', 'displayName': 'RED_USDT', 'state': 'ONLINE', 'stateTime': 1746285735000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'red', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2771, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 42, 'displayLevel': 'FULL', 'plates': [246], 'filters': []}, {'id': 9516, 'symbol': 'rsr_usdt', 'displayName': 'RSR_USDT', 'state': 'ONLINE', 'stateTime': 1741181923000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'rsr', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 169, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 6, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 41, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9515, 'symbol': 'w_usdt', 'displayName': 'W_USDT', 'state': 'ONLINE', 'stateTime': 1741181861000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'w', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 143, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 40, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9514, 'symbol': 'eigen_usdt', 'displayName': 'EIGEN_USDT', 'state': 'ONLINE', 'stateTime': 1741181826000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'eigen', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2770, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 39, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9513, 'symbol': 'glm_usdt', 'displayName': 'GLM_USDT', 'state': 'ONLINE', 'stateTime': 1741181789000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'glm', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 83, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 38, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9512, 'symbol': 'sushi_usdt', 'displayName': 'SUSHI_USDT', 'state': 'ONLINE', 'stateTime': 1741181738000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'sushi', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 2769, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 37, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9509, 'symbol': 'auction_usdt', 'displayName': 'AUCTION_USDT', 'state': 'ONLINE', 'stateTime': 1741181512000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'auction', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 201, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 2, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 35, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9510, 'symbol': 'io_usdt', 'displayName': 'IO_USDT', 'state': 'ONLINE', 'stateTime': 1741181590000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'io', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 422, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 35, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9508, 'symbol': 'ftt_usdt', 'displayName': 'FTT_USDT', 'state': 'ONLINE', 'stateTime': 1741181359000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'ftt', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 87, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 4, 'quantityPrecision': 2, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 30, 'displayLevel': 'FULL', 'plates': [], 'filters': []}, {'id': 9435, 'symbol': 'near_usdt', 'displayName': 'NEAR_USDT', 'state': 'ONLINE', 'stateTime': 1750420555000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'near', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 19, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 3, 'quantityPrecision': 1, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 10, 'displayLevel': 'FULL', 'plates': [257], 'filters': []}, {'id': 9433, 'symbol': 'shib_usdt', 'displayName': 'SHIB_USDT', 'state': 'ONLINE', 'stateTime': 1739066717000, 'tradingEnabled': True, 'openapiEnabled': False, 'nextStateTime': None, 'nextState': None, 'depthMergePrecision': 5, 'baseCurrency': 'shib', 'baseCurrencyPrecision': 8, 'baseCurrencyId': 15, 'quoteCurrency': 'usdt', 'quoteCurrencyPrecision': 8, 'quoteCurrencyId': 11, 'pricePrecision': 8, 'quantityPrecision': 0, 'orderTypes': [], 'timeInForces': [], 'displayWeight': 1, 'displayLevel': 'FULL', 'plates': [], 'filters': [{'filter': 'QUOTE_QTY', 'min': '5'}]}]}</msg>
<arg>交易对字典内容: ${symbol_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.635910" elapsed="0.002192"/>
</kw>
<arg>${data}</arg>
<doc>验证交易对字典的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:31.634538" elapsed="0.003613"/>
</kw>
<arg>isinstance($data, dict)</arg>
<arg>验证交易对字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:31.634274" elapsed="0.003919"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.639071" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.638638" elapsed="0.000458"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:31.639344" elapsed="0.000450"/>
</kw>
<msg time="2026-05-28T20:27:31.639874" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:31.639209" elapsed="0.000687"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.640107" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:31.639992" elapsed="0.000134"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.640374" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:31.640218" elapsed="0.000176"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.640616" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:31.640489" elapsed="0.000146"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.640936" level="INFO">${summary_content} = 🧪 测试过程: 获取市场交易对列表 | 📡 请求接口: /v1/spot/market/public/symbol | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:31.640727" elapsed="0.000231"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.641207" level="INFO">${final_summary} = 🧪 测试过程: 获取市场交易对列表 | 📡 请求接口: /v1/spot/market/public/symbol | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:31.641047" elapsed="0.000182"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.641424" level="INFO">🧪 测试过程: 获取市场交易对列表 | 📡 请求接口: /v1/spot/market/public/symbol | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.641318" elapsed="0.000140"/>
</kw>
<arg>获取市场交易对列表</arg>
<arg>/v1/spot/market/public/symbol</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:31.638351" elapsed="0.003148"/>
</kw>
<doc>验证市场交易对接口功能</doc>
<tag>market</tag>
<status status="PASS" start="2026-05-28T20:27:31.039216" elapsed="0.602380"/>
</test>
<doc>市场交易对接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:31.028249" elapsed="0.613560"/>
</suite>
<suite id="s1-s4-s2-s5" name="Market Time" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/mark/market_time.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.645565" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:31.645419" elapsed="0.000167"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.645795" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:31.645650" elapsed="0.000192"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.646030" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.645932" elapsed="0.000136"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:31.645861" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:31.645631" elapsed="0.000476"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.646614" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.646517" elapsed="0.000131"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.646831" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.646925" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.647018" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.647111" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.647202" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:31.646696" elapsed="0.000561"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.647577" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.647403" elapsed="0.000206"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.647863" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.647694" elapsed="0.000200"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.648146" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.647979" elapsed="0.000198"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.648424" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.648261" elapsed="0.000195"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.648676" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.648531" elapsed="0.000172"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.648930" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.648778" elapsed="0.000178"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.649194" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.649031" elapsed="0.000190"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.649451" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.649296" elapsed="0.000183"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.649713" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:31.649553" elapsed="0.000188"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:31.647277" elapsed="0.002489"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.649851" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.649934" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.650014" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.650094" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.650172" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.650250" elapsed="0.000011"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.650327" elapsed="0.000012"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.650403" elapsed="0.000011"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.650479" elapsed="0.000012"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:31.649782" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:31.646684" elapsed="0.003841"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.650691" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.650585" elapsed="0.000136"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:31.650985" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:31.650798" elapsed="0.000298"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:31.646326" elapsed="0.004815"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.651278" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:31.651216" elapsed="0.000091"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:31.645254" elapsed="0.006089"/>
</kw>
<test id="s1-s4-s2-s5-t1" name="获取市场服务器时间" line="7">
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:31.653259" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:31.652838" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:31.653702" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:31.653372" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:31.653361" elapsed="0.000393"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:31.653775" elapsed="0.000020"/>
</return>
<msg time="2026-05-28T20:27:31.653901" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:31.652346" elapsed="0.001571"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:32.047449" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/market/public/time 
 path_url=/v1/spot/market/public/time 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:32.047816" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/market/public/time 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:32 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '98ad5548cd05577184394fbf595ce428', 'X-Transparent': '00-98ad5548cd05577184394fbf595ce428-60a06901f7b8f3d2-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d41052b1d48e5-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":{"serverTime":1779971252031},"ts":1779971252031} 
 </msg>
<msg time="2026-05-28T20:27:32.047987" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:32.048441" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:31.654431" elapsed="0.394085"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:32.048775" elapsed="0.000166"/>
</return>
<msg time="2026-05-28T20:27:32.049345" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/spot/market/public/time</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:31.654002" elapsed="0.395402"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.052098" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:32.050874" elapsed="0.001369"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.053549" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:32.052518" elapsed="0.001084"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.054140" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.053861" elapsed="0.000368"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:32.050016" elapsed="0.004333"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.055611" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': {'serverTime': 1779971252031}, 'ts': 1779971252031}</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:32.054957" elapsed="0.000711"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:32.055903" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.056764" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.056510" elapsed="0.000341"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:32.054614" elapsed="0.002347"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.058240" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': {'serverTime': 1779971252031}, 'ts': 1779971252031}</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:32.057642" elapsed="0.000633"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.059086" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "serverTime": 1779971252031
  },
  "ts": 1779971252031
}</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:32.058414" elapsed="0.000716"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.059570" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": {
    "serverTime": 1779971252031
  },
  "ts": 1779971252031
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.059310" elapsed="0.000407"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:32.057274" elapsed="0.002600"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:32.060901" level="INFO">${data} = {'serverTime': 1779971252031}</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:32.060049" elapsed="0.000897"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (int, str, dict))</arg>
<arg>响应数据应该是整数、字符串或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.061140" elapsed="0.000430"/>
</kw>
<kw name="验证时间数据">
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($time_data, int)</arg>
<arg>验证时间戳格式</arg>
<arg>${time_data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.062315" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($time_data, str)</arg>
<arg>验证时间字符串格式</arg>
<arg>${time_data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.062766" elapsed="0.000203"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证时间字典结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($time_dict, dict)</arg>
<arg>时间数据应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.064172" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.064741" level="INFO">时间字典内容: {'serverTime': 1779971252031}</msg>
<arg>时间字典内容: ${time_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.064583" elapsed="0.000211"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:32.065359" level="FAIL">Dictionary does not contain key 'timestamp'.</msg>
<arg>${time_dict}</arg>
<arg>timestamp</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:32.065103" elapsed="0.000367">Dictionary does not contain key 'timestamp'.</status>
</kw>
<msg time="2026-05-28T20:27:32.065585" level="INFO">${has_timestamp} = False</msg>
<var>${has_timestamp}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${time_dict}</arg>
<arg>timestamp</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:32.064936" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_timestamp}</arg>
<arg>验证时间戳格式</arg>
<arg>${time_dict['timestamp']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.065769" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:32.066398" level="FAIL">Dictionary does not contain key 'time'.</msg>
<arg>${time_dict}</arg>
<arg>time</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:32.066196" elapsed="0.000275">Dictionary does not contain key 'time'.</status>
</kw>
<msg time="2026-05-28T20:27:32.066574" level="INFO">${has_time} = False</msg>
<var>${has_time}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${time_dict}</arg>
<arg>time</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:32.066041" elapsed="0.000560"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_time}</arg>
<arg>Log</arg>
<arg>时间字段: ${time_dict['time']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.066748" elapsed="0.000135"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${time_dict}</arg>
<arg>serverTime</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:32.067180" elapsed="0.000158"/>
</kw>
<msg time="2026-05-28T20:27:32.067432" level="INFO">${has_server_time} = True</msg>
<var>${has_server_time}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${time_dict}</arg>
<arg>serverTime</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:32.067020" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证时间戳格式">
<kw name="Should Be True" owner="BuiltIn">
<arg>${timestamp} &gt; 0</arg>
<arg>时间戳应该是正整数</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.068527" elapsed="0.000202"/>
</kw>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.069026" level="INFO">${timestamp_str} = 1779971252031</msg>
<var>${timestamp_str}</var>
<arg>${timestamp}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-05-28T20:27:32.068848" elapsed="0.000204"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.069280" level="INFO">Length is 13.</msg>
<msg time="2026-05-28T20:27:32.069352" level="INFO">${length} = 13</msg>
<var>${length}</var>
<arg>${timestamp_str}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:32.069164" elapsed="0.000213"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>${length} == 10 or ${length} == 13</arg>
<arg>时间戳长度应该是10位或13位</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.069487" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.070017" level="INFO">服务器时间戳: 1779971252031</msg>
<arg>服务器时间戳: ${timestamp}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.069892" elapsed="0.000168"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="转换毫秒时间戳">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.070912" level="INFO">${seconds} = 1779971252</msg>
<var>${seconds}</var>
<arg>${milliseconds} // 1000</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:32.070722" elapsed="0.000217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.071204" level="INFO">毫秒时间戳 1779971252031 对应秒级时间戳: 1779971252</msg>
<arg>毫秒时间戳 ${milliseconds} 对应秒级时间戳: ${seconds}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.071051" elapsed="0.000197"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.071608" level="INFO">${readable_time} = 2026-05-28 20:27:32</msg>
<var>${readable_time}</var>
<arg>__import__('datetime').datetime.fromtimestamp(${seconds}).strftime('%Y-%m-%d %H:%M:%S')</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:32.071359" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.071849" level="INFO">可读时间格式: 2026-05-28 20:27:32</msg>
<arg>可读时间格式: ${readable_time}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.071734" elapsed="0.000223"/>
</kw>
<arg>${timestamp}</arg>
<doc>转换毫秒级时间戳为可读格式</doc>
<status status="PASS" start="2026-05-28T20:27:32.070426" elapsed="0.001585"/>
</kw>
<arg>${length} == 13</arg>
<arg>转换毫秒时间戳</arg>
<arg>${timestamp}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.070172" elapsed="0.001883"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${length} == 10</arg>
<arg>转换秒级时间戳</arg>
<arg>${timestamp}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.072162" elapsed="0.000123"/>
</kw>
<arg>${time_dict['serverTime']}</arg>
<doc>验证时间戳的格式和有效性</doc>
<status status="PASS" start="2026-05-28T20:27:32.067834" elapsed="0.004506"/>
</kw>
<arg>${has_server_time}</arg>
<arg>验证时间戳格式</arg>
<arg>${time_dict['serverTime']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.067585" elapsed="0.004798"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:32.072776" level="FAIL">Dictionary does not contain key 'currentTime'.</msg>
<arg>${time_dict}</arg>
<arg>currentTime</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:32.072606" elapsed="0.000232">Dictionary does not contain key 'currentTime'.</status>
</kw>
<msg time="2026-05-28T20:27:32.072924" level="INFO">${has_current_time} = False</msg>
<var>${has_current_time}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${time_dict}</arg>
<arg>currentTime</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:32.072487" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_current_time}</arg>
<arg>Log</arg>
<arg>当前时间: ${time_dict['currentTime']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.073056" elapsed="0.000108"/>
</kw>
<kw name="Get Dictionary Keys" owner="Collections">
<msg time="2026-05-28T20:27:32.073419" level="INFO">${keys} = ['serverTime']</msg>
<var>${keys}</var>
<arg>${time_dict}</arg>
<doc>Returns keys of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-05-28T20:27:32.073266" elapsed="0.000176"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.073637" level="INFO">Length is 1.</msg>
<msg time="2026-05-28T20:27:32.073705" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>${keys}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:32.073538" elapsed="0.000187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.074147" level="INFO">时间字典包含 1 个字段: ['serverTime']</msg>
<arg>时间字典包含 ${count} 个字段: ${keys}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.073824" elapsed="0.000365"/>
</kw>
<arg>${time_data}</arg>
<doc>验证时间字典的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:32.063812" elapsed="0.010431"/>
</kw>
<arg>isinstance($time_data, dict)</arg>
<arg>验证时间字典结构</arg>
<arg>${time_data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:32.063108" elapsed="0.011180"/>
</kw>
<arg>${data}</arg>
<doc>验证时间数据的格式和有效性</doc>
<status status="PASS" start="2026-05-28T20:27:32.061833" elapsed="0.012507"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.075318" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:32.074850" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:32.075586" elapsed="0.000646"/>
</kw>
<msg time="2026-05-28T20:27:32.076361" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:32.075456" elapsed="0.000936"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.076761" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:32.076567" elapsed="0.000222"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.077153" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:32.076922" elapsed="0.000259"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.077497" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:32.077312" elapsed="0.000212"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.077946" level="INFO">${summary_content} = 🧪 测试过程: 获取市场服务器时间 | 📡 请求接口: /v1/spot/market/public/time | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:32.077646" elapsed="0.000331"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.078323" level="INFO">${final_summary} = 🧪 测试过程: 获取市场服务器时间 | 📡 请求接口: /v1/spot/market/public/time | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:32.078103" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.078612" level="INFO">🧪 测试过程: 获取市场服务器时间 | 📡 请求接口: /v1/spot/market/public/time | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.078475" elapsed="0.000184"/>
</kw>
<arg>获取市场服务器时间</arg>
<arg>/v1/spot/market/public/time</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:32.074523" elapsed="0.004198"/>
</kw>
<doc>验证市场服务器时间接口功能</doc>
<tag>market</tag>
<status status="PASS" start="2026-05-28T20:27:31.651384" elapsed="0.427529"/>
</test>
<doc>市场服务器时间接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:31.642529" elapsed="0.436718"/>
</suite>
<suite id="s1-s4-s2-s6" name="Market Top Symbol" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/mark/market_top_symbol.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.084182" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:32.083998" elapsed="0.000210"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.084470" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:32.084292" elapsed="0.000226"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.084743" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.084626" elapsed="0.000156"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:32.084540" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:32.084268" elapsed="0.000560"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.085589" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.085471" elapsed="0.000159"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.085839" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.085952" elapsed="0.000017"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.086062" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.086166" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.086269" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:32.085690" elapsed="0.000624"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.086680" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.086476" elapsed="0.000243"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.087004" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.086815" elapsed="0.000225"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.087322" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.087137" elapsed="0.000221"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.087651" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.087455" elapsed="0.000231"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.087983" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.087783" elapsed="0.000236"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.088307" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.088115" elapsed="0.000227"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.088624" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.088438" elapsed="0.000217"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.088916" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.088740" elapsed="0.000207"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.089211" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.089031" elapsed="0.000210"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:32.086334" elapsed="0.002934"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.089364" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.089459" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.089550" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.089639" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.089730" elapsed="0.000013"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.089844" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.089936" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.090026" elapsed="0.000014"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.090115" elapsed="0.000013"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:32.089287" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:32.085674" elapsed="0.004493"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.090359" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.090236" elapsed="0.000158"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:32.090715" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:32.090481" elapsed="0.000397"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:32.085082" elapsed="0.005848"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.091084" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.091014" elapsed="0.000103"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:32.083780" elapsed="0.007378"/>
</kw>
<test id="s1-s4-s2-s6-t1" name="获取热门市场排行榜" line="7">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.092328" level="INFO">&amp;{params} = { marketTopType=HOT }</msg>
<var>&amp;{params}</var>
<arg>marketTopType=HOT</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:32.092156" elapsed="0.000194"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.093648" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:32.093132" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.094179" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:32.093768" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:32.093753" elapsed="0.000491"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:32.094270" elapsed="0.000030"/>
</return>
<msg time="2026-05-28T20:27:32.094433" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:32.092506" elapsed="0.001949"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:32.573891" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/market/public/top/market-top-symbol?marketTopType=HOT 
 path_url=/v1/spot/market/public/top/market-top-symbol?marketTopType=HOT 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:32.574255" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/market/public/top/market-top-symbol?marketTopType=HOT 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:32 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '6e41c39aa545d16fce37a00cf2e5887e', 'X-Transparent': '00-6e41c39aa545d16fce37a00cf2e5887e-047dade611112e88-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d41086a83c764-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":[{"id":172,"marketTopId":77,"symbolId":614,"symbol":"btc_usdt","sort":1,"startTime":1779033600000,"endTime":1798646400000},{"id":173,"marketTopId":77,"symbolId":616,"symbol":"eth_usdt","sort":2,"startTime":1779033600000,"endTime":1798646400000},{"id":174,"marketTopId":77,"symbolId":9517,"symbol":"btx_usdt","sort":3,"startTime":1779033600000,"endTime":1798646400000},{"id":171,"marketTopId":77,"symbolId":9431,"symbol":"sol_usdt","sort":4,"startTime":1779033600000,"endTime":1798646400000},{"id":175,"marketTopId":77,"symbolId":9437,"symbol":"doge_usdt","sort":5,"startTime":1779033600000,"endTime":1798646400000},{"id":177,"marketTopId":77,"symbolId":9438,"symbol":"bnb_usdt","sort":6,"startTime":1779033600000,"endTime":1798646400000}],"ts":1779971252557} 
 </msg>
<msg time="2026-05-28T20:27:32.574436" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:32.574954" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:32.094892" elapsed="0.480128"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:32.575244" elapsed="0.000119"/>
</return>
<msg time="2026-05-28T20:27:32.575726" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/spot/market/public/top/market-top-symbol</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:32.094566" elapsed="0.481217"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.578406" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:32.577161" elapsed="0.001414"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.579969" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:32.578895" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.580530" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.580280" elapsed="0.000318"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:32.576339" elapsed="0.004360"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.582403" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': [{'id': 172, 'marketTopId': 77, 'symbolId': 614, 'symbol': 'btc_usdt', 'sort': 1, 'startTime': 1779033600000, 'endTime': 1798646400000}, {'id': 173...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:32.581481" elapsed="0.000966"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:32.582631" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.583271" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.583088" elapsed="0.000731"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:32.580985" elapsed="0.002921"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.585275" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': [{'id': 172, 'marketTopId': 77, 'symbolId': 614, 'symbol': 'btc_usdt', 'sort': 1, 'startTime': 1779033600000, 'endTime': 1798646400000}, {'id': 173...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:32.584581" elapsed="0.000732"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.586136" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": [
    {
      "id": 172,
      "marketTopId": 77,
      "symbolId": 614,
      "symbol": "btc_usdt",
      "sort": 1,
      "startTime": 1...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:32.585463" elapsed="0.000705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.586528" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": [
    {
      "id": 172,
      "marketTopId": 77,
      "symbolId": 614,
      "symbol": "btc_usdt",
      "sort": 1,
      "startTime": 1779033600000,
      "endTime": 1798646400000
    },
    {
      "id": 173,
      "marketTopId": 77,
      "symbolId": 616,
      "symbol": "eth_usdt",
      "sort": 2,
      "startTime": 1779033600000,
      "endTime": 1798646400000
    },
    {
      "id": 174,
      "marketTopId": 77,
      "symbolId": 9517,
      "symbol": "btx_usdt",
      "sort": 3,
      "startTime": 1779033600000,
      "endTime": 1798646400000
    },
    {
      "id": 171,
      "marketTopId": 77,
      "symbolId": 9431,
      "symbol": "sol_usdt",
      "sort": 4,
      "startTime": 1779033600000,
      "endTime": 1798646400000
    },
    {
      "id": 175,
      "marketTopId": 77,
      "symbolId": 9437,
      "symbol": "doge_usdt",
      "sort": 5,
      "startTime": 1779033600000,
      "endTime": 1798646400000
    },
    {
      "id": 177,
      "marketTopId": 77,
      "symbolId": 9438,
      "symbol": "bnb_usdt",
      "sort": 6,
      "startTime": 1779033600000,
      "endTime": 1798646400000
    }
  ],
  "ts": 1779971252557
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.586309" elapsed="0.000384"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:32.584144" elapsed="0.002622"/>
</kw>
<doc>验证热门市场排行榜接口功能</doc>
<tag>market</tag>
<status status="PASS" start="2026-05-28T20:27:32.091211" elapsed="0.495758"/>
</test>
<doc>热门市场排行榜接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:32.080356" elapsed="0.507114"/>
</suite>
<suite id="s1-s4-s2-s7" name="Market Trade Recent" source="/Users/lihu/.jenkins/workspace/bitradex-api-automation/tests/spot/mark/market_trade_recent.robot">
<kw name="测试环境初始化" owner="common" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.594083" level="INFO">${cli_env} = prod</msg>
<var>${cli_env}</var>
<arg>\${TEST_ENV}</arg>
<arg>${env}</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-05-28T20:27:32.593886" elapsed="0.000223"/>
</kw>
<if>
<branch type="IF" condition="'${cli_env}' == '${env}'">
<kw name="Log" owner="BuiltIn">
<arg>未检测到命令行TEST_ENV变量，使用默认值: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.594425" elapsed="0.000016"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:32.594207" elapsed="0.000268"/>
</branch>
<branch type="ELSE">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.594712" level="INFO">检测到命令行TEST_ENV变量: prod</msg>
<arg>检测到命令行TEST_ENV变量: ${cli_env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.594592" elapsed="0.000161"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:32.594509" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:32.594178" elapsed="0.000676"/>
</if>
<kw name="设置测试环境" owner="common">
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.595700" level="INFO">设置环境: prod</msg>
<arg>设置环境: ${env}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.595593" elapsed="0.000151"/>
</kw>
<if>
<branch type="IF" condition="'${env}' == 'test'">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.595976" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.596084" elapsed="0.000015"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.596191" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>api.example.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.596305" elapsed="0.000016"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.596412" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:32.595807" elapsed="0.000660"/>
</branch>
<branch type="ELSE IF" condition="'${env}' == 'prod'">
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.596865" level="INFO">${BASE_URL} = https://app.bitradex.mobi</msg>
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.596625" elapsed="0.000278"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.597213" level="INFO">${ENV_NAME} = 生产环境</msg>
<arg>${ENV_NAME}</arg>
<arg>生产环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.596996" elapsed="0.000253"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.597533" level="INFO">${TIMEOUT} = 30</msg>
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.597343" elapsed="0.000225"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.597959" level="INFO">${HOST_NAME} = app.bitradex.mobi</msg>
<arg>${HOST_NAME}</arg>
<arg>app.bitradex.mobi</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.597669" elapsed="0.000355"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.598435" level="INFO">${APP_PREFIX} = Prod</msg>
<arg>${APP_PREFIX}</arg>
<arg>Prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.598174" elapsed="0.000306"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.598846" level="INFO">${CLIENT_CODE} = 9F387CCE-760C-4AED-80BB-787B82D2C94D</msg>
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.598603" elapsed="0.000288"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.599259" level="INFO">${DEFAULT_APP_VERSION} = 1.1.9</msg>
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.1.9</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.599010" elapsed="0.000293"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.599673" level="INFO">${DEFAULT_BUILD_CODE} = 7032</msg>
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7032</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.599421" elapsed="0.000295"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.600097" level="INFO">${DEFAULT_APP_CHANNEL} = ios-prod</msg>
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-prod</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="PASS" start="2026-05-28T20:27:32.599835" elapsed="0.000306"/>
</kw>
<status status="PASS" start="2026-05-28T20:27:32.596491" elapsed="0.003695"/>
</branch>
<branch type="ELSE">
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${BASE_URL}</arg>
<arg>https://app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.600336" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${ENV_NAME}</arg>
<arg>BitRadeX测试环境</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.600471" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${TIMEOUT}</arg>
<arg>30</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.600605" elapsed="0.000022"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${HOST_NAME}</arg>
<arg>app.bitradex-test.com</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.600734" elapsed="0.000023"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${APP_PREFIX}</arg>
<arg>Test</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.600866" elapsed="0.000020"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${CLIENT_CODE}</arg>
<arg>9F387CCE-760C-4AED-80BB-787B82D2C94D</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.600988" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_VERSION}</arg>
<arg>1.2.0</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.601110" elapsed="0.000019"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_BUILD_CODE}</arg>
<arg>7034</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.601230" elapsed="0.000018"/>
</kw>
<kw name="Set Global Variable" owner="BuiltIn">
<arg>${DEFAULT_APP_CHANNEL}</arg>
<arg>ios-test-flight</arg>
<doc>Makes a variable available globally in all tests and suites.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.601348" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:32.600217" elapsed="0.001186"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:32.595791" elapsed="0.005636"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.601718" level="INFO">已设置测试环境: 生产环境 (https://app.bitradex.mobi)</msg>
<arg>已设置测试环境: ${ENV_NAME} (${BASE_URL})</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.601531" elapsed="0.000238"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:32.602187" level="INFO">Creating Session using : alias=api_session, url=https://app.bitradex.mobi, headers={},                     cookies={}, auth=None, timeout=30, proxies=None, verify=False,                     debug=1 </msg>
<arg>api_session</arg>
<arg>${BASE_URL}</arg>
<arg>timeout=${TIMEOUT}</arg>
<arg>debug=1</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-05-28T20:27:32.601893" elapsed="0.000473"/>
</kw>
<arg>${cli_env}</arg>
<doc>设置测试环境，支持多环境配置</doc>
<status status="PASS" start="2026-05-28T20:27:32.595342" elapsed="0.007095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.602621" level="INFO">测试环境初始化完成</msg>
<arg>测试环境初始化完成</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:32.602537" elapsed="0.000123"/>
</kw>
<doc>初始化测试环境，设置默认配置</doc>
<status status="PASS" start="2026-05-28T20:27:32.593651" elapsed="0.009058"/>
</kw>
<test id="s1-s4-s2-s7-t1" name="获取最近交易记录" line="7">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.604026" level="INFO">&amp;{params} = { symbol=btc_usdt | limit=30 }</msg>
<var>&amp;{params}</var>
<arg>symbol=btc_usdt</arg>
<arg>limit=30</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:32.603831" elapsed="0.000219"/>
</kw>
<kw name="获取统一请求头" owner="common">
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-05-28T20:27:32.605573" level="INFO">&amp;{headers} = { user-agent=BitradeX-Prod 1.1.9(7032);iPhone | app-version-name=1.1.9 | client-lang=cn | check_agent=app_traffic | api-version=1 | content-type=application/json | app-version-code=7032 | app-channel=...</msg>
<var>&amp;{headers}</var>
<arg>user-agent=BitradeX-${APP_PREFIX} ${app_version}(${build_code});iPhone</arg>
<arg>app-version-name=${app_version}</arg>
<arg>client-lang=cn</arg>
<arg>check_agent=app_traffic</arg>
<arg>api-version=1</arg>
<arg>content-type=application/json</arg>
<arg>app-version-code=${build_code}</arg>
<arg>app-channel=${app_channel}</arg>
<arg>app-os=ios</arg>
<arg>platform=USER</arg>
<arg>client-code=${CLIENT_CODE}</arg>
<arg>client-device-name=iPhone</arg>
<arg>accept=application/json, text/plain, */*</arg>
<arg>lang=cn</arg>
<arg>accept-language=zh_CN</arg>
<arg>platform-account-id=9</arg>
<arg>tenant-id=1</arg>
<arg>device=app</arg>
<arg>host=${HOST_NAME}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-05-28T20:27:32.604957" elapsed="0.000643"/>
</kw>
<if>
<branch type="IF" condition="'${token}' != '${EMPTY}'">
<kw name="Set To Dictionary" owner="Collections">
<arg>${headers}</arg>
<arg>authorization=Bearer ${token}</arg>
<arg>token=${token}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-05-28T20:27:32.606197" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-05-28T20:27:32.605717" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-05-28T20:27:32.605699" elapsed="0.000573"/>
</if>
<return>
<value>&amp;{headers}</value>
<status status="PASS" start="2026-05-28T20:27:32.606301" elapsed="0.000028"/>
</return>
<msg time="2026-05-28T20:27:32.606497" level="INFO">${headers} = {'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-...</msg>
<var>${headers}</var>
<doc>获取统一的应用请求头配置</doc>
<status status="PASS" start="2026-05-28T20:27:32.604242" elapsed="0.002279"/>
</kw>
<kw name="发送GET请求" owner="common">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-05-28T20:27:33.093431" level="INFO">GET Request : url=https://app.bitradex.mobi/v1/spot/market/public/trade/recent?symbol=btc_usdt&amp;limit=30 
 path_url=/v1/spot/market/public/trade/recent?symbol=btc_usdt&amp;limit=30 
 headers={'user-agent': 'BitradeX-Prod 1.1.9(7032);iPhone', 'Accept-Encoding': 'gzip, deflate', 'accept': 'application/json, text/plain, */*', 'Connection': 'keep-alive', 'app-version-name': '1.1.9', 'client-lang': 'cn', 'check_agent': 'app_traffic', 'api-version': '1', 'content-type': 'application/json', 'app-version-code': '7032', 'app-channel': 'ios-prod', 'app-os': 'ios', 'platform': 'USER', 'client-code': '9F387CCE-760C-4AED-80BB-787B82D2C94D', 'client-device-name': 'iPhone', 'lang': 'cn', 'accept-language': 'zh_CN', 'platform-account-id': '9', 'tenant-id': '1', 'device': 'app', 'host': 'app.bitradex.mobi'} 
 body=None 
 </msg>
<msg time="2026-05-28T20:27:33.093831" level="INFO">GET Response : url=https://app.bitradex.mobi/v1/spot/market/public/trade/recent?symbol=btc_usdt&amp;limit=30 
 status=200, reason=OK 
 headers={'Date': 'Thu, 28 May 2026 12:27:33 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Origin, Access-Control-Request-Method, Access-Control-Request-Headers', 'X-Forwarded-For': '129.227.236.93', 'X-Trace-ID': '077736590b237c272c675b43f33d054e', 'X-Transparent': '00-077736590b237c272c675b43f33d054e-95311580f7b7b6a4-01', 'cf-cache-status': 'DYNAMIC', 'Content-Encoding': 'gzip', 'Server': 'cloudflare', 'CF-RAY': 'a02d410bab3031a1-NRT'} 
 body={"code":0,"msg":"success","msgInfo":[],"data":[{"i":630274921169404672,"t":1779971251214,"p":"73310.10","q":"0.00380","v":"278.57838","b":false},{"i":630274918611055872,"t":1779971250711,"p":"73310.10","q":"0.00461","v":"337.959561","b":false},{"i":630274915771676928,"t":1779971249944,"p":"73310.10","q":"0.00491","v":"359.952591","b":false},{"i":630274914022310656,"t":1779971249534,"p":"73310.11","q":"0.00452","v":"331.3616972","b":true},{"i":630274910893359872,"t":1779971248778,"p":"73310.10","q":"0.00507","v":"371.682207","b":false},{"i":630274907927986944,"t":1779971248048,"p":"73310.10","q":"0.00377","v":"276.379077","b":false},{"i":630274905210419456,"t":1779971247382,"p":"73310.10","q":"0.00439","v":"321.831339","b":false},{"i":630274901443592960,"t":1779971246561,"p":"73310.10","q":"0.00352","v":"258.051552","b":false},{"i":630274898277364288,"t":1779971245812,"p":"73310.11","q":"0.00252","v":"184.7414772","b":true},{"i":630274896574476864,"t":1779971245424,"p":"73310.10","q":"0.00335","v":"245.588835","b":false},{"i":630274893663629888,"t":1779971244657,"p":"73310.10","q":"0.00258","v":"189.140058","b":false},{"i":630274892190843136,"t":1779971244283,"p":"73310.10","q":"0.00365","v":"267.581865","b":false},{"i":630274889330619648,"t":1779971243670,"p":"73310.10","q":"0.00341","v":"249.987441","b":false},{"i":630274887434794240,"t":1779971243263,"p":"73310.11","q":"0.00342","v":"250.7205762","b":true},{"i":630274885887096064,"t":1779971242887,"p":"73310.10","q":"0.00378","v":"277.112178","b":false},{"i":630274882770728192,"t":1779971242107,"p":"73310.10","q":"0.00303","v":"222.129603","b":false},{"i":630274881202058496,"t":1779971241720,"p":"73310.10","q":"0.00296","v":"216.997896","b":false},{"i":630274877636900096,"t":1779971240837,"p":"73310.10","q":"0.00331","v":"242.656431","b":false},{"i":630274875061305600,"t":1779971240217,"p":"73310.11","q":"0.00354","v":"259.5177894","b":true},{"i":630274873022989056,"t":1779971239818,"p":"73310.11","q":"0.00407","v":"298.3721477","b":true},{"i":630274869432841472,"t":1779971238932,"p":"73310.10","q":"0.00276","v":"202.335876","b":false},{"i":630274867255821056,"t":1779971238393,"p":"73310.10","q":"0.00352","v":"258.051552","b":false},{"i":630274864307566848,"t":1779971237654,"p":"73310.11","q":"0.00412","v":"302.0376532","b":true},{"i":630274862201861376,"t":1779971237152,"p":"73310.10","q":"0.00306","v":"224.328906","b":false},{"i":630274859655627008,"t":1779971236634,"p":"73310.11","q":"0.00257","v":"188.4069827","b":true},{"i":630274856031863552,"t":1779971235725,"p":"73310.10","q":"0.00297","v":"217.730997","b":false},{"i":630274853989414144,"t":1779971235219,"p":"73310.10","q":"0.00370","v":"271.24737","b":false},{"i":630274851187327232,"t":1779971234603,"p":"73309.42","q":"0.00351","v":"257.3160642","b":false},{"i":630274849501217024,"t":1779971234219,"p":"73309.42","q":"0.00268","v":"196.4692456","b":false},{"i":630274846103830784,"t":1779971233297,"p":"73308.97","q":"0.00387","v":"283.7057139","b":true}],"ts":1779971253079} 
 </msg>
<msg time="2026-05-28T20:27:33.094191" level="INFO">/Users/lihu/Library/Python/3.9/lib/python/site-packages/urllib3/connectionpool.py:1064: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
  warnings.warn(</msg>
<msg time="2026-05-28T20:27:33.094579" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>api_session</arg>
<arg>${endpoint}</arg>
<arg>params=${params}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-05-28T20:27:32.607034" elapsed="0.487607"/>
</kw>
<return>
<value>${response}</value>
<status status="PASS" start="2026-05-28T20:27:33.094869" elapsed="0.000128"/>
</return>
<msg time="2026-05-28T20:27:33.095368" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>/v1/spot/market/public/trade/recent</arg>
<arg>params=&amp;{params}</arg>
<arg>headers=${headers}</arg>
<doc>发送GET请求</doc>
<status status="PASS" start="2026-05-28T20:27:32.606652" elapsed="0.488770"/>
</kw>
<kw name="验证接口响应成功" owner="common">
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.098117" level="INFO">Argument types are:
&lt;class 'int'&gt;
&lt;class 'str'&gt;</msg>
<arg>${response.status_code}</arg>
<arg>200</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="PASS" start="2026-05-28T20:27:33.096905" elapsed="0.001353"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.099583" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:33.098544" elapsed="0.001093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.100181" level="INFO">接口响应成功，状态码: 200</msg>
<arg>接口响应成功，状态码: ${status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.099894" elapsed="0.000382"/>
</kw>
<arg>${response}</arg>
<doc>验证接口响应状态码为200</doc>
<status status="PASS" start="2026-05-28T20:27:33.096017" elapsed="0.004378"/>
</kw>
<kw name="验证响应包含字段" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.103262" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': [{'i': 630274921169404672, 't': 1779971251214, 'p': '73310.10', 'q': '0.00380', 'v': '278.57838', 'b': False}, {'i': 630274918611055872, 't': 17799...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:33.101942" elapsed="0.001382"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${json_data}</arg>
<arg>${field_name}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="PASS" start="2026-05-28T20:27:33.103554" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.104199" level="INFO">响应包含字段: data</msg>
<arg>响应包含字段: ${field_name}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.104011" elapsed="0.000252"/>
</kw>
<arg>${response}</arg>
<arg>data</arg>
<doc>验证响应JSON包含指定字段</doc>
<status status="PASS" start="2026-05-28T20:27:33.100759" elapsed="0.003590"/>
</kw>
<kw name="完整输出JSON响应" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.105937" level="INFO">${json_data} = {'code': 0, 'msg': 'success', 'msgInfo': [], 'data': [{'i': 630274921169404672, 't': 1779971251214, 'p': '73310.10', 'q': '0.00380', 'v': '278.57838', 'b': False}, {'i': 630274918611055872, 't': 17799...</msg>
<var>${json_data}</var>
<arg>${response.json()}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:33.105022" elapsed="0.000961"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.107277" level="INFO">${json_str} = {
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": [
    {
      "i": 630274921169404672,
      "t": 1779971251214,
      "p": "73310.10",
      "q": "0.00380",
      "v": "278.57838",
    ...</msg>
<var>${json_str}</var>
<arg>json.dumps($json_data, ensure_ascii=False, indent=2)</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-05-28T20:27:33.106157" elapsed="0.001234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.107861" level="INFO">{
  "code": 0,
  "msg": "success",
  "msgInfo": [],
  "data": [
    {
      "i": 630274921169404672,
      "t": 1779971251214,
      "p": "73310.10",
      "q": "0.00380",
      "v": "278.57838",
      "b": false
    },
    {
      "i": 630274918611055872,
      "t": 1779971250711,
      "p": "73310.10",
      "q": "0.00461",
      "v": "337.959561",
      "b": false
    },
    {
      "i": 630274915771676928,
      "t": 1779971249944,
      "p": "73310.10",
      "q": "0.00491",
      "v": "359.952591",
      "b": false
    },
    {
      "i": 630274914022310656,
      "t": 1779971249534,
      "p": "73310.11",
      "q": "0.00452",
      "v": "331.3616972",
      "b": true
    },
    {
      "i": 630274910893359872,
      "t": 1779971248778,
      "p": "73310.10",
      "q": "0.00507",
      "v": "371.682207",
      "b": false
    },
    {
      "i": 630274907927986944,
      "t": 1779971248048,
      "p": "73310.10",
      "q": "0.00377",
      "v": "276.379077",
      "b": false
    },
    {
      "i": 630274905210419456,
      "t": 1779971247382,
      "p": "73310.10",
      "q": "0.00439",
      "v": "321.831339",
      "b": false
    },
    {
      "i": 630274901443592960,
      "t": 1779971246561,
      "p": "73310.10",
      "q": "0.00352",
      "v": "258.051552",
      "b": false
    },
    {
      "i": 630274898277364288,
      "t": 1779971245812,
      "p": "73310.11",
      "q": "0.00252",
      "v": "184.7414772",
      "b": true
    },
    {
      "i": 630274896574476864,
      "t": 1779971245424,
      "p": "73310.10",
      "q": "0.00335",
      "v": "245.588835",
      "b": false
    },
    {
      "i": 630274893663629888,
      "t": 1779971244657,
      "p": "73310.10",
      "q": "0.00258",
      "v": "189.140058",
      "b": false
    },
    {
      "i": 630274892190843136,
      "t": 1779971244283,
      "p": "73310.10",
      "q": "0.00365",
      "v": "267.581865",
      "b": false
    },
    {
      "i": 630274889330619648,
      "t": 1779971243670,
      "p": "73310.10",
      "q": "0.00341",
      "v": "249.987441",
      "b": false
    },
    {
      "i": 630274887434794240,
      "t": 1779971243263,
      "p": "73310.11",
      "q": "0.00342",
      "v": "250.7205762",
      "b": true
    },
    {
      "i": 630274885887096064,
      "t": 1779971242887,
      "p": "73310.10",
      "q": "0.00378",
      "v": "277.112178",
      "b": false
    },
    {
      "i": 630274882770728192,
      "t": 1779971242107,
      "p": "73310.10",
      "q": "0.00303",
      "v": "222.129603",
      "b": false
    },
    {
      "i": 630274881202058496,
      "t": 1779971241720,
      "p": "73310.10",
      "q": "0.00296",
      "v": "216.997896",
      "b": false
    },
    {
      "i": 630274877636900096,
      "t": 1779971240837,
      "p": "73310.10",
      "q": "0.00331",
      "v": "242.656431",
      "b": false
    },
    {
      "i": 630274875061305600,
      "t": 1779971240217,
      "p": "73310.11",
      "q": "0.00354",
      "v": "259.5177894",
      "b": true
    },
    {
      "i": 630274873022989056,
      "t": 1779971239818,
      "p": "73310.11",
      "q": "0.00407",
      "v": "298.3721477",
      "b": true
    },
    {
      "i": 630274869432841472,
      "t": 1779971238932,
      "p": "73310.10",
      "q": "0.00276",
      "v": "202.335876",
      "b": false
    },
    {
      "i": 630274867255821056,
      "t": 1779971238393,
      "p": "73310.10",
      "q": "0.00352",
      "v": "258.051552",
      "b": false
    },
    {
      "i": 630274864307566848,
      "t": 1779971237654,
      "p": "73310.11",
      "q": "0.00412",
      "v": "302.0376532",
      "b": true
    },
    {
      "i": 630274862201861376,
      "t": 1779971237152,
      "p": "73310.10",
      "q": "0.00306",
      "v": "224.328906",
      "b": false
    },
    {
      "i": 630274859655627008,
      "t": 1779971236634,
      "p": "73310.11",
      "q": "0.00257",
      "v": "188.4069827",
      "b": true
    },
    {
      "i": 630274856031863552,
      "t": 1779971235725,
      "p": "73310.10",
      "q": "0.00297",
      "v": "217.730997",
      "b": false
    },
    {
      "i": 630274853989414144,
      "t": 1779971235219,
      "p": "73310.10",
      "q": "0.00370",
      "v": "271.24737",
      "b": false
    },
    {
      "i": 630274851187327232,
      "t": 1779971234603,
      "p": "73309.42",
      "q": "0.00351",
      "v": "257.3160642",
      "b": false
    },
    {
      "i": 630274849501217024,
      "t": 1779971234219,
      "p": "73309.42",
      "q": "0.00268",
      "v": "196.4692456",
      "b": false
    },
    {
      "i": 630274846103830784,
      "t": 1779971233297,
      "p": "73308.97",
      "q": "0.00387",
      "v": "283.7057139",
      "b": true
    }
  ],
  "ts": 1779971253079
}</msg>
<arg>${json_str}</arg>
<arg>console=yes</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.107575" elapsed="0.000445"/>
</kw>
<arg>${response}</arg>
<doc>输出纯净JSON数据</doc>
<status status="PASS" start="2026-05-28T20:27:33.104597" elapsed="0.003506"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-05-28T20:27:33.109085" level="INFO">${data} = [{'i': 630274921169404672, 't': 1779971251214, 'p': '73310.10', 'q': '0.00380', 'v': '278.57838', 'b': False}, {'i': 630274918611055872, 't': 1779971250711, 'p': '73310.10', 'q': '0.00461', 'v': '337....</msg>
<var>${data}</var>
<arg>${response.json()}</arg>
<arg>data</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-05-28T20:27:33.108255" elapsed="0.000866"/>
</kw>
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($data, (list, dict))</arg>
<arg>响应数据应该是列表或字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.109277" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证交易记录列表结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($trade_list, list)</arg>
<arg>交易记录数据应该是列表格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.110535" elapsed="0.000256"/>
</kw>
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.111079" level="INFO">Length is 30.</msg>
<msg time="2026-05-28T20:27:33.111173" level="INFO">${list_length} = 30</msg>
<var>${list_length}</var>
<arg>${trade_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-05-28T20:27:33.110936" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.111475" level="INFO">交易记录列表包含 30 个交易记录</msg>
<arg>交易记录列表包含 ${list_length} 个交易记录</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.111328" elapsed="0.000199"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<kw name="验证交易记录项结构">
<kw name="Should Be True" owner="BuiltIn">
<arg>isinstance($trade_item, dict)</arg>
<arg>交易记录项应该是字典格式</arg>
<doc>Fails if the given condition is not true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.112870" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.113351" level="INFO">交易记录项内容: {'i': 630274921169404672, 't': 1779971251214, 'p': '73310.10', 'q': '0.00380', 'v': '278.57838', 'b': False}</msg>
<arg>交易记录项内容: ${trade_item}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.113217" elapsed="0.000220"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:33.113951" level="FAIL">Dictionary does not contain key 'id'.</msg>
<arg>${trade_item}</arg>
<arg>id</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:33.113710" elapsed="0.000349">Dictionary does not contain key 'id'.</status>
</kw>
<msg time="2026-05-28T20:27:33.114157" level="INFO">${has_id} = False</msg>
<var>${has_id}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${trade_item}</arg>
<arg>id</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.113560" elapsed="0.000621"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:33.114810" level="FAIL">Dictionary does not contain key 'price'.</msg>
<arg>${trade_item}</arg>
<arg>price</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:33.114622" elapsed="0.000254">Dictionary does not contain key 'price'.</status>
</kw>
<msg time="2026-05-28T20:27:33.114967" level="INFO">${has_price} = False</msg>
<var>${has_price}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${trade_item}</arg>
<arg>price</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.114303" elapsed="0.000689"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:33.115410" level="FAIL">Dictionary does not contain key 'qty'.</msg>
<arg>${trade_item}</arg>
<arg>qty</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:33.115248" elapsed="0.000220">Dictionary does not contain key 'qty'.</status>
</kw>
<msg time="2026-05-28T20:27:33.115561" level="INFO">${has_qty} = False</msg>
<var>${has_qty}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${trade_item}</arg>
<arg>qty</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.115112" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:33.116014" level="FAIL">Dictionary does not contain key 'quoteQty'.</msg>
<arg>${trade_item}</arg>
<arg>quoteQty</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:33.115847" elapsed="0.000221">Dictionary does not contain key 'quoteQty'.</status>
</kw>
<msg time="2026-05-28T20:27:33.116158" level="INFO">${has_quoteQty} = False</msg>
<var>${has_quoteQty}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${trade_item}</arg>
<arg>quoteQty</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.115708" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:33.116591" level="FAIL">Dictionary does not contain key 'time'.</msg>
<arg>${trade_item}</arg>
<arg>time</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:33.116434" elapsed="0.000210">Dictionary does not contain key 'time'.</status>
</kw>
<msg time="2026-05-28T20:27:33.116736" level="INFO">${has_time} = False</msg>
<var>${has_time}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${trade_item}</arg>
<arg>time</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.116301" elapsed="0.000458"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:33.117154" level="FAIL">Dictionary does not contain key 'isBuyerMaker'.</msg>
<arg>${trade_item}</arg>
<arg>isBuyerMaker</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:33.117003" elapsed="0.000200">Dictionary does not contain key 'isBuyerMaker'.</status>
</kw>
<msg time="2026-05-28T20:27:33.117285" level="INFO">${has_isBuyerMaker} = False</msg>
<var>${has_isBuyerMaker}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${trade_item}</arg>
<arg>isBuyerMaker</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.116867" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:33.117680" level="FAIL">Dictionary does not contain key 'side'.</msg>
<arg>${trade_item}</arg>
<arg>side</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:33.117537" elapsed="0.000190">Dictionary does not contain key 'side'.</status>
</kw>
<msg time="2026-05-28T20:27:33.117809" level="INFO">${has_side} = False</msg>
<var>${has_side}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${trade_item}</arg>
<arg>side</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.117413" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-05-28T20:27:33.118207" level="FAIL">Dictionary does not contain key 'symbol'.</msg>
<arg>${trade_item}</arg>
<arg>symbol</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-05-28T20:27:33.118055" elapsed="0.000202">Dictionary does not contain key 'symbol'.</status>
</kw>
<msg time="2026-05-28T20:27:33.118333" level="INFO">${has_symbol} = False</msg>
<var>${has_symbol}</var>
<arg>Dictionary Should Contain Key</arg>
<arg>${trade_item}</arg>
<arg>symbol</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.117937" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.118581" level="INFO">交易记录包含ID(id): False</msg>
<arg>交易记录包含ID(id): ${has_id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.118464" elapsed="0.000155"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.118820" level="INFO">交易记录包含价格(price): False</msg>
<arg>交易记录包含价格(price): ${has_price}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.118715" elapsed="0.000141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.119054" level="INFO">交易记录包含数量(qty): False</msg>
<arg>交易记录包含数量(qty): ${has_qty}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.118949" elapsed="0.000141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.119280" level="INFO">交易记录包含计价数量(quoteQty): False</msg>
<arg>交易记录包含计价数量(quoteQty): ${has_quoteQty}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.119177" elapsed="0.000138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.119564" level="INFO">交易记录包含时间(time): False</msg>
<arg>交易记录包含时间(time): ${has_time}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.119457" elapsed="0.000145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.119980" level="INFO">交易记录包含买方标记(isBuyerMaker): False</msg>
<arg>交易记录包含买方标记(isBuyerMaker): ${has_isBuyerMaker}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.119690" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.120217" level="INFO">交易记录包含方向(side): False</msg>
<arg>交易记录包含方向(side): ${has_side}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.120109" elapsed="0.000143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.120445" level="INFO">交易记录包含交易对(symbol): False</msg>
<arg>交易记录包含交易对(symbol): ${has_symbol}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.120340" elapsed="0.000140"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_id}</arg>
<arg>验证交易ID</arg>
<arg>${trade_item['id']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.120576" elapsed="0.000099"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_price}</arg>
<arg>验证交易价格</arg>
<arg>${trade_item['price']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.120777" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_qty}</arg>
<arg>验证交易数量</arg>
<arg>${trade_item['qty']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.120966" elapsed="0.000089"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_time}</arg>
<arg>验证交易时间</arg>
<arg>${trade_item['time']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.121265" elapsed="0.000157"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>${has_side}</arg>
<arg>验证交易方向</arg>
<arg>${trade_item['side']}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.121548" elapsed="0.000117"/>
</kw>
<arg>${trade_list[0]}</arg>
<doc>验证单个交易记录的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:33.112106" elapsed="0.009627"/>
</kw>
<arg>${list_length} &gt; 0</arg>
<arg>验证交易记录项结构</arg>
<arg>${trade_list[0]}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.111662" elapsed="0.010120"/>
</kw>
<arg>${data}</arg>
<doc>验证交易记录列表的数据结构</doc>
<status status="PASS" start="2026-05-28T20:27:33.110188" elapsed="0.011654"/>
</kw>
<arg>isinstance($data, list)</arg>
<arg>验证交易记录列表结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.109793" elapsed="0.012096"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn">
<arg>isinstance($data, dict)</arg>
<arg>验证交易记录字典结构</arg>
<arg>${data}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-05-28T20:27:33.122020" elapsed="0.000200"/>
</kw>
<kw name="本次测试简报" owner="common">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.123278" level="INFO">${status_code} = 200</msg>
<var>${status_code}</var>
<arg>${response.status_code}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:33.122756" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="PASS" start="2026-05-28T20:27:33.123585" elapsed="0.000524"/>
</kw>
<msg time="2026-05-28T20:27:33.124207" level="INFO">${has_data} = True</msg>
<var>${has_data}</var>
<arg>Should Contain</arg>
<arg>${response.text}</arg>
<arg>"data"</arg>
<doc>Runs the given keyword with given arguments and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-05-28T20:27:33.123433" elapsed="0.000801"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.124525" level="INFO">${data_status} = 通过</msg>
<var>${data_status}</var>
<arg>${has_data}</arg>
<arg>通过</arg>
<arg>无数据字段</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:33.124368" elapsed="0.000183"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.124897" level="INFO">${test_result} = PASS</msg>
<var>${test_result}</var>
<arg>${status_code} == 200 and ${has_data}</arg>
<arg>PASS</arg>
<arg>FAIL</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:33.124680" elapsed="0.000246"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.125237" level="INFO">${failure_reason} = 数据验证失败</msg>
<var>${failure_reason}</var>
<arg>${status_code} != 200</arg>
<arg>状态码异常(期望:200,实际:${status_code})</arg>
<arg>数据验证失败</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:33.125055" elapsed="0.000208"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.125671" level="INFO">${summary_content} = 🧪 测试过程: 获取最近交易记录 | 📡 请求接口: /v1/spot/market/public/trade/recent | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${summary_content}</var>
<arg>🧪 测试过程: ${test_name} | 📡 请求接口: ${api_path} | 📊 响应状态: ${status_code} | ✅ 数据验证: ${data_status} | 🎯 测试结果: ${test_result}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-05-28T20:27:33.125383" elapsed="0.000319"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.126042" level="INFO">${final_summary} = 🧪 测试过程: 获取最近交易记录 | 📡 请求接口: /v1/spot/market/public/trade/recent | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<var>${final_summary}</var>
<arg>'${test_result}' == 'FAIL'</arg>
<arg>${summary_content} | ❌ 失败原因: ${failure_reason}</arg>
<arg>${summary_content}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-05-28T20:27:33.125823" elapsed="0.000249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-05-28T20:27:33.126325" level="INFO">🧪 测试过程: 获取最近交易记录 | 📡 请求接口: /v1/spot/market/public/trade/recent | 📊 响应状态: 200 | ✅ 数据验证: 通过 | 🎯 测试结果: PASS</msg>
<arg>${final_summary}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-05-28T20:27:33.126194" elapsed="0.000178"/>
</kw>
<arg>获取最近交易记录</arg>
<arg>/v1/spot/market/public/trade/recent</arg>
<arg>${response}</arg>
<doc>根据测试执行情况自动生成详细的测试过程总结</doc>
<status status="PASS" start="2026-05-28T20:27:33.122414" elapsed="0.004014"/>
</kw>
<doc>验证最近交易记录接口功能</doc>
<tag>market</tag>
<status status="PASS" start="2026-05-28T20:27:32.602774" elapsed="0.523823"/>
</test>
<doc>最近交易记录接口测试</doc>
<status status="PASS" start="2026-05-28T20:27:32.589005" elapsed="0.537895"/>
</suite>
<status status="PASS" start="2026-05-28T20:27:29.071767" elapsed="4.056394"/>
</suite>
<status status="PASS" start="2026-05-28T20:27:26.933384" elapsed="6.195615"/>
</suite>
<status status="PASS" start="2026-05-28T20:27:09.310070" elapsed="23.820010"/>
</suite>
<statistics>
<total>
<stat pass="52" fail="0" skip="1">All Tests</stat>
</total>
<tag>
<stat pass="8" fail="0" skip="0">app</stat>
<stat pass="34" fail="0" skip="0">future-u</stat>
<stat pass="0" fail="0" skip="1">invite</stat>
<stat pass="7" fail="0" skip="0">market</stat>
<stat pass="0" fail="0" skip="1">profit</stat>
<stat pass="3" fail="0" skip="0">spot</stat>
</tag>
<suite>
<stat name="BitRadeX_API测试_prod" id="s1" pass="52" fail="0" skip="1">BitRadeX_API测试_prod</stat>
<stat name="App" id="s1-s1" pass="8" fail="0" skip="0">BitRadeX_API测试_prod.App</stat>
<stat name="Ad List" id="s1-s1-s1" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.App.Ad List</stat>
<stat name="App Share Info" id="s1-s1-s2" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.App.App Share Info</stat>
<stat name="App Version Info" id="s1-s1-s3" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.App.App Version Info</stat>
<stat name="Banner List" id="s1-s1-s4" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.App.Banner List</stat>
<stat name="Captcha Apply" id="s1-s1-s5" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.App.Captcha Apply</stat>
<stat name="Open Screen List" id="s1-s1-s6" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.App.Open Screen List</stat>
<stat name="Open Screen List Lang" id="s1-s1-s7" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.App.Open Screen List Lang</stat>
<stat name="Vajra District" id="s1-s1-s8" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.App.Vajra District</stat>
<stat name="Future-U" id="s1-s2" pass="34" fail="0" skip="0">BitRadeX_API测试_prod.Future-U</stat>
<stat name="Market" id="s1-s2-s1" pass="2" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Market</stat>
<stat name="Future U Symbol Detail" id="s1-s2-s1-s1" pass="2" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Market.Future U Symbol Detail</stat>
<stat name="Q" id="s1-s2-s2" pass="32" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Q</stat>
<stat name="Future U Depth" id="s1-s2-s2-s1" pass="6" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Q.Future U Depth</stat>
<stat name="Future U Funding Rate" id="s1-s2-s2-s2" pass="5" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Q.Future U Funding Rate</stat>
<stat name="Future U Index Price" id="s1-s2-s2-s3" pass="7" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Q.Future U Index Price</stat>
<stat name="Future U Mark Price" id="s1-s2-s2-s4" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Q.Future U Mark Price</stat>
<stat name="Future U Symbol Mark Price" id="s1-s2-s2-s5" pass="5" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Q.Future U Symbol Mark Price</stat>
<stat name="Future U Ticker" id="s1-s2-s2-s6" pass="5" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Q.Future U Ticker</stat>
<stat name="Future U Tickers" id="s1-s2-s2-s7" pass="3" fail="0" skip="0">BitRadeX_API测试_prod.Future-U.Q.Future U Tickers</stat>
<stat name="Invite" id="s1-s3" pass="0" fail="0" skip="1">BitRadeX_API测试_prod.Invite</stat>
<stat name="Profit Analysis" id="s1-s3-s1" pass="0" fail="0" skip="1">BitRadeX_API测试_prod.Invite.Profit Analysis</stat>
<stat name="Spot" id="s1-s4" pass="10" fail="0" skip="0">BitRadeX_API测试_prod.Spot</stat>
<stat name="Balance" id="s1-s4-s1" pass="3" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Balance</stat>
<stat name="Balance Currencies" id="s1-s4-s1-s1" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Balance.Balance Currencies</stat>
<stat name="Balance Price Convert" id="s1-s4-s1-s2" pass="2" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Balance.Balance Price Convert</stat>
<stat name="Mark" id="s1-s4-s2" pass="7" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Mark</stat>
<stat name="24H Market" id="s1-s4-s2-s1" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Mark.24H Market</stat>
<stat name="Market Depth" id="s1-s4-s2-s2" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Mark.Market Depth</stat>
<stat name="Market Plate" id="s1-s4-s2-s3" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Mark.Market Plate</stat>
<stat name="Market Symbol" id="s1-s4-s2-s4" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Mark.Market Symbol</stat>
<stat name="Market Time" id="s1-s4-s2-s5" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Mark.Market Time</stat>
<stat name="Market Top Symbol" id="s1-s4-s2-s6" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Mark.Market Top Symbol</stat>
<stat name="Market Trade Recent" id="s1-s4-s2-s7" pass="1" fail="0" skip="0">BitRadeX_API测试_prod.Spot.Mark.Market Trade Recent</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
