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