Сопоставление шаблонов в среде robot: python

#python #string #cookies #robotframework

#python #строка #файлы cookie #robotframework

Вопрос:

Есть код, который будет сравнивать шаблон cookie, созданный при нажатии на URL-адрес с использованием robot framework, со строковой переменной .

 REGMATCH
     ${string}=  set variable   hgf
     ${matches}=  get regexp matches  ${string}  asdfhgfpoyrjgrrhkjhoolk
     should be equal as strings  ${matches}  hgf
 

но это возвращает False ,

и я попробовал это ниже ,

 Get Lines Matching Pattern Matching Some Lines
    Test Get Lines Matching Pattern    asdfhgfpoyrjgrrhkjhoolk    ??????   hgf
 
 ***KEYWORD***
Test Get Lines Matching Pattern
    [Arguments]    ${input}    ${pattern}    ${expected}    ${case-insensitive}=no
    ${actual} =    Get Lines Matching Pattern    ${input}    ${pattern}    ${case-insensitive}
    Should Be Equal    ${actual}    ${expected}
 

Кто-нибудь может мне помочь в этом, пожалуйста.

Ответ №1:

 ${actual} =    Get Lines Matching Pattern    ${input}    ${pattern}    ${case-insensitive}
 

ваш шаблон ????? , который означает ровно 5 символов, содержит более 5 символов

asdfhgfpoyrjgrrhkjhoolk можно получить, используя столько ‘?’ как ? воспроизводит один символ в формате globb, вы можете использовать

 ${actual} =    Get Lines Matching Pattern    ${input}    *    ${case-insensitive}
 

что означает всю строку целиком

Для вашего варианта использования y = вы можете использовать

 Should Match Regexp    hithsihdisdh hsdaasidh 123 dfsdfdsf   123
 

это позволит проверить, содержит ли строка «123». Это ключевое слово взято из встроенной библиотеки

 Library    BuiltIn
 

Приведенный ниже пример показывает правильное использование каждого из ключевых слов:

 *** Setting ***
Library    String
Library    BuiltIn
Library  Selenium2Library


*** Test Cases ***
Example Search
    [Tags]    you    probably    do    not    have    this    many    tags    in    real    life
    ${first} =  Catenate    SEPARATOR=n    Not in second   Same stuff  Differs Same
    #this is use ful to find line the pattern       
    ${a}=    Get Lines Matching Pattern     ${first}   Same*    case_insensitive=true

    #this match the entire multi line string has any match
    ${b}=    Should Match Regexp    ${first}   Same

    #this gives a list of all matches
    ${c}=    Get Regexp Matches    ${first}   Same

    Log    ${a}
    Log    ${b}
    Log    ${c}