Введение

Интеграционное тестирование — это метод тестирования программного обеспечения, при котором отдельные модули приложения тестируются несколькими способами, чтобы определить, работают ли они вместе так, как предполагалось. Интеграционное тестирование фокусируется на тестировании взаимодействий и интерфейсов между различными модулями кода, а не на функциональности отдельных модулей.

Повестка дня

  • Интеграционное тестирование
  • Тестирование кипариса
  • Создайте приложение с помощью Flask и React
  • Протестируйте приложение с Cypress

Интеграционное тестирование

Интеграционное тестирование необходимо, поскольку оно помогает выявить проблемы, которые могут быть незаметны во время модульного тестирования, например, проблемы с потоком данных или связью между различными модулями кода. Это также помогает убедиться, что приложение в целом работает правильно и отвечает потребностям пользователей.

Интеграционное тестирование отличается от модульного тестирования тем, что модульное тестирование фокусируется на изолированном тестировании отдельных модулей кода. Напротив, интеграционное тестирование фокусируется на тестировании взаимодействий и интерфейсов между различными единицами кода. Модульное тестирование обычно выполняется разработчиками, в то время как отдельная группа тестирования часто выполняет интеграционное тестирование. Кроме того, модульное тестирование обычно выполняется на ранней стадии процесса разработки, а интеграционное тестирование — на более позднем этапе процесса разработки.

Интеграционное тестирование — это тип тестирования, который фокусируется на взаимодействии между различными компонентами вашего приложения. В Cypress интеграционное тестирование можно выполнить, создав тестовые примеры, имитирующие взаимодействие пользователя с приложением, и утверждая, что ожидаемое поведение происходит.

Установить Кипарис

Чтобы установить Cypress, в вашей системе должны быть установлены Node.js и npm (менеджер пакетов Node). Затем вы можете использовать следующую команду для установки Cypress:

npm install cypress --save-dev

Cypress использует Mocha в качестве средства запуска тестов и Chai в качестве библиотеки утверждений. Чтобы создать новый тестовый файл, вы можете использовать следующую команду:

npx cypress open

Эта команда создает новую папку с именем «кипарис» в каталоге вашего проекта, где вы можете найти тестовые файлы.

Пишите тест-кейсы.

  • Cypress использует JavaScript API для взаимодействия с браузером, поэтому вы можете писать тестовые примеры с помощью JavaScript.
  • Например, чтобы протестировать функцию входа на веб-сайт, вы можете написать тестовый пример, который имитирует пользователя, который вводит свое имя пользователя и пароль и нажимает кнопку входа. Затем вы можете утверждать, что пользователь перенаправляется на правильную страницу после успешного входа в систему.

Запустите тестовые случаи

Для запуска тестовых случаев вы можете использовать следующую команду:

npx cypress run

Эта команда запускает все тестовые примеры в папке «cypress/integration».

Подтвердите результаты

  • Cypress использует библиотеку утверждений Chai, чтобы утверждать, что результаты тестов соответствуют ожидаемым результатам.
  • Например, после успешного входа в систему вы можете утверждать, что пользователь перенаправлен на правильную страницу, проверив URL-адрес текущей страницы.

Взаимодействие с веб-страницей

Cypress упрощает взаимодействие с веб-страницей с помощью своего API. Вы можете использовать метод cy.get() для выбора элементов на странице и методы .type(), .click() и .should() для имитации взаимодействия с пользователем и подтверждения результатов.

Например, вы можете использовать cy.get('#username').type('myusername') для ввода текста в поле ввода и cy.get('#login-button').click() для нажатия кнопки.

Отладка

Cypress предоставляет встроенный инструмент запуска тестов на основе браузера, который упрощает отладку тестовых случаев. Вы можете использовать оператор debugger, чтобы приостановить выполнение теста в определенной точке и проверить состояние приложения.

Дополнительные возможности

Cypress также предоставляет дополнительные функции, такие как автоматическое ожидание, автоматические повторные попытки и возможность делать скриншоты и видео выполнения теста, которые помогают повысить надежность и ремонтопригодность ваших тестов.

Создайте приложение с помощью Flask и React.

Пришло время создать приложение с помощью Flask и React и выполнить интеграционное тестирование с помощью Cypress!

Создайте новый каталог для своего проекта, перейдите в него и создайте новую виртуальную среду с помощью команды python -m venv env

Активируйте виртуальную среду с помощью команды source env/bin/activate. Установите Flask с помощью pip

pip install flask flask-cors

Создайте новый файл с именем app.py и импортируйте Flask from flask import Flask, jsonify. Создайте новое приложение Flask и определите маршрут, который возвращает некоторые данные в формате JSON:

from flask import Flask, jsonify
from flask_cors import CORS, cross_origin

app = Flask(__name__)
CORS(app)

@app.route("/data")
@cross_origin()
def data():
    return jsonify({"message": "Hello, World!"})
if __name__ == "__main__":
    app.run(debug=True)

Создайте новый каталог для своего приложения React и перейдите к нему. Используйте create-react-app для создания нового приложения React npx create-react-app my-app

В новом каталоге вы можете запустить сервер разработки с помощью команды npm start.

В приложении React вы можете сделать вызов API к конечной точке Flask и отобразить данные на внешнем интерфейсе. Например, вы можете создать новый компонент с именем Data.js и сделать вызов API в хуке useEffect:

import React, { useState, useEffect } from "react";
function Data() {
  const [data, setData] = useState({});
  useEffect(() => {
    fetch("http://localhost:5000/data")
      .then((res) => res.json())
      .then((data) => setData(data));
  }, []);
  return <div>{data.message}</div>;
}
export default Data;

Теперь, когда ваше приложение запущено, вы можете начать писать тесты Cypress. Во-первых, вам нужно будет установить Cypress: npm install cypress --save-dev.

Затем создайте новый каталог с именем cypress в корне вашего проекта и запустите npx cypress open, чтобы открыть Cypress Test Runner:

Вы будете перенаправлены на следующую страницу:

Выберите E2E-тестирование:

Нажмите «Продолжить». На изображении выше вы можете увидеть образец теста.

Теперь мы напишем собственный тест с помощью Cypress. В Cypress Test Runner вы можете создать новый тестовый файл, нажав кнопку New Spec.

Добавьте код во вновь созданный тестовый файл из редактора по вашему выбору. Я выбрал vscode, так как редактирую на нем свои тесты. Перед запуском теста перейдите на localhost:3000 и проверьте, правильно ли отображается веб-страница. Если это так, вы сможете увидеть следующий экран:

Пишите тестовые случаи

Напишите тестовые случаи, которые выполняют действия во внешнем интерфейсе и утверждают, что отображаются правильные данные. Например, вы можете проверить, что правильный текст отображается на странице после вызова API:

describe("Data", () => {
  it("displays data", () => {
    cy.visit("http://localhost:3000");
    cy.contains("Hello, World!");
  });
});

Запустите приведенный выше тестовый файл. Вы получите следующий вывод:

Обновите тестовый файл, чтобы проверить, содержит ли страница фразу «Python Code Nemesis».

describe("Data", () => {
  it("displays data", () => {
    cy.visit("http://localhost:3000");
    cy.contains("Hello, World!");
    cy.contains("Python Code Nemesis");
  });
});

После повторного запуска теста вы сможете увидеть следующий экран:

Протестируйте серверную часть Flask

Затем вы можете использовать метод Cypress cy.request() для отправки запросов на конечную точку Flask и подтверждения правильности данных ответа.

describe("Data API", () => {
  it("returns data", () => {
    cy.request("http://localhost:5000/data").then((response) => {
      expect(response.status).to.eq(200);
      expect(response.body).to.have.property("message", "Hello, World!");
    });

Когда мы запускаем этот тест, мы получаем следующий ответ:

Весь код для этого руководства доступен здесь, на Github:

https://github.com/PythonCodeNemesis/Cypress_Testing_Demo

Заключение

В этой статье мы рассмотрели основы интеграционного тестирования и объяснили его важность для обеспечения качества наших приложений. Мы также представили Cypress, надежную среду тестирования, которая позволяет разработчикам писать сквозные тесты простым и эффективным способом.

Мы продемонстрировали, как настроить простое веб-приложение с интерфейсом и серверной частью с использованием React и Flask. Затем мы использовали Cypress для написания и запуска интеграционных тестов для нашего приложения, охватывающих как внешние, так и внутренние компоненты.

Следуя примерам из этой статьи, вы должны понять, как писать интеграционные тесты для своих веб-приложений с помощью Cypress. С полученными знаниями вы сможете писать комплексные тесты для своих приложений, чтобы убедиться в их функциональности и качестве.

Это все для этой статьи! Не стесняйтесь оставлять отзывы или вопросы в комментариях. Если вы нашли это захватывающим чтением, хлопайте в ладоши и подписывайтесь! Ваше здоровье!