Тестирование 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 здесь.