Viết API Automation Test Bằng Python - LinkedIn
Có thể bạn quan tâm
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 inWelcome back
Email or phone Password Show Forgot password? Sign inor
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 is better on the app
Don’t have the app? Get it in the Microsoft Store.
Open the app Skip to main content 12 min readChà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 python3/ Install pip
Đơn giản là nó install Python cho bạn
sudo easy_install pip4/ 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 requests5/ 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 django6/ 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 demotvnsau đó thì
cd demotvnDòng lệnh 2:
python manage.py startapp apidemoCuố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.comNế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
- 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è :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
- X
- Report this comment
cho hỏi là anh Hải đang dùng IDE nào để dev Python vậy ạ?
Like Reply 1 Reaction- Report this comment
tối về set up chạy thử
Like Reply 1 Reaction 2 Reactions- Report this comment
so easy :)
Like Reply 2 Reactions 3 Reactions- 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 commentsTo 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
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
Từ khóa » Viết Api Bằng Python
-
API Trong Python - Hướng Dẫn Sử Dụng API Cho Người Mới Bắt đầu
-
FastAPI: Tạo API Chuẩn Và Cực Nhanh Trong Python - Fullstack Station
-
Xây Dựng Một RESTful API đơn Giản Với Python Flask - Viblo
-
Tạo Các API REST Bằng Python Bằng Flask
-
Cách Sử Dụng API Web Trong Python 3
-
Xây Dựng Một RestFul API đơn Giản Với Python Và Flask - DVMS
-
Xây Dựng REST API đơn Giản Với Python Flask - Phần 1 - YouTube
-
Chi Tiết Bài Học 5. Xây Dựng Web API Với Flask - Vimentor
-
Lập Trình API Với Python: 8 Khuôn Khổ Phổ Biến - ZINPRO
-
Cách Sử Dụng API Rest Với Python
-
Thiết Kế Một RESTful API Bằng Python Và Flask. - Happy Coding !!!
-
Hướng Dẫn Lập Trình Flask – Phần 23: Xây Dựng API - Thai's Tech Blog
-
Python | Hướng Dẫn, API, SDK, Tài Liệu - Amazon AWS
-
Sử Dụng API Python để Thu Thập Và Trích Xuất Dữ Liệu