https://medium.com/@naruapon/api-และการทดสอบด้วย-test-script-46b8a09145e6
ติดตั้ง Flask
pip install Flask
สร้างไฟล์ app.py เพื่อเขียน API
from flask import Flask, request, jsonify
app = Flask(__name__)
users = {}
@app.route('/users', methods=['POST'])
def create_user():
user_id = len(users) + 1
user_data = request.json
users[user_id] = user_data
return jsonify({'id': user_id, 'user': user_data}), 201
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
user = users.get(user_id)
if user:
return jsonify({'id': user_id, 'user': user})
else:
return jsonify({'error': 'User not found'}), 404
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
if user_id in users:
del users[user_id]
return '', 204
else:
return jsonify({'error': 'User not found'}), 404
if __name__ == '__main__':
app.run(debug=True)
ติดตั้ง pytest และ requests ใช้ในการทดสอบ API
pip install pytest requests
สร้างไฟล์ test_api.py เพื่อเขียน test script
import requests
BASE_URL = "http://127.0.0.1:5000"
def test_create_user():
response = requests.post(f"{BASE_URL}/users", json={'name': 'John Doe', 'email': 'john@example.com'})
assert response.status_code == 201
response_data = response.json()
assert 'id' in response_data
assert response_data['user']['name'] == 'John Doe'
assert response_data['user']['email'] == 'john@example.com'
def test_get_user():
# Create a user first
response = requests.post(f"{BASE_URL}/users", json={'name': 'Jane Doe', 'email': 'jane@example.com'})
user_id = response.json()['id']
# Get the created user
response = requests.get(f"{BASE_URL}/users/{user_id}")
assert response.status_code == 200
response_data = response.json()
assert response_data['id'] == user_id
assert response_data['user']['name'] == 'Jane Doe'
assert response_data['user']['email'] == 'jane@example.com'
def test_delete_user():
# Create a user first
response = requests.post(f"{BASE_URL}/users", json={'name': 'Mark Smith', 'email': 'mark@example.com'})
user_id = response.json()['id']
# Delete the created user
response = requests.delete(f"{BASE_URL}/users/{user_id}")
assert response.status_code == 204
# Try to get the deleted user
response = requests.get(f"{BASE_URL}/users/{user_id}")
assert response.status_code == 404
assert response.json()['error'] == 'User not found'
รัน Flask API
python app.py
รัน Test Script
pytest test_api.py