Postman — один из отличных инструментов для тестирования нашего веб -API. Мы используем его довольно часто при разработке веб -API, и мы также можем использовать его в качестве интеграционного теста в конвейере Azure DevOps.
В этой статье я создаю Web API и сценарий Test Postman.
Мы можем использовать любой язык для разработки нашего веб -API, но я использую .net 5 C#, так как это мой любимый. Вы можете использовать свой собственный.
dotnet new webapi -n mywebapi cd mywebapi dotnet run
После того, как приложение запускается, я могу потреблять веб -API через почтальон.
Давайте создадим простые тесты. Вы можете обратиться к Примеры сценария испытаний почтальона Чтобы получить примеры тестовых сценариев.
1. Нажмите вкладку Tests.
2. Добавьте следующий фрагмент кода.
var jsonResponse = pm.response.json(); console.log(jsonResponse);
3. Нажмите «Отправить», чтобы запустить как запрос, так и тестирование. Мы можем увидеть выход в Консоль который вы можете найти внизу слева.
4. Обновите тестовый скрипт, чтобы включить PM.Test и PM.XPECT .
var jsonResponse = pm.response.json();
pm.test("5 results are returned", () => {
pm.expect(jsonResponse).to.have.lengthOf(5);
});
5. Отправить запрос и подтвердить результат в Результаты теста панель
Мы можем использовать коллекцию, чтобы иметь несколько запросов/ответа и тестирования в качестве одного набора.
1. Нажмите «Сохранить как» в меню «Сохранить».
2. Введите имя и добавьте его в существующую или новую коллекцию.
3. Теперь это в коллекции.
Прежде чем добавить больше тестов, давайте обновим существующий веб -API для поддержки Odata.
1. Вернитесь в решение и добавьте [Microsoft. Aspnetcore. Одата] Пакет. Я использую версию 7.5.7.
2. Добавить Microsoft. Aspnetcore. MVC. Newtonsoftjson слишком.
3. Обновите Configureservices в startup.cs и разрешайте пользователи.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers().AddNewtonsoftJson(opt =>
{
opt.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
services.AddOData();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "mywebapi", Version = "v1" });
});
}
4. Также обновить приложение. Раздел использования точек в методе настройки.
app.UseEndpoints(endpoints =>
{
endpoints.EnableDependencyInjection();
endpoints.Select().MaxTop(100).Filter().OrderBy();
endpoints.MapODataRoute("odata", "odata", GetEdmModel());
endpoints.MapControllers();
});
5. Добавить метод getmdmodel.
private static IEdmModel GetEdmModel()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
var weatherForecast = builder.EntitySet("WeatherForecast");
builder.EnableLowerCamelCase();
return builder.GetEdmModel();
}
6. Измените WeatherForeCastController.cs, чтобы наследовать от OdataController.
public class WeatherForecastController : ODataController
7. Добавить [EnableQuery] Атрибут для получения метода.
[HttpGet] [EnableQuery] public IEnumerableGet() { var rng = new Random(); return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = rng.Next(-20, 55), Summary = Summaries[rng.Next(Summaries.Length)] }) .ToArray(); }
8. Обновите weaterforecast.cs, чтобы иметь идентификационную собственность.
public class WeatherForecast
{
public int Id { get; set; }
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string Summary { get; set; }
}
9. Убедитесь, что он успешно компилируется.
Когда я добавил поддержку Odata, давайте обновим существующий тест.
1. Выберите «Получить WeatherForeCast» из URL -адреса запроса на сбор и обновления.
https://localhost:5001/odata/WeatherForecast
2. Отправить запрос, и вы увидите неудачный тест. Это потому, что возвращаемый результат отличается от раньше.
3. Обновите скрипт.
var jsonResponse = pm.response.json();
pm.test("5 results are returned", () => {
pm.expect(jsonResponse.value).to.have.lengthOf(5);
});
4. Отправьте запрос еще раз и подтвердите, что он работает. Сохраните, как только вы это подтвердили.
Вернитесь в почтальон и добавьте еще пару тестов с запросом Odata.
1. Нажмите вкладку [+] и введите следующий запрос.
https://localhost:5001/odata/WeatherForecast?$select=id,summary
2. Добавьте следующий сценарий к вкладке Tests. Это оценивает, есть ли у всех возвращенных объектов идентификатор поля и резюме.
var jsonResponse = pm.response.json();
pm.test("All entities have id and summary fields", () => {
jsonResponse.value.all((value)=>
pm.expect(value).to.have.keys('id','summary'));
});
pm.test("Http status 200", () => {
pm.response.to.have.status(200);
});
3. Отправить запрос см. Результат.
4. Сохраните его в коллекцию.
5. Добавьте еще один запрос, как ниже.
https://localhost:5001/odata/WeatherForecast?$top=1
6. Добавьте скрипт тестов.
var jsonResponse = pm.response.json();
pm.test("1 results are returned", () => {
pm.expect(jsonResponse.value).to.have.lengthOf(1);
});
pm.test("Http status 200", () => {
pm.response.to.have.status(200);
});
7. Подтвердите результат и сохраните его в коллекции.
В этой статье я создал Web API ODATA, включенный, с .NET 5 и создал три теста, используя почтальон. В следующей статье я объясню, как запустить тест из CUI, чтобы мы могли запустить его в трубопроводе DevOps.
Следующая статья
Оригинал: «https://dev.to/kenakamu/integration-test-with-postman-in-azure-devops-pipeline-part-1-2h5j»