Тестирование MSSQL не так уж и сложно
Когда я начал тестировать базу данных Microsoft SQL Server в моей предыдущей роли, в целом документации было не так много. Поэтому мне пришлось потратить дополнительные часы, чтобы понять и построить комплексный тест.
Цель этой статьи - поделиться знаниями о том, как писать тесты автоматизации для MSSQL Server. Вместо написания запросов в sql-разработчике или в студии данных Azure весь сквозной тест можно автоматизировать с помощью пакета node.js mssql.
Я бы использовал подход Programmatic Mocha Test, настройка доступна в предыдущей статье.
git clone https://github.com/puneetpunj/programmatic-mocha-framework.git
Только в целях этой статьи я разверну новую базу данных, чтобы получить сведения о подключении и показать фактический тест, в противном случае, если у вас уже есть запущенный SQL Server, не стесняйтесь пропустить этот раздел и использовать свои собственные данные о подключении.
Настройка базы данных SQL Server
Обязательное условие - Докер
Начнем с создания dockerfile в programmatic-mocha-framework
cd programmatic-mocha-framework // create new file and name it as dockerfile touch dockerfile
Скопируйте этот код в dockerfile
Выполните указанные ниже команды докера, и ваша база данных SQL Server будет запущена и работает. Подробнее см. Документация Microsoft.
docker build -t sqlserverimage . docker run -d -p 60666:1433 --name mssql1 sqlserverimage docker ps

Добавить данные в базу данных
Загрузите Azure Data Studio и используйте приведенные ниже сведения о подключении.
Server: localhost,60666 Login Type: SQL Login User: sa Password: Stupidpassword123!
После успешного входа в систему выполните следующие запросы, чтобы добавить несколько строк данных в вашу базу данных. Обратитесь к Microsoft docs для получения более подробной информации.
// Start by creating new database and name it as TutorialDB
USE master
GO
IF NOT EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'TutorialDB'
)
CREATE DATABASE [TutorialDB];
GO
IF SERVERPROPERTY('ProductVersion') > '12'
ALTER DATABASE [TutorialDB] SET QUERY_STORE=ON;
GO
// Create new table in above database -
-- Create a new table called 'Customers' in schema 'dbo'
-- Drop the table if it already exists
IF OBJECT_ID('dbo.Customers', 'U') IS NOT NULL
DROP TABLE dbo.Customers;
GO
-- Create the table in the specified schema
CREATE TABLE dbo.Customers
(
CustomerId int NOT NULL PRIMARY KEY, -- primary key column
Name nvarchar(50) NOT NULL,
Location nvarchar(50) NOT NULL,
Email nvarchar(50) NOT NULL
);
GO
// Add rows
-- Insert rows into table 'Customers'
INSERT INTO dbo.Customers
([CustomerId], [Name], [Location], [Email])
VALUES
( 1, N'Orlando', N'Australia', N''),
( 2, N'Keith', N'India', N'[email protected]'),
( 3, N'Donna', N'Germany', N'[email protected]'),
( 4, N'Janet', N'United States', N'[email protected]')
GO
После успешной вставки данных выполните select * from dbo.Customers

Создайте файл библиотеки для взаимодействия с базой данных
Прежде всего, добавьте пакет mssql, запустив npm i mssql
Создайте новый файл в каталоге lib и назовите его db-connect.js. Как правило, вы не будете жестко указывать учетные данные в этом файле, они должны быть определены в .env, хранилище параметров или диспетчере секретов, но для этого примера я добавил их в сам этот файл. Скопируйте приведенный ниже код в db-connect.js
Добавить новый тестовый файл
Одним из самых больших преимуществ программного подхода является четкое разделение тестов на основе инициативы / программы и их независимое выполнение. Для этого нужно добавить новый файл db-test.js в каталог programmatic. После создания файла скопируйте приведенный ниже код:
Обновите исполняемый файл, чтобы включить новый тест
Обновленный execute-tests.js будет выглядеть, как показано ниже:
Выполнить тесты
Команда выполнения останется прежней npm run test

Спасибо за внимание, код доступен на git здесь.