Testing Robotframework-Evaluate关键字的返回值未将所有数值存储在变量中

Testing Robotframework-Evaluate关键字的返回值未将所有数值存储在变量中,testing,robotframework,Testing,Robotframework,我试图使用Evaluate关键字计算一个值,它似乎没有在变量${C1}中存储精确的整数,但它似乎根据日志文件返回了我想要的精确值 这是我的示例代码 ${C1} Evaluate 1.025**${C_IP_Years_Between} 这是日志: ${C1} = BuiltIn . Evaluate 1.025**${C_IP_Years_Between} Documentation: Evaluates the given expression in Python and r

我试图使用Evaluate关键字计算一个值,它似乎没有在变量${C1}中存储精确的整数,但它似乎根据日志文件返回了我想要的精确值

这是我的示例代码

${C1}    Evaluate    1.025**${C_IP_Years_Between}
这是日志:

${C1} = BuiltIn . Evaluate 1.025**${C_IP_Years_Between}
Documentation:  
Evaluates the given expression in Python and returns the results.

Start / End / Elapsed:  20180413 21:09:18.343 / 20180413 21:09:18.377 / 00:00:00.034
21:09:18.345    TRACE   Arguments: [ '1.025**11' ]  
21:09:18.376    TRACE   Return: 1.3120866578012655  
21:09:18.377    INFO    ${C1} = 1.3120866578

如何使用上面返回的全部值(例如1.312086657812655)

机器人变量
${C1}
是一个浮点数,因此它保留了所有精度。log语句只是没有显示所有的数字

如果将值显式转换为字符串,则可以看到所有数字。在以下示例中,测试应通过:

*** Variables ***
${C_IP_Years_Between}  11

*** Test Cases ***
Example
    ${C1}=   Evaluate  1.025**${C_IP_Years_Between}
    ${C1f}=  Evaluate  '{0:.16f}'.format($c1)
    Should be equal as strings  ${C1f}  1.3120866578012655

我试过做上面的那个。它似乎仍然无法获得全部重要值<代码>关键字${C1f}=BuiltIn。计算“{0:.16f}”。格式(${C1})文档:计算Python中的给定表达式并返回结果。10:33:39.621跟踪参数:[“{0:.16f}.格式(1.3120866578)”]10:33:39.640跟踪返回:b'1.3120866579999'10:33:39.641信息${C1f}=1.3120866579999应与字符串${C1f}相等,1.312086665780126555失败1.3120866579999!=1.312086657812655还试图断言${C1}以检查它是否真的包含整个值,但仍然没有传递<代码>关键字内置。应等于字符串${C1},1.312086657812655文档:如果对象在转换为字符串后不相等,则失败。开始/结束/经过:20180416 11:08:38.660/20180416 11:08:38.675/00:00.015 11:08:38.660跟踪参数:[1.312086657812655 |“1.312086657812655”]11:08:38.660信息参数类型为:11:08:38.660失败1.3120866578!=1.312086657812655@JohnSigua:当然,你第一条评论中的代码会失败。您正在将
1.312…999
1.312…655
进行比较。从跟踪中可以看到,
C1F
包含
…999
值,就像跟踪中显示的那样。@JohnSigua:在第二种情况下,您依赖于robot将浮点值默认转换为字符串,这将具有不同的精度。关键是,您需要显式地将其转换为您想要的任何精度。同样,精度是存在的,因为值是浮点值,而不是字符串。唯一的问题是,出于日志记录的目的,您依赖robot的默认字符串转换。