Viết 1 Test Case Đơn Giản Với Python Selenium WebDriver

1112

Bài viết được sự cho phép của tác giả Nguyen Duy Hien

Viết 1 test case đơn giản với Python Selenium WebDriver. Đây là bài viết trong loạt bài Automation skills cho tester già mà lười. Bài này VNTesters sẽ hướng dẫn các bạn viết 1 test case đơn giản. Dù bạn chưa từng làm hay học qua Selenium cũng có thể làm được.

  10 Lý do nên học Python trong năm 2020
  10 sự thật thú vị về ngôn ngữ lập trình Python

Chuẩn bị test environment

Về cơ bản các bạn cần những software sau

Các bạn tham khảo thêm bài Cài đặt môi trường cho Python Selenium Webdriver.

Viết 1 test case đơn giản với Python Selenium

Mình sẽ lấy Chrome là trình duyệt chạy test case. Web Driver cho Chrome có thể tìm thấy tại đây. Download về rồi bỏ nó vô folder C:\VNTesters\. Cũng trong folder này các bạn tạo 1 file tên simple_test_v1.py với nội dung như sau

from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:/VNTesters/chromedriver.exe")
driver.get ("https://vntesters.com/")
print (driver.title)
driver.quit()
view rawsimple_test_v1.py hosted with ❤ by GitHub

Test case ở trên đơn giản quá phải không? Đơn giản nên dễ giải thích (khó quá sẽ bỏ qua)

  1. from selenium import webdriver: import webdriver từ selenium package
  2. driver = webdriver.Chrome(executable_path=”C:/VNTesters/chromedriver.exe”): mở Chrome lên,
  3. driver.get (“https://vntesters.com/”): navigate tới trang chủ của VNTesters
  4. print (driver.title): in ra tiêu đề của trang web
  5. print (driver.title): tắt Chrome

Để chạy test case trên, các bạn mởi CMD và vào folder C:\VNTesters rồi gõ lệnh sau

python simple_test.py

Cải thiện test case đơn giản với WebDriver Manager

Các bạn có để ý dòng số 2 không? Đặc biệt đoạn executable_path=”C:/VNTesters/chromedriver.exe”. Đường dẫn tuyệt đối là rủi ro lớn khi test case phải chạy trên nhiều máy khác nhau. Để giải quyết vấn đề này VNTesters sẽ sử dụng WebDriver Manager. Để cài WebDriver Manager, anh em gõ lệnh sau vô CMD

pip install webdriver_manager

Test case ở trên sẽ được sửa lại chút xíu cho linh hoạt.

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get ("https://vntesters.com/")
print (driver.title)
driver.quit()
view rawsimple_test_v2.py hosted with ❤ by GitHub

Test case nhìn ngon ăn hơn nhiều rồi đúng không nào? Tuy nhiên sau khi chạy Test Case xong thì chẳng biết là Pass hay Fail nữa vì thiếu checkpoint. Solution? Đọc tiếp phần sau nhé.

Chạy test case với PyTest

PyTest Framework hỗ trợ viết test nhanh và dễ dàng hơn. Từ những test case nhỏ đến những test case kiểm thử chức năng phức tạp…vân vân và mây mây. Thôi vô vấn đề chính, để xài được PyTest các bạn phải cài nó trước

pip install pytest

Sau đó sửa test case đơn giản của chúng ta lại chút xíu nữa

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import pytest

def test():
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get ("https://vntesters.com")
page_title = driver.title
assert 'Cộng Đồng Kiểm Thử Phần Mềm' in page_title
driver.quit()
view rawsimple_test_v3.py hosted with ❤ by GitHub

Sau khi chạy test case, các bạn sẽ biết là test case này Pass hay Fail. Cú pháp để chạy test case bằng PyTest như sau

pytest –q simple_test.py

Chạy test case với PyUnit

Lân Huỳnh đã có bài viết chi tiết về PyUnit rồi. Bài này mình chỉ update lại code cho ví thôi nhé.

import unittest
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

class VNTestersTestCase(unittest.TestCase):
def setUp(self):
self.browser = webdriver.Chrome(ChromeDriverManager().install())
self.addCleanup(self.browser.quit)
def testPageTitle(self):
self.browser.get('https://vntesters.com')
self.assertIn('Cộng Đồng Kiểm Thử Phần Mềm', self.browser.title)

if __name__ == '__main__':
unittest.main(verbosity=2)
view rawsimple_test_v4.py hosted with ❤ by GitHub

Các bạn chạy test case bằng lệnh sau

python -m unittest tests.py

Lời Kết

Như vậy là chúng ta đã viết được 1 test case đơn giản với Python Selenium. Từ level siêu gà đến hơi hơi gà. Chạy test case với PyTest, PyUnit kết hợp với WebDriver Manager. Để lại comment nếu bạn muốn biết thêm về những chủ đề khác.

Bài viết gốc được đăng tải tại vntesters.com

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev