Как посмотреть результаты тестов в tSQLt?

Мы используем tSQLt для модульного тестирования нашей базы данных и выполняем его ниже:

EXEC tSQLt.Run '[testComplianceDimensions].[test CountOfPropertiesWithLatestRepairJob]'
EXEC tSQLt.Run '[testComplianceDimensions].[test FactPropertyLatestRepairJobAgg]'

Это выходное сообщение:

(1 row(s) affected)
[testComplianceDimensions].[test CountOfPropertiesWithLatestRepairJob] failed: (Failure) Fact_PropertyLatestRepairJobAgg failure - property counts do not match Expected: <324211> but was: <0>
 
+----------------------+
|Test Execution Summary|
+----------------------+
 
|No|Test Case Name                                                        |Dur(ms)|Result |
+--+----------------------------------------------------------------------+-------+-------+
|1 |[testComplianceDimensions].[test CountOfPropertiesWithLatestRepairJob]|  16037|Failure|
-----------------------------------------------------------------------------
Msg 50000, Level 16, State 10, Line 1
Test Case Summary: 1 test case(s) executed, 0 succeeded, 1 failed, 0 errored.
-----------------------------------------------------------------------------

(1 row(s) affected)
 
+----------------------+
|Test Execution Summary|
+----------------------+
 
|No|Test Case Name                                                  |Dur(ms)|Result |
+--+----------------------------------------------------------------+-------+-------+
|1 |[testComplianceDimensions].[test FactPropertyLatestRepairJobAgg]|     14|Success|
-----------------------------------------------------------------------------
Test Case Summary: 1 test case(s) executed, 1 succeeded, 0 failed, 0 errored.
-----------------------------------------------------------------------------

Есть ли таблица, в которой сохраняются все результаты тестов?

Спасибо за вашу помощь.


person silver    schedule 05.10.2020    source источник


Ответы (2)


Таблица tSQLt.TestResult содержит результат последнего выполнения tSQLt.Run или tSQLt.RunAll

Содержимое таблицы не сохраняется между выполнениями этих процедур - в вашем примере таблица будет содержать результаты первого теста до тех пор, пока не будет выполнен второй тест. Если вы хотите собрать результаты более чем одного теста, вам нужно выполнить тесты как часть одной и той же команды - в этом случае, возможно, с EXEC tSQLt.Run '[testComplianceDimensions]' (который запустит все тесты в наборе)

person Ed Harper    schedule 05.10.2020
comment
Спасибо, это было в основном то, что я искал, таблица с результатами тестов. Если есть тесты из разных тестовых схем (например, testComplianceDimensions и testComplianceFacts), вы имеете в виду, что я должен собрать их в одной тестовой схеме, чтобы все результаты записывались в одной таблице результатов теста? - person silver; 05.10.2020
comment
@silver - если вы хотите запускать тесты из нескольких схем за один тестовый прогон, единственный способ, который я знаю, это выполнить tSQLt.RunAll (который запускает все тесты во всех наборах в тестируемой базе данных) - person Ed Harper; 05.10.2020
comment
Понимаю, наша первоначальная проблема заключалась в том, чтобы запустить их все на несколько дней. Мы искали способы запустить подмножество тестов, которые могут поступать из разных схем и иметь для этого единый отчет. - person silver; 05.10.2020
comment
@silver - вы могли собирать результаты из таблицы результатов после каждого выполнения теста - person Ed Harper; 05.10.2020
comment
Есть ли способ сделать это в выпуске в Azure DevOps? - person silver; 05.10.2020
comment
@silver - я думаю, вам придется написать собственный скрипт (TSQL / cmd / bash / PowerShell, в зависимости от вашей среды), который выполнял бы список тестов с tSQLt.Run и собирал результаты из tSQLt.TestResult после каждого теста - person Ed Harper; 05.10.2020

Вы можете попробовать изменить выходной формат с помощью tSQLt.SetTestResultFormatter и использовать результаты другим приложением как:

В настоящее время нет возможности изменить макет вывода по умолчанию. однако существует генератор формата xml, который возвращает результаты теста в формате, совместимом с JUnit. Это можно использовать для запуска тестов tSQLt в среде CI. См. https://www.simple-talk.com/sql/sql-tools/using-sql-test-database-unit-testing-with-teamcity-continuous-integration/ для примера реализации.

и, как объяснялось, tSQLt.SetTestResultFormatter

это точка расширения, которая позволяет форматировать вывод по-разному. Существует, например, модуль форматирования XML, который можно использовать для создания вывода, совместимого с JUnit, вместо удобочитаемого человеком. Мы еще не стабилизировали этот кусок. поэтому это еще не задокументировано. Цель состоит в том, чтобы разрешить установку внешних форматеров через это как расширение существующих. Однако вы можете получить вывод XML и другими способами. См., Например, http://tsqlt.org/177/integrating-tsqlt-with-cruise-control/

Если это не ваш запрос, дополнительную помощь можно получить в репозитории GitHub. .

Кроме того, вы можете остановиться и дважды подумать, прежде чем вкладывать средства в tSQLt, поскольку реализовать собственное решение будет не так сложно, и у вас будет больше контроля (как у нас).

person gotqn    schedule 05.10.2020