2013-05-14 23 views
15

Tôi có một regex rất dài mà tôi muốn đưa vào một biến để kiểm tra với. Tôi muốn có thể đặt nó trên nhiều dòng để nó không phải là không thể đọc được. Tôi thấy bạn có thể làm nhiều dòng với thẻ tài liệu. Nhưng khi tôi thử định dạng này, robot dường như nghĩ đây là một danh sách. Có cách nào để làm điều này trong khuôn khổ robot?Có thể có một phạm vi biến nhiều dòng trong khung robot

${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' 

muốn để có thể viết:

${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' 

Trả lời

21

Thật không may, robotframework không trực tiếp hỗ trợ các chuỗi chữ có nhiều dòng. Tuy nhiên, bạn có thể nhận được hiệu ứng tương tự bằng cách sử dụng từ khóa catenate trong trường hợp thử nghiệm hoặc từ khóa để kết hợp dữ liệu trải rộng trên nhiều ô. Hãy chắc chắn thoát đúng các dấu gạch chéo ngược của bạn và đặt ký tự dấu tách thành chuỗi trống nếu bạn không muốn dòng mới trong dữ liệu.

Ví dụ:

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

Đây là một kỹ thuật rất hữu ích. Biến của tôi yêu cầu sử dụng biến $ {SPACE} để buộc ký tự khoảng trắng ở cuối dòng. –

+0

Đối với những người muốn có một dòng mới, đặt '\ n' hoặc' $ {\ n} 'trong văn bản hoạt động. – tuxayo

Các vấn đề liên quan