Luhn算法机器人框架



我是机器人框架的新手,正在尝试实现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 )

我从robotscript开始,卡住了语句如果不是((count &)1) ^ oddeeven)有人能帮我把上面的代码转换成机器人脚本是否有自动将python代码更改为robot ?

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}]}

看一下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版本开始,你还可以使用内联Python求值。

*** 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}

最新更新