FastAPI एंडपॉइंट का एकीकरण परीक्षण
अनुरोधों का अनुकरण करने के लिए FastAPI के `TestClient` का उपयोग करके अपने API एंडपॉइंट के एकीकरण परीक्षण करें।
FastAPI एंडपॉइंट का एकीकरण परीक्षण, CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
एकीकरण परीक्षण क्या है?
एकीकरण परीक्षण में आपका स्वागत है! यूनिट परीक्षणों के बारे में सीखने के बाद अब यह देखने का समय है कि आपके FastAPI अनुप्रयोग के अलग-अलग हिस्से एक साथ कैसे काम करते हैं।
- यूनिट परीक्षण अलग-अलग फ़ंक्शन या घटकों की अलगाव में जाँच करते हैं।
- एकीकरण परीक्षण यह सत्यापित करते हैं कि आपके सिस्टम के कई घटक सही ढंग से एक-दूसरे के साथ काम करते हैं। FastAPI अनुप्रयोग के लिए इसका अर्थ है आपके API एंडपॉइंट का परीक्षण करना और जाँचना कि वे अनुरोधों को संभालते हैं, निर्भरताओं के साथ काम करते हैं और अपेक्षित प्रतिक्रियाएँ लौटाते हैं।
ये परीक्षण सुनिश्चित करते हैं कि आपके API के सभी हिस्से जुड़े होने पर वह अपेक्षा के अनुसार व्यवहार करे।
FastAPI के TestClient का परिचय
FastAPI fastapi.testclient से प्राप्त TestClient नामक एक शक्तिशाली उपकरण देता है। यह क्लाइंट आपको सक्रिय सर्वर चलाए बिना अपने FastAPI अनुप्रयोग को HTTP अनुरोध भेजने देता है।
- यह अनुरोधों का सीधे मेमोरी में अनुकरण करता है।
- यह लोकप्रिय
httpxलाइब्रेरी पर आधारित है। - विकास के दौरान अपने API एंडपॉइंट का तेज़ी से परीक्षण करने के लिए यह बहुत उपयोगी है।
आइए देखें कि इसे कैसे सेट अप किया जाता है!
अपना TestClient सेट अप करना
TestClient का उपयोग करने के लिए पहले आपको अपने FastAPI अनुप्रयोग इंस्टेंस को इंपोर्ट करना होगा और फिर उसे TestClient कंस्ट्रक्टर में पास करना होगा। इससे अनुकरण किए गए अनुरोध भेजने के लिए तैयार एक क्लाइंट इंस्टेंस बनता है।
मूलभूत सेटअप देखने के लिए यह उदाहरण चलाकर देखें:
from fastapi import FastAPI
from fastapi.testclient import TestClient
# 1. Define your FastAPI app
app = FastAPI()
# 2. Define a simple endpoint
@app.get("/hello")
async def read_hello():
return {"message": "Hello Test!"}
# 3. Create a TestClient instance
client = TestClient(app)
# 4. Define a test function
def test_read_hello():
# Use the client to make a GET request
response = client.get("/hello")
# Assertions to check the response
assert response.status_code == 200
assert response.json() == {"message": "Hello Test!"}
print("Test Passed: /hello endpoint works!")
# This block makes the script runnable directly
if __name__ == "__main__":
print("Running a simple test with TestClient...")
test_read_hello()
GET अनुरोधों का परीक्षण
GET अनुरोध भेजना सीधा है। आपको बस अपने TestClient इंस्टेंस पर .get() मेथड कॉल करके उस एंडपॉइंट का पथ देना है, जिसका आप परीक्षण करना चाहते हैं।
अनुरोध भेजने के बाद परिणाम सत्यापित करने के लिए आप response ऑब्जेक्ट की .status_code और .json() जैसी प्रॉपर्टी का उपयोग कर सकते हैं।
from fastapi import FastAPI
from fastapi.testclient import TestClient
app = FastAPI()
@app.get("/items/")
async def read_items():
return [{"name": "Laptop"}, {"name": "Mouse"}]
client = TestClient(app)
def test_read_items():
response = client.get("/items/")
print(f"Status Code: {response.status_code}")
print(f"Response JSON: {response.json()}")
assert response.status_code == 200
assert len(response.json()) == 2
assert response.json()[0]["name"] == "Laptop"
print("Test Passed: /items/ returns correct data!")
if __name__ == "__main__":
print("Testing /items/ endpoint...")
test_read_items()
पथ और क्वेरी पैरामीटर का परीक्षण
TestClient पथ और क्वेरी पैरामीटर को वास्तविक ब्राउज़र की तरह संभालता है। पथ पैरामीटर सीधे URL स्ट्रिंग में शामिल किए जाते हैं और क्वेरी पैरामीटर URL में जोड़े जा सकते हैं या params तर्क के माध्यम से पास किए जा सकते हैं।
क्वेरी पैरामीटर के लिए params तर्क का उपयोग अक्सर अधिक साफ़ होता है और यह URL एन्कोडिंग को अपने आप संभालता है।
from fastapi import FastAPI
from fastapi.testclient import TestClient
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
if q:
return {"item_id": item_id, "q": q}
return {"item_id": item_id}
client = TestClient(app)
def test_read_item_with_query():
# Path param 5, Query param q=hello
response = client.get("/items/5", params={"q": "hello"})
assert response.status_code == 200
assert response.json() == {"item_id": 5, "q": "hello"}
print("Test Passed: Path & Query params handled!")
def test_read_item_no_query():
# Only path param 10
response = client.get("/items/10")
assert response.status_code == 200
assert response.json() == {"item_id": 10}
print("Test Passed: Path param only handled!")
if __name__ == "__main__":
print("Testing path and query parameters...")
test_read_item_with_query()
test_read_item_no_query()
JSON के साथ POST अनुरोधों का परीक्षण
जिन एंडपॉइंट को अनुरोध बॉडी की आवश्यकता होती है (जैसे POST या PUT), उनके लिए आप Python डिक्शनरी को सीधे क्लाइंट मेथड के json तर्क में पास कर सकते हैं। TestClient इस डिक्शनरी को अपने आप JSON स्ट्रिंग में बदल देगा और उपयुक्त Content-Type हेडर सेट कर देगा।
from fastapi import FastAPI
from pydantic import BaseModel
from fastapi.testclient import TestClient
app = FastAPI()
class Product(BaseModel):
name: str
price: float
description: str | None = None
@app.post("/products/")
async def create_product(product: Product):
return product
client = TestClient(app)
def test_create_product():
product_data = {"name": "Widget", "price": 29.99}
response = client.post(
"/products/",
json=product_data
)
assert response.status_code == 200
assert response.json() == {"name": "Widget", "price": 29.99, "description": None}
print("Test Passed: POST request with JSON body!")
if __name__ == "__main__":
print("Testing POST request...")
test_create_product()
परीक्षण के लिए निर्भरताओं को ओवरराइड करना
FastAPI की सबसे शक्तिशाली परीक्षण सुविधाओं में से एक निर्भरताओं को आसानी से ओवरराइड करने की क्षमता है। यह उन एकीकरण परीक्षणों के लिए बहुत महत्वपूर्ण है जिनमें आप ये काम करना चाह सकते हैं:
- बाहरी सेवाओं का मॉक बनाना (जैसे, भुगतान गेटवे)।
- प्रोडक्शन डेटाबेस के बजाय परीक्षण डेटाबेस का उपयोग करना।
- विशिष्ट परीक्षण डेटा या कॉन्फ़िगरेशन इंजेक्ट करना।
आप app.dependency_overrides का उपयोग करके किसी निर्भरता फ़ंक्शन को अस्थायी रूप से किसी दूसरे फ़ंक्शन से बदल सकते हैं।
निर्भरता ओवरराइड लागू करना
किसी निर्भरता को ओवरराइड करने के लिए आप app.dependency_overrides डिक्शनरी में मूल निर्भरता फ़ंक्शन के लिए अपना मॉक फ़ंक्शन असाइन करते हैं। अपने परीक्षण के बाद इन ओवरराइड को साफ़ करना बहुत आवश्यक है, ताकि वे अन्य परीक्षणों को प्रभावित न करें।
आइए देखें कि किसी 'वास्तविक' सेटिंग को 'परीक्षण' सेटिंग से कैसे बदला जाता है:
from fastapi import FastAPI, Depends
from fastapi.testclient import TestClient
app = FastAPI()
# Our 'real' dependency function
def get_current_env():
return "production"
@app.get("/environment/")
async def get_environment(env: str = Depends(get_current_env)):
return {"current_environment": env}
client = TestClient(app)
def test_get_environment_default():
response = client.get("/environment/")
assert response.status_code == 200
assert response.json() == {"current_environment": "production"}
print("Default environment test passed!")
def test_get_environment_override():
# Our mock dependency function for testing
def override_get_current_env():
return "test"
# Apply the override
app.dependency_overrides[get_current_env] = override_get_current_env
response = client.get("/environment/")
assert response.status_code == 200
assert response.json() == {"current_environment": "test"}
print("Overridden environment test passed!")
# IMPORTANT: Clear overrides after the test
app.dependency_overrides.clear()
if __name__ == "__main__":
print("Testing dependency overrides...")
test_get_environment_default()
test_get_environment_override()
ओवरराइड की साफ़-सफ़ाई सुनिश्चित करना
app.dependency_overrides को साफ़ न करने से 'लीकी' परीक्षण हो सकते हैं, जिनमें एक परीक्षण का ओवरराइड अनजाने में बाद के परीक्षणों को प्रभावित करता है। हमेशा app.dependency_overrides को रीसेट करना सुनिश्चित करें, आमतौर पर इसे फिर से खाली डिक्शनरी पर सेट करके या .clear() का उपयोग करके।
इससे यह सुनिश्चित होता है कि प्रत्येक परीक्षण साफ़ और अनुमानित स्थिति में चलता है।
अपने ज्ञान की जाँच करें!
FastAPI के TestClient के बारे में निम्नलिखित में से कौन-सा कथन TRUE है?
पुनरावलोकन और अगले चरण
बहुत अच्छा! आपने अपने FastAPI अनुप्रयोग पर एकीकरण परीक्षण करना सीख लिया है:
- हमने जाना कि एकीकरण परीक्षण क्या होता है और यह महत्वपूर्ण क्यों है।
- आपने विभिन्न HTTP अनुरोधों का अनुकरण करने के लिए FastAPI के
TestClientको सेट अप करना और उसका उपयोग करना सीख लिया। - हमने GET और POST अनुरोधों का परीक्षण करना सीखा, जिसमें पथ, क्वेरी और JSON बॉडी पैरामीटर को संभालना शामिल है।
- अब आप अपने परीक्षण परिवेश को अलग रखने और नियंत्रित करने के लिए निर्भरता ओवरराइड का प्रभावी ढंग से उपयोग करना समझते हैं।
मज़बूत और विश्वसनीय FastAPI अनुप्रयोग बनाने के लिए ये कौशल आवश्यक हैं। अभ्यास करते रहें और बहुत जल्द आप व्यापक परीक्षण लिखने लगेंगे!
एआई शिक्षक के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 21
- पाठ
- 84
अक्सर पूछे जाने वाले प्रश्न
क्या “FastAPI एंडपॉइंट का एकीकरण परीक्षण” पाठ निःशुल्क है?
हाँ — FastAPI बैकएंड डेवलपमेंट बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “FastAPI एंडपॉइंट का एकीकरण परीक्षण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“FastAPI एंडपॉइंट का एकीकरण परीक्षण” में मैं क्या सीखूँगा?
अनुरोधों का अनुकरण करने के लिए FastAPI के `TestClient` का उपयोग करके अपने API एंडपॉइंट के एकीकरण परीक्षण करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ FastAPI बैकएंड डेवलपमेंट बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर FastAPI बैकएंड डेवलपमेंट बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“FastAPI एंडपॉइंट का एकीकरण परीक्षण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर FastAPI बैकएंड डेवलपमेंट बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Pytest के साथ यूनिट परीक्षण
- FastAPI एंडपॉइंट का एकीकरण परीक्षण
- FastAPI अनुप्रयोगों की डीबगिंग
- FastAPI परीक्षणों में निर्भरताओं का मॉकिंग