【问题标题】:Luhn algorithm Robot FrameworkLuhn 算法机器人框架
【发布时间】:2021-01-25 08:41:46
【问题描述】:

我是机器人框架的新手,正在尝试实现 Luhn 算法。 我在python中找到了代码,想把它改成Robot框架。

def cardLuhnChecksumIsValid(card_number):
""" checks to make sure that the card passes a luhn mod-10 checksum """

sum = 0
num_digits = len(card_number)
oddeven = num_digits & 1

for count in range(0, num_digits):
    digit = int(card_number[count])

    if not (( count & 1 ) ^ oddeven ):
        digit = digit * 2
    if digit > 9:
        digit = digit - 9

    sum = sum + digit

return ( (sum % 10) == 0 )

我从 robotsscript 开始,如果不是 (( count & 1 ) ^ oddeven ) 则卡在语句中,有人可以帮我将上面的代码转换为机器人脚本 是否有自动将 python 代码更改为机器人?

cardLuhnChecksumIsValid
[Arguments]    ${ICCID1}
${num_digits}    Get length    ${ICCID1}
${odd_even}    ${num_digits}
...    AND    ${1}
FOR    ${Count}    IN RANGE    0    ${num_digits}
${digit}    Convert To Integer    ${ICCID[${Count}]}

【问题讨论】:

    标签: robotframework luhn


    【解决方案1】:

    查看 BuiltIn 库中的 Evaluate 关键字。你可以用它来重写:

    if not (( count & 1 ) ^ oddeven ):
        digit = digit * 2
    

    到:

    ${condition}=    Evaluate    not (( ${count} & 1 ) ^ ${oddeven} )
    ${digit}=    Run Keyword If    ${condition}    Evaluate    ${digit} * 2
    

    您可以使用相同的方法重写算法的其余部分。从 Robot Framework 3.2 版本开始,您还可以使用Inline Python evaluation

    【讨论】:

      【解决方案2】:
          *** Test Cases ***
      Check - ICCID
      
      
          [Setup]    setup
          ${ICCID}    Card.get ICCID #get ICCID
          ${Result_Chksum}    cardLuhnChecksumIsValid    ${ICCID}
       
          [Teardown]    tearDown
      
      *** Keywords ***
      setup
          No Operation
      
      tearDown
          No Operation
      
      cardLuhnChecksumIsValid
          [Arguments]    ${ICCID_val}
          ${num_digits}    Get length    ${ICCID_val}
          ${oddeven}=    Evaluate    ( ${1} & ${num_digits} )
          FOR    ${Count}    IN RANGE    0    ${num_digits}
              ${digit}    Convert To Integer    ${ICCID_val[${Count}]}
              ${condition}=    Evaluate    not (( ${Count} & 1 ) ^ ${oddeven} )
              ${digit}=    Run Keyword If    ${condition}    Evaluate    (${digit}*2)
              ...    ELSE    Set Variable    ${digit}
              ${digit}=    Run Keyword If    (${digit} > 9)    Evaluate    (${digit} - 9)
              ...    ELSE    Set Variable    ${digit}
              ${Sum}=    Evaluate    (${Sum}+${digit})
          END
          ${result}=    Evaluate    (${Sum}%10)
          [Return]    ${result}
      

      【讨论】:

      • 如果返回值为0则验证ICCID。
      猜你喜欢
      • 2016-04-26
      • 2018-04-25
      • 2015-10-09
      • 2015-11-03
      • 2017-11-11
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多