Рубрики
Uncategorized

Интеграционный тест с Postman в Azure DevOps Pipeline: Часть 1

Postman — один из отличных инструментов для тестирования нашего веб -API. Мы используем его довольно часто при разработке веб -API, с меткой Azure, Postman, DevOps, Pipeline.

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 IEnumerable Get()
{
    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»