2013-05-14 3 views
15

Mam bardzo długie wyrażenie regularne, które chciałbym umieścić w zmiennej do przetestowania z. Chciałbym móc umieścić go na wielu liniach, aby nie było tak nieczytelne. Widziałem, że możesz zrobić wiele linii za pomocą znacznika dokumentacji. Ale kiedy próbuję tego formatowania, robot wydaje się myśleć, że jest to lista. Czy jest jakiś sposób na zrobienie tego w środowisku robotów?Czy jest możliwe, aby zmienna rozpiętość wiele linii w strukturze robota

${example_regex} =  '(?m)Setting IP address to [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\nSetting MAC address to [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}\nSetting IP forwarding kernel options' 

chciałby, aby móc napisać:

${example_regex} '(?m)Setting IP address to [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\n 
        Setting MAC address to [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}\n 
        Setting IP forwarding kernel options' 

Odpowiedz

21

Niestety robotframework nie obsługuje bezpośrednio multilinii dosłowne ciągi. Jednak można uzyskać ten sam efekt za pomocą słowa kluczowego catenate w teście lub słowie kluczowym, aby połączyć dane rozproszone w wielu komórkach. Pamiętaj, aby poprawnie uciec przed ukośnikami odwrotnymi i ustawić znak separatora na pusty ciąg, jeśli nie chcesz nowych wierszy w danych.

Na przykład

*** Test Cases *** 
Multiline variable example 
    ${example_regex}= catenate SEPARATOR= 
    ... (?m)Setting IP address to [0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\n 
    ... Setting MAC address to [0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}:[0-9a-f]{2}\\n 
    ... Setting IP forwarding kernel options 
    log regex: '${example_regex}' 
+0

Jest to bardzo użyteczna metoda. Moja zmienna wymagała użycia zmiennej $ {SPACE} do wymuszenia znaku spacji na końcu wiersza. –

+0

Dla tych, którzy chcą mieć znak nowej linii, wstawianie '\ n' lub' $ {\ n} 'w tekście działa. – tuxayo

Powiązane problemy