Data Driven Testing in Robot Framework

Chào các bạn!
Đã lâu rồi mình mới quay lại viết blog :D
Tại bài trước, chúng ta đã làm quen với testcase đầu tiên trong robotFW
Hôm nay chúng ta sẽ tìm hiểu về Data Driven Testing trong Robot Framework.
Các thư viện cần có:
  • SeleniumLibrary
    • Cài đặt tại Trang chủ , và xem cách sử dụng tại đây
    • Lưu ý:khi add Lib trong robotFW thì cần viết đúng hoa thường như trang chủ 
  • ExcellentLibrary
  • Tạo file excel chứa data test:

    • Chú ý: Do lib excel được viết từ openpyxl nên chỉ hỗ trợ excel có đuôi xlsx 
    • Chúng ta chú ý các tên cột, tên file và tên sheet trong excel
Ok, chúng ta bắt đầu thôi.
Kịch bản của chúng ta như sau:

  1. vào trang web http://demo.guru99.com/insurance/v1/index.php
  2. nhập email và pass 
  3. click button login
  4. get text của thông báo hiện lên
  5. compare text thông báo mong muốn trong excel và text show trên web
Đây là code của tips này:


*** Settings ***
Library           ExcellentLibrary
Library           SeleniumLibrary
Library            Collections

*** Test Cases ***
login
    Open Browser    http://demo.guru99.com/insurance/v1/index.php    chrome
    Maximize Browser Window
    Open Workbook    Resources/data.xlsx
    Switch Sheet    login
    @{all}=    Read Sheet Data
    @{data}=  Get Slice From List  ${all}  1
    : FOR    ${i}    IN    @{data}
    \    Clear Element Text    email
    \    Input Text    email    ${i[0]}    #first columns in excel
    \    Clear Element Text    password
    \    Input Password    password    ${i[1]}
    \    Click Button    name = submit
    \    Wait Until Element Is Visible    css=div> span
    \    ${lblActual}=    Get Text    css=div> span
    \    Should Be Equal As Strings    ${lblActual}    ${i[2]}
    Close Browser




Chú ý:

  1. các biến như ${i[0]} - do email là cột đầu tiên của excel, nhưng khi lấy về mảng, thì giá trị đầu tiên là 0. nếu email ở cột số 2 thì trong code sẽ là Input Text email ${i[1]}
  2. tại dòng số 13 : @{data}=  Get Slice From List  ${all}  1  : do khi đọc data ở excel, data trả về sẽ lấy cả header của excel, tức là giá trị (email, pass, expected), nên cần dùng lệnh này để bỏ đi giá trị đầu tiên đó. các bạn xem thêm tại đây nhé 
  3. file data.xlsx để trong thư mục Resources
OK, vậy là xong rồi. có thắc mắc các bạn hãy để lại bình luận bên dưới nhé!
Hẹn gặp lại các bạn vào các bài tiếp theo!

2 comments:

  1. Hi bạn,

    Mình ra lỗi này khi run
    Resolving variable '${i['testcaseID']}' failed: TypeError: list indices must be integers, not str
    Thanks,

    ReplyDelete
    Replies
    1. chào bạn! bạn edit lại như này giúp mình nhé!
      Input Text email ${i[0]} với thứ tự: 0 là cột đầu tiên của excel nhé bạn.

      Hiện code lấy data của excel đang có vấn đề, khi mình set get_column_names_from_header_row=False nhưng nó vẫn trả về dòng header của excel, thì mình sẽ fix bằng cách này nhé:
      @{all}= Read Sheet Data
      @{data}= Get Slice From List ${all} 1 # đoạn này là trả về danh sách mới từ vị trí thứ 1 tới n dựa trên list cũ. tức là nó bỏ đi dòng đầu tiên là 0. bạn xem thêm ở đây nhé http://robotframework.org/robotframework/latest/libraries/Collections.html#Get%20Slice%20From%20List.

      => code mới sẽ như sau:http://prntscr.com/n3j73l
      khi nào có time mình sẽ update lại blog, cảm ơn bạn đã quan tâm!

      Delete