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