WebAPI टेस्टिंग में रिक्वेस्ट भेजना और रिस्पॉन्स प्राप्त करना शामिल है। WebAPI टेस्ट करने के कई तरीके हैं। यहां हम Postman और Swagger का उपयोग करके WebAPI टेस्ट करेंगे।
टेस्ट सेटअप: Student मॉडल और कंट्रोलर
Student मॉडल
namespace DemoWebApplication.Models
{
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Student कंट्रोलर
using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers
{
public class StudentController : ApiController
{
List students = new List
{
new Student { Id = 1, Name = "Mark" },
new Student { Id = 2, Name = "John" }
};
public IEnumerable Get()
{
return students;
}
public Student Get(int id)
{
return students.FirstOrDefault(x => x.Id == id);
}
}
}
विधि 1: Swagger का उपयोग करके टेस्टिंग
Swagger REST API को डॉक्यूमेंट करने के लिए एक स्पेसिफिकेशन है। यह REST वेब सर्विसेज का वर्णन करने के लिए फॉर्मेट (URL, मेथड, रिप्रेजेंटेशन) निर्दिष्ट करता है। मेथड्स, पैरामीटर्स, और मॉडल्स का विवरण सर्वर कोड में紧密 रूप से एकीकृत होता है, जिससे APIs और इसके डॉक्यूमेंटेशन में सिंक्रोनाइजेशन बना रहता है।
Swagger सेटअप
- NuGet से
SwashbuckleयाSwagger-Netइंस्टॉल करें - WebApiConfig में सक्षम करें
- प्रोजेक्ट चलाएं और
/swagger/ui/indexपर जाएं
// WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
// Swagger कॉन्फिगरेशन
config.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "DemoWebApplication");
}).EnableSwaggerUi();
}
Swagger UI के साथ टेस्टिंग
Swagger स्वचालित रूप से कंट्रोलर और उसके एक्शन मेथड्स को सूचीबद्ध करता है। हम संबंधित कंट्रोलर को एक्सपैंड करके एंडपॉइंट को अपने रिक्वेस्ट से टेस्ट कर सकते हैं।
Get All Students रिक्वेस्ट

Get All Students रिस्पॉन्स

Get Student by ID रिक्वेस्ट

Get Student by ID रिस्पॉन्स

विधि 2: Postman का उपयोग करके टेस्टिंग
Postman एक लोकप्रिय API क्लाइंट है जो डेवलपर्स के लिए APIs बनाना, शेयर करना, टेस्ट करना और डॉक्यूमेंट करना आसान बनाता है। यह यूजर्स को सिंपल और कॉम्प्लेक्स HTTP/S रिक्वेस्ट्स बनाने और सेव करने की अनुमति देता है, साथ ही उनके रिस्पॉन्स पढ़ने की भी।
Postman में टेस्टिंग

Get All Students रिक्वेस्ट और रिस्पॉन्स

Get Student by ID रिक्वेस्ट और रिस्पॉन्स

विधि 3: C# कोड से टेस्टिंग (HttpClient)
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class WebApiTester
{
private readonly HttpClient _client;
public WebApiTester(string baseUrl)
{
_client = new HttpClient { BaseAddress = new Uri(baseUrl) };
_client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
}
public async Task> GetAllStudentsAsync()
{
var response = await _client.GetAsync("api/student");
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject>(json);
}
public async Task GetStudentAsync(int id)
{
var response = await _client.GetAsync($"api/student/{id}");
if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
return null;
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject(json);
}
}
// उपयोग
var tester = new WebApiTester("https://localhost:58174/");
var all = await tester.GetAllStudentsAsync();
var one = await tester.GetStudentAsync(2);
विधि 4: यूनिट टेस्टिंग (Web API 2)
[TestClass]
public class StudentControllerTests
{
[TestMethod]
public async Task Get_ReturnsAllStudents()
{
// Arrange
var controller = new StudentController();
controller.Request = new HttpRequestMessage();
controller.Configuration = new HttpConfiguration();
// Act
var result = await controller.Get() as OkNegotiatedContentResult>;
// Assert
Assert.IsNotNull(result);
Assert.AreEqual(2, result.Content.Count);
}
[TestMethod]
public async Task Get_ReturnsStudentById()
{
var controller = new StudentController();
controller.Request = new HttpRequestMessage();
controller.Configuration = new HttpConfiguration();
var result = await controller.Get(1) as OkNegotiatedContentResult;
Assert.IsNotNull(result);
Assert.AreEqual("Mark", result.Content.Name);
}
}
विधि 5: ASP.NET Core में इंटीग्रेशन टेस्टिंग (TestServer)
public class StudentApiTests : IClassFixture>
{
private readonly HttpClient _client;
public StudentApiTests(WebApplicationFactory factory)
{
_client = factory.CreateClient();
}
[Fact]
public async Task GetAll_ReturnsStudents()
{
var response = await _client.GetAsync("/api/student");
response.EnsureSuccessStatusCode();
var students = await response.Content.ReadFromJsonAsync>();
Assert.Equal(2, students.Count);
}
}
टेस्टिंग टूल्स तुलना
| टूल | प्रकार | सर्वश्रेष्ठ लिए | लर्निंग कर्व |
|---|---|---|---|
| Swagger UI | इंटीग्रेटेड डॉक्स + टेस्ट | डेवलपमेंट के दौरान क्विक मैनुअल टेस्टिंग | कम |
| Postman | स्टैंडअलोन क्लाइंट | कॉम्प्लेक्स टेस्ट सीरीज, ऑटोमेशन, टीम कोलैबोरेशन | मध्यम |
| HttpClient (कोड) | प्रोग्रामेटिक | इंटीग्रेशन टेस्ट्स, CI/CD पाइपलाइन्स | मध्यम |
| Unit Tests | आइसोलेटेड | बिजनेस लॉजिक वैलिडेशन, फास्ट फीडबैक | मध्यम |
| TestServer | इन-मेमोरी इंटीग्रेशन | फुल पाइपलाइन टेस्टिंग बिना नेटवर्क के | उच्च |
सिफारिश: डेवलपमेंट के दौरान Swagger, मैनुअल एक्सप्लोरेशन के लिए Postman, CI/CD के लिए ऑटोमेटेड इंटीग्रेशन टेस्ट्स, और बिजनेस लॉजिक के लिए यूनिट टेस्ट्स का उपयोग करें।