Viết API Automation Test Bằng Python - LinkedIn

As of July 1, LinkedIn will no longer support the Internet Explorer 11 browser. LinkedIn recommends the new browser from Microsoft. Download now

Agree & Join LinkedIn

By clicking Continue to join or sign in, you agree to LinkedIn’s User Agreement, Privacy Policy, and Cookie Policy.

Sign in to view more content

Create your free account or sign in to continue your search

Sign in

Welcome back

Email or phone Password Show Forgot password? Sign in

or

By clicking Continue to join or sign in, you agree to LinkedIn’s User Agreement, Privacy Policy, and Cookie Policy.

New to LinkedIn? Join now

or

New to LinkedIn? Join now

By clicking Continue to join or sign in, you agree to LinkedIn’s User Agreement, Privacy Policy, and Cookie Policy.

LinkedIn

LinkedIn is better on the app

Don’t have the app? Get it in the Microsoft Store.

Open the app Skip to main content
Viết API automation test bằng python

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

/usr/bin/ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

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 :).

brew install python

3/ Install pip

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

sudo easy_install pip

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,...

Pip install requests

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.

pip install django

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

Dòng lệnh 1:

django-admin startproject demotvn

sau đó thì

cd demotvn

Dòng lệnh 2:

python manage.py startapp apidemo

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

http://api.openfpt.vn/cyradar/?url=https://dubkill.com

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à

{ "conclusion": "danger", "domain": "dubkill.com", "threat": [ "malicious" ], "uri": "https://dubkill.com" }

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:

import json import requests import unittest classTVNTestCase(unittest.TestCase):# fixtures = ['data/test_data_dump.json', ]defsetUp(self):# self.client = Client() self.request = requests deftest_demo_get(self): url = 'http://api.openfpt.vn/cyradar/?url=https://dubkill.com' test_request = self.request.get(url).json() #import pdb;#pdb.set_trace() self.assertEqual(test_request.get('uri'),'http://dubkill.com', 'chet roi, sai ha :D')

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
python manage.py test apidemo.tests
  • Nếu bạn có nhiều test case trong này và chỉ thích chạy 1 test case, bạn run
python manage.py test apidemo.tests.TVNTestCase.test_demo_get
  • Nói chung cú pháp là:
python manage.py test folder_api_name.file_name.class_name.test_case_name
  • 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è :D

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 ở đây http://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:

curl -X POST -H "api_key: xxxxxxxxxxxxx" -H "Cache-Control: no-cache" -d 'Nguyễn Dương Hải' "http://api.openfpt.vn/name2gender/json"

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:

deftest_demo_post(self):# this is URL url = 'http://api.openfpt.vn/name2gender/json'# this is custom headers.# you need to send api_key and Cache-Control headers = {"api_key": "xxxxxxxxxxxxxxx", "Cache-Control": "no-cache"} # This is where you define data data = {'Nguyen Duong Hai': ''} # --> Just want to say, IT IS WEIRD, usually the first is parameter# and come later is the value, but this API is just weird.#Now send your post request with data and header test_request = self.request.post(url, params=data, headers=headers).json() # import pdb;# pdb.set_trace() self.assertEqual(test_request.get('gender'), 'female','chet roi, sai ha :D')

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

# import pdb;# pdb.set_trace()

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.

Like Like Celebrate Support Love Insightful Funny Comment
  • Copy
  • LinkedIn
  • Facebook
  • X
Share 13 Comments Nguyen (Johan) HP., graphic Nguyen (Johan) HP. 9y
  • Report this comment

cho hỏi là anh Hải đang dùng IDE nào để dev Python vậy ạ?

Like Reply 1 Reaction Tai Tuan Phan, graphic Tai Tuan Phan 9y
  • Report this comment

tối về set up chạy thử

Like Reply 1 Reaction 2 Reactions Tai Nguyen, graphic Tai Nguyen 9y
  • Report this comment

so easy :)

Like Reply 2 Reactions 3 Reactions Ha Do, graphic Ha Do 9y
  • Report this comment

mình cũng có tập tành viết, có sử dụng trong automation nhưng chỉ ở dạng tạo dữ liệu thôi, bạn có thể chia sẽ thêm về cách tiếp cận api test sao cho hiểu quả được không?

Like Reply 3 Reactions 4 Reactions See more comments

To view or add a comment, sign in

More articles by Nguyen Duong Hai

  • Điểm tương đồng giữa PT(personal trainer) và QA Jul 13, 2025

    Điểm tương đồng giữa PT(personal trainer) và QA

    Cách đây tầm 10 năm, tôi có viết bài nói về việc so sánh làm QA như cảnh sát, thám tử, nhà tư vấn. Tới bây giờ, tôi…

  • Câu chuyện của niềm tin và chất lượng sản phẩm. Jul 7, 2025

    Câu chuyện của niềm tin và chất lượng sản phẩm.

    Dạo gần đây, có rất nhiều vụ phát hiện hàng giả, hàng kém chất lượng nhưng vẫn được các KOL nổi tiếng quảng bá, và cuối…

  • QE centralization thoughts (part 1) May 23, 2025

    QE centralization thoughts (part 1)

    tl dr; vài suy nghĩ của bản thân cho việc quản lý những QE được assigned vào những team Agile nhỏ trong 1 hệ sinh thái…

    1 Comment
  • Leaders có nên dễ bị tổn thương? Mar 26, 2023

    Leaders có nên dễ bị tổn thương?

    Đây là một trong những điều khá mới mẻ mà tôi học được từ Simon Sinek mà phần lớn những quyển sách khác, hay những diễn…

  • Leader eat first AND leader eat last Mar 13, 2023

    Leader eat first AND leader eat last

    Lấy cảm hứng từ những bài giảng và quyển sách "Leader eat last" của Simon Sinek. tl;dr nói về 2 mẫu leader rất riêng…

    2 Comments
  • Khi Test và Dev chung một nhà - P7 Mar 7, 2023

    Khi Test và Dev chung một nhà - P7

    Các bạn QC làm micro services và làm ở mảng API phục vụ cho service BE khác hoặc UI thường gặp những request thế này…

  • Khi code và Dev chung một nhà - P6 Feb 21, 2023

    Khi code và Dev chung một nhà - P6

    tl,dr: cách tôi áp dụng whitebox testing cho việc test những yêu cầu thay đổi nhỏ trong 1 API/flow lớn. Dạo gần đây tôi…

    3 Comments
  • Khi code Dev và test chung một nhà - P5 Nov 30, 2022

    Khi code Dev và test chung một nhà - P5

    Team bạn cần quản lý cả 2 thứ: pipeline và Code/Test folder Hãy nói về một trong những con service cũ chúng tôi nhận…

  • Khi code Dev và test chung một nhà - P4 Nov 18, 2022

    Khi code Dev và test chung một nhà - P4

    Phần 4: Viết thêm internal API/Feature để support cho việt Testing và monitoring. 1/ Mindset trong testing cronjob thay…

  • Sau 7 năm, cuối cùng tôi cũng đã có thể thẳng thắn chia sẻ về lúc nghỉ việc của mình ở Atlassian VietNam (CTC) Nov 10, 2022

    Sau 7 năm, cuối cùng tôi cũng đã có thể thẳng thắn chia sẻ về lúc nghỉ việc của mình ở Atlassian VietNam (CTC)

    Ở LinkedIn gần đây tôi đọc được khá nhiều những bài viết chia tay tích cực từ những nhân viện bị cắt giảm của Twitter…

    1 Comment
Show more See all articles

Explore content categories

  • Career
  • Productivity
  • Finance
  • Soft Skills & Emotional Intelligence
  • Project Management
  • Education
  • Technology
  • Leadership
  • Ecommerce
  • User Experience
  • Recruitment & HR
  • Customer Experience
  • Real Estate
  • Marketing
  • Sales
  • Retail & Merchandising
  • Science
  • Supply Chain Management
  • Future Of Work
  • Consulting
  • Writing
  • Economics
  • Artificial Intelligence
  • Employee Experience
  • Workplace Trends
  • Fundraising
  • Networking
  • Corporate Social Responsibility
  • Negotiation
  • Communication
  • Engineering
  • Hospitality & Tourism
  • Business Strategy
  • Change Management
  • Organizational Culture
  • Design
  • Innovation
  • Event Planning
  • Training & Development
Show more Show less

Từ khóa » Viết Api Bằng Python