Viết API automation test bằng python

2566

Chào các bạn, đây là 1 bài viết ngắn để giới thiệu sơ qua cho các bạn cách setup API test sử dụng ngôn ngữ Python, trên Mac OS (bạn hoàn toàn có thể lặp lại các step trên headline để cài đặt trên window). Hy vọng các bạn sẽ làm quen nhanh với API test vì nó không quá khó. Nếu các bạn muốn tìm hiểu khi test API nên focus vào test những gì, hãy xem thử bài này của mình, có một số lời khuyên hữu ích trong đó.

Trước khi bắt đầu, hãy Open Iterm ra, và cd thư mục Home của Mac. Bạn có thể chọn thư mục khác, tùy bạn.

1/ Install Homebrew

bạn install Homebrew trên Mac để install những component khác, ví dụ như pip đơn giản hơn

Press ENTER để tiếp tục cài đặt bạn nhé :). Nó sẽ hỏi password của bạn nữa đó.

Nếu thành công nó sẽ show giống giống thế này:

2/ Install python

Mình chọn dùng python, đơn giản là vì mình thích :D. Nó khá đơn giản và dễ hiểu khi lập trình. Mình sẽ không nói nhiều, những ví dụ tiếp sau sẽ dùng python, bạn sẽ catch up với nó nhanh thôi :).

3/ Install pip

Đơn giản là nó install Python cho bạn

4/ Install requests

“requests” này chính là những component cần có của python để viết code test API, trong request sẽ cung cấp đủ các hàm để bạn gọi GET, PUT,…

5/ Install Django

Cái này là optional, nhưng khi mình install cái này xong thì việc setup 1 project để viết API test dễ dàng hơn rất nhiều.

6/ Tạo 1 project

Tới đây là bước để tạo project rồi. Sau bước này, bạn có thể bắt tay vào viết test 😀

Dòng lệnh 1:

sau đó thì

Dòng lệnh 2:

Cuối cùng trong thư mục của bạn sẽ có 1 thứ giống giống thế này:

7/ Demo viết code test API public của FPT, Method GET

document ở đây http://doc.openfpt.vn/services/cyradar/documentation.html#/README

Và mình sẽ test thử cái API này

Nếu bạn copy và run nó trên URL của trình duyệt, bạn sẽ thấy nó ra kết quả là

Mình sẽ viết code, để test xem khi gọi API này, cái parameter “uri” trả về có phải là “https://dubkill.com”.

Mình sẽ viết code trong file test.py nha. Mình thì thích dùng Pycharm, nhưng bạn thậm chí có thể viết code bằng text editor như sublime cũng chẳng sao ^^.

Mình sẽ viết 1 đoạn để test cho 1 public API:

Bạn thấy đó, cú pháp chẳng có gì ghê gớm:

  • Bạn định nghĩa ra cái URL
  • Follow theo cái pattern trên, bạn request.get cái URL đó, format nó là json
  • Rồi sau đó cái data trả về, theo code, sẽ được return cho test_request
  • Bạn lấy data return từ test_request về. Ví dụ, để lấy data của uri, thì làtest_request.get(‘uri’). Cái này tùy vào format data nha, lát mình sẽ chỉ.
  • Bạn assert nó với data expect, không đúng thì báo lỗi: “chết rồi, sai hả :D”

Đừng ngại, cứ copy toàn bộ, đè vào file tests.py trong thư mục apidemo của bạn

sau đó để run file test này, bạn làm các bước sau.

  • Bạn cd vào thự mục demotvn
  • Tại đây, Run command: nó sẽ chạy tất cả test case trong file tests.py

  • Nếu bạn có nhiều test case trong này và chỉ thích chạy 1 test case, bạn run

  • Nói chung cú pháp là:

  • Nếu bạn thích chạy nguyên bộ test case của 1 class, bỏ cái test_case_name đi

Rồi, bạn đi tới bước này, làm theo tui chỉ hết, thì kết quả ra như vầy nè 😀

FAILED! Lý do là vì bạn có kết quả expect là http://dubkill.com trong khi đúng thì nó phải là https://dubkill.com. Fix cái code ở trên là sẽ chạy pass

8/ Demo API POST method

Mình sẽ demo 1 cái API post nha, cũng của OpenFPT:

Document ở đâyhttp://doc.openfpt.vn/services/name2gender/documentation.html#/README

ở đó bạn sẽ thấy nếu gọi API bạn có thể gọi bằng cách copy and paste dòng này vào terminal:

bạn để ý là ‘xxxxxxxx’ là cái key do mình tạo ra bằng cách đăng ký OpenFPT và create new app nha. Các bạn tự làm lấy phần đó, mình sẽ không public key của mình

Đây là 1 ví dụ good để demo cách viết code

  • Header parameter
  • Truyền data lúc call API
  • POST

Làm theo tất cả các step như mục số 7, với đoạn code sau đây:

ah, nhớ chắc chắn là bạn copy xong thì nó ngay hàng nha! Python nó dựa vào alignment để biết code thuộc part nào đó =.=

9/ Debug với Python

Nãy giờ chắc các bạn cũng để ý, trong code mình luôn có 1 đoạn

Khi bạn uncomment nó ra và chạy, nó sẽ là debug gate. Chương trình của bạn sẽ dừng tại đó cho bạn thỏa sức debug.

Bạn thử xem, chạy tới đây rồi bạn thử đánh:

  • test_request
  • test_request.get(‘name’)
  • test_request.get(‘gender’)

Nếu bạn muốn tiếp tục chạy code, gõ continue nha!

Bài hướng dẫn của mình tới đây là hết, chúc các bạn tìm thấy niềm vui trong việc test API để phát triển nghề nghiệp của mình.

Techtalk via Nguyen Duong Hai

CHIA SẺ