Hướng dẫn python web automation

Trong lĩnh vực công nghệ thông tin những năm gần đây, ngôn ngữ lập trình Python đang ngày càng trở nên phổ biến. Với bất kỳ lập trình viên nào, việc tự kiểm thử (test) những dòng code mình viết ra là rất quan trọng. Với Python, người lập trình cần nắm được những kỹ năng kiểm thử đặc thù. Trong bài viết này, chuyên gia của CO-WELL Asia sẽ hướng dẫn cơ bản về selenium trong Python sử dụng UnitTest.

1. Tìm hiểu về Test automation trong python

 Các lý do chọn Python là ngôn ngữ để thực hiện automation

  • Python có cộng đồng hỗ trợ đông đảo.
  • Python viết code ngắn ngọn và dễ đọc, đồng thời dễ dàng tiếp cận với người mới đắt đầu.
  • Selenium Python API bạn có thể truy cập tất cả các chức năng của selenium webdriver một cách trực quan.
  • Python được cài đặt đơn giản hơn nhiều so với Java và cách sử dụng thư viện cũng khá tiện lợi.
  • Tốc độ xử lý khá nhanh vì không cần phải biên dịch code trước khi chạy.

Python unit test
Python unittest (còn được gọi là PyUnit) là một nền tảng kiểm thử (testing framework), được phát triển từ JUnit dành cho Python.

  • Cũng tương tự testNG trong Java thì Python vẫn có một số class chính trong unittest:
    • setUp(): là phương thức được chạy trước khi mỗi thử nghiệm bắt đầu (thường được dùng để mở browser).
    • tearDown(): là phương thức được chạy sau mỗi thử nghiệm (dù fail hay success và thường dùng để đóng browser).
    • setUpClass(): là phương thức được chạy một lần trước khi tất cả các thử nghiệm bắt đầu.
    • tearDownClass(): là phương thức được chạy một lần sau khi tất cả các thử nghiệm kết thúc.
  • Ở Python unittest chúng ta không có từ khoá để xác định phương thức nào là phương thức kiểm thử. Để làm điều này, chúng ta phải đặt tên cho phương thức với tiền tố “test_”. Ví dụ: “test_login(self):”
  • Tài liệu tham khảo thêm về unittest trong Python:
    https://docs.python.org/2/library/unittest.html

2. Cài đặt môi trường

 Cài đặt Python

  • B1: Truy cập trang: https://www.python.org/downloads/ để tải xuống bản phát hành mới nhất của Python.
  • B2: Nhấn đúp chuột vào file download đã tải và thực hiện step theo hướng dẫn khi cài đặt.
  • B3: Kiểm tra Python đã cài đặt: Mở Command Prompt → chạy lệnh: python --version (hoặc python –V).

Hướng dẫn python web automation

Cài đặt selenium với Python

Mở Command Prompt → chạy dòng lệnh “pip install selenium

Cài đặt IDE

Để phục vụ cho viết code Python được thuận lợi, chúng ta cần download IDE phù hợp. Ở đây tôi sử dụng IDE Intellij (Vì IDE này máy đã được cài đặt sẵn). Về phần cài đặt thì đơn giản nên sẽ không hướng dẫn. Ngoài ra thì có thể sử dụng các IDE khác: PyCharm, Eclipse, …
Cài plugin Python vào intellij IDE: vào menu File → Settings → Plugins và nhập Python để tìm kiếm. Chọn install vào plugin Python community edition đợi cài đặt hoàn tất thì restart lại intellij.

Hướng dẫn python web automation

3. Tạo script đơn giản

TestCase và data test

TestCase: thực hiện viết script trên trang đăng nhập “herokuapp” và sử dụng trình duyệt Chrome để chạy test:

  • Step 1: truy cập trang https://the-internet.herokuapp.com/login
  • Step 2: nhập tên login vào textbox Username
  • Step 3: nhập mật khẩu vào textbox Password
  • Step 4: nhấn button Login
  • Step 5: kiểm tra kết quả

Data test: Chuẩn bị data test trong file excel theo mẫu sau:

Hướng dẫn python web automation

Ngoài ra thì có thể chuẩn bị data test từ json, xml, …

Tạo project mới trong IDE

Mở Intellij, trên màn hình welcome to intellij IDE chọn “new project”.
Chọn Python, phần Project SDK thì các bạn trỏ tới file python.exe trong folder Python mà bạn đã cài đặt.

Đặt tên project và nhấn Finish để hoàn thành.
Sau đó tạo các folder trong project vừa tạo để dễ quản lý và maintain:

  • dataTests: lưu dữ liệu dùng để test
  • drivers: lưu các driver của browser
  • pages: lưu các element của page cần thao tác
  • reports: dùng để lưu report
  • steps: lưu các file thực hiện step test
  • tests: lưu file dùng để chạy script, quản lý testcase
  • utils: lưu file custom như: customChromeDriver,…
  • verifys: lưu file kiểm tra kết quả chạy test

Hướng dẫn python web automation

 Tạo script

Tải driver chrome theo version chrome hiện có và lưu vào folder “drivers”
(Downloads – ChromeDriver – WebDriver for Chrome)

 Đọc dữ liệu test từ file data test (Được lưu trong excel)

Tạo function ReadDataTest.py từ folder “steps” dùng để đọc data test từ file excel đã chuẩn bị.

  • Note:
  • Trường hợp lỗi thư viện: Nhấn vào icon lỗi tại thư viện lỗi và chọn import.
  • Đối với file excel “.xlsx”: Cần chạy lệnh pip install xlrd==1.2.0 trong terminal của intellij.

Hướng dẫn python web automation

 Custom trình duyệt Chrome

Tạo function CustomChromeDriver.py từ folder “utils” dùng để tùy chỉnh profile của trình duyệt muốn mở:

Hướng dẫn python web automation

Tạo file test

Tại folder “tests” tạo mới file Python: Nhập tên file và chọn “Python unit test”

Hướng dẫn python web automation

File LoginTests.py

Hướng dẫn python web automation

① Nhận data test đã được tạo trong file ReadDataTest.py
② Mở trình duyệt Chrome
③ Truy nhập URL dùng để chạy script
④ Đóng trình duyệt khi kết thúc test
⑤ Các bước khi test login: Nhập username, password, nhấn nút login
⑥ Kiểm tra kết quả mong muốn đã define trong dataTest với kết quả thực tế khi test

3.3.4. Get các element cần thao tác
Tạo file Page_login.py lưu các element cần thao tác.

Hướng dẫn python web automation

Tạo script thực hiện step

Tạo file Step_login.py trong folder “step”

Hướng dẫn python web automation

① Các thao tác dùng để login: nhập username → nhập password → nhấn nút login.
② Get các element từ các locator trong file Page_login.py.

3.3.6. Tạo script kiểm tra kết quả
Script này để get kết quả sau khi thực hiện login. Ở đây tôi sẽ get nội dung thông báo và so sánh với nội dung thông báo mong muốn trong file data test.

Hướng dẫn python web automation

Chạy script

Để xem được kết quả test thuận tiện thì cần thêm html-report vào script:
Trên file LoginTests.py thêm import HTMLTestRunner sau đó import thư viện HTMLTestRunner vào hoặc chạy lệnh pip install HTMLTestRunner-Python3

Ở lệnh unittest.main() gọi đến phương thức report:

Hướng dẫn python web automation

Kết quả chạy test sẽ được lưu vào report:

Hướng dẫn python web automation

Ngoài ra để report được dễ nhìn hơn thì có thể custom tại template. Ví dụ template đã được custom lại:

Hướng dẫn python web automation

Hướng dẫn python web automation

  • Source code on github: GitHub – haunvc7049/UnittestPythonSelenium

Trên đây là những hướng dẫn cơ bản của chuyên gia từ CO-WELL Asia về Unit Testing trong Python. Đừng quên theo dõi chuyên mục CODEWELL trên website CO-WELL Asiađể đón đọc những bài viết công nghệ bổ ích nhé!