Bài viết được sự cho phép của vntesters.com
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.
Chuẩn bị test environment
Về cơ bản các bạn cần những software sau
- Python
- Browser
- Selenium package
- Python binding / WebDriver client
- Web Driver của browser mà bạn muốn chạy test case
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()
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)
- from selenium import webdriver: import webdriver từ selenium package
- driver = webdriver.Chrome(executable_path=”C:/VNTesters/chromedriver.exe”): mở Chrome lên,
- driver.get (“https://vntesters.com/”): navigate tới trang chủ của VNTesters
- print (driver.title): in ra tiêu đề của trang web
- 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()
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()
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)
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:
- Việc làm python hấp dẫn trên TopDev
- Viết một chatbot đơn giản với Python3
- Các kiểu “đợi chờ” trong Selenium Webdriver: Implicit wait, Explicit wait và Fluent wait
Xem thêm việc làm IT mới nhất trên TopDev