Тестирование API / REST Гарантированная консультация по автоматизации Советы и / или предложения - PullRequest
0 голосов
/ 08 апреля 2020

Действительно ищу некоторые практические советы и общие рекомендации. Ниже приведен текущий сценарий. У меня есть документ Excel, каждая строка будет считаться тестом с входными данными. Там будут сотни, если не тысячи строк. Допустим, например, что Row1 будет выглядеть как

Col1 ---------- | Col2 --------------- | Col3
TestingUser | TestingSurname | 1980/01/01

Это необходимо сопоставить с объектом JSON, а затем отправить / POST в конечную точку API. Затем мне нужно подтвердить возвращаемые данные, чтобы убедиться, что это правильные значения. Я рассмотрел следующие инструменты:

ReadyAPI
rest-assured.io

Вы бы порекомендовали какой-либо другой инструмент или среду для этого типа тестирования. Если вы работали с чем-то, и вы можете привести пример, который был бы великолепен.

Ответы [ 3 ]

0 голосов
/ 14 апреля 2020

Хорошо, поэтому я создал класс, используя скорость как шаблонный движок json.

Я создал тест, и в этом тесте у меня есть обычный java l oop. Это будет l oop через все xls, отображать значения и и отправлять в API.

Это все работает, как и ожидалось. Проблема заключается в том, что бегун отображает Default Suite Общее количество выполненных тестов: 1, пройдено: 0,

Однако l oop выполняется x раз. Как я могу обновить его, если при выполнении теста отображается общее количество выполненных тестов, равное 10 или такое же количество, что и для l oop.

Надеюсь, это имеет смысл

@Test
public void generatePostData() throws IOException {
    Workbook wb = WorkbookFactory.create(new File("data\\sc1.xlsx"));
    Sheet sheet = wb.getSheetAt(0);

    for (int i = 1; i < 10; i++) {
        //Get Excel Data
        Cell testNumber = sheet.getRow(i).getCell(1);
        System.out.println(testNumber.getNumericCellValue());
        //Velocity
        VelocityEngine ve = new VelocityEngine();
        ve.init();
        //get the template
        Template t = ve.getTemplate("post.json");
        //create context and add data
        VelocityContext context = new VelocityContext();
        //map data
        context.put("tpltestNumber", testNumber);
        //render to stringWriter
        StringWriter writer = new StringWriter();
        t.merge(context, writer);

        baseURI = "someURL";
        Response response =
                given()
                        .contentType("application/json")
                        .body(String.valueOf(writer))
                        .when()
                        .post()
                        .then()
                        .assertThat()
                        .statusCode(200)
                        .extract()
                        .response();

    }

}
0 голосов
/ 21 апреля 2020

Это ответ на вопрос, заданный в ответе автора основного вопроса. (Как получить количество выполненных строк Excel, для общего количества выполненных тестовых случаев)

Для этого необходимо передать данные с помощью метода с аннотацией DataProvider.

Документация TestNG

Поставщик данных в тестеNG

@DataProvider(name = "dp")
private Object[][] dataProvider() {
    Workbook wb;
    Sheet sheet = null;
    Object[][] excelRowArray = new Object[10][]; //this 10 the row count in the excel file

    try {
        wb = WorkbookFactory.create(new File("data\\sc1.xlsx"));
        sheet = wb.getSheetAt(0);
    } catch (IOException e) {
        e.printStackTrace();
    }

    for (int i = 1; i < 10; i++) {// Here 10 is the row count in the excel sheet
        //Get Excel Data row by row
        Cell testNumber = sheet.getRow(i).getCell(1);
        System.out.println(testNumber.getNumericCellValue());

        // Create a object array with the values taken from a singe excel row
        Object[] excelRow = new Object[]{testNumber};

        // Add the created object array to the 'excelRowArray'
        excelRowArray[i - 1] = excelRow;

    }
    return excelRowArray;
}

@Test(dataProvider = "dp")
public void generatePostData(Object[] excelRow) {
    // Here single excelRow will be passed each time.
    // And this will run till all object[] in excelRowArray are finished.
    // Total tests executed will be the number of 'excelRow' object arrays in 
    // excelRowArray. (Or excel row count in the sheet)

    //Velocity
    VelocityEngine ve = new VelocityEngine();
    ve.init();
    //get the template
    Template t = ve.getTemplate("post.json");
    //create context and add data
    VelocityContext context = new VelocityContext();
    //map data
    context.put("tpltestNumber", excelRow); // Here excelRow is used as the value
    //render to stringWriter
    StringWriter writer = new StringWriter();
    t.merge(context, writer);

    String baseURI = "someURL";
    Response response =
            given()
                    .contentType("application/json")
                    .body(String.valueOf(writer))
                    .when()
                    .post()
                    .then()
                    .assertThat()
                    .statusCode(200)
                    .extract()
                    .response();

}
0 голосов
/ 09 апреля 2020

Я не смог бы дать рекомендации, так как я не работал с RestAssured. Однако ниже приведены несколько преимуществ ReadyAPI:

  1. Кривая обучения мала, любой тестер будет в состоянии построить тестовый пример без зависимости от любого языка программирования. ReadyAPI имеет встроенную функцию для чтения данных из разных источников данных (DB, XML, json, csv, excel et c.) И вызова конечной точки REST путем передачи этих полей в заголовок, запрос и Json тело конца точка. Ответ на каждый вызов может быть сохранен в файл с помощью опции DataSink для шага теста для каждого из вызовов запросов, сделанных для записей из файла.

  2. Инструмент структурирован для простой сборки Тестовые случаи с несколькими этапами теста. Это больше похоже на перетаскивание для создания тестовых случаев. Иерархия - Project -> Test Suite -> Test Case -> Test Step.

  3. Простая интеграция с конвейером Jenkins CI / CD с помощью testRunner с широким спектром возможностей отчетов о тестировании. Отчеты об испытаниях доступны в виде Allure, отчетов Jasper, отчетов в стиле junit.

  4. Для большего количества технических тестеров, которым требуется больше контроля, можно использовать язык Groovy, javascript для построения сред.

  5. VirtServer и LoadUI - это другие инструменты SmartBear, которые можно использовать для проверки сервисов и выполнения тестов производительности по желанию.

У меня есть важный комментарий к сделайте здесь, если файл огромен (даже 1000 строк), я видел, как Ready API борется, когда инструмент выполняет тяжелую атлетику сзади. Следовательно, рекомендую использовать groovy скрипт с использованием Java API для любых файловых операций.

...