Наконец-то я нашел решение, как автоматически импортировать все 1843 тестовых случая через инструмент из статьи, упомянутой в вопросе.
Наши тесты были перенесены в облако Jira как обычные билеты. У них нет тестовых шагов, но есть вся другая информация, такая как описание, метки и другая информация, относящаяся к полям Jira. Далее я покажу, как перенести все шаги в перенесенные тестовые случаи без шагов.
Перейдите к Jira и экспортируйте тестовые случаи, которые вам нужны в файл Excel. Это можно сделать с этого экрана
https://zephyrdocs.atlassian.net/wiki/spaces/ZTD/pages/12386325/Search+Test+Executions
Загрузите файл .jar из
https://bitbucket.org/zfjdeveloper/zfj-importer/downloads/
В cmd запустите этот файл jar с помощью команды java -jar zfj-importer-utility-0.40.jar
Я попытался запустить jar-файл двойным щелчком, приложение открывается, но после настройки и нажатия кнопки Start Import ничего не происходит.
Только после открытия из cmd все работает.
Плюс в cmd вы можете увидеть информацию о прогрессе и ошибках, которая поможет вам в отладке.
Настройка утилиты, как в документации https://bitbucket.org/zfjdeveloper/zfj-importer/wiki/Home
На данный момент я думал, что после нажатия Start Import все будет отлично, но нет.
В консоли я обнаружил много ошибок, их причиной было много разрывов строк внутри шагов теста.
Допустим, у вас есть один шаг с одной строкой в поле Шаг, одна строка В поле «Тестовые данные», но в поле «Результат выполнения» у вас есть текст с переносами строк, скажем, 4 строки. Для этого случая в Excel в поле Результат выполнения будет 4 разных столбца, поле шага и данные теста в виде одного объединенного столбца.
А на основе правил полезности невозможно получить результат без шага. (такая проблема может быть, если у вас есть разрыв строки в поле Step и Test Data).
Ниже я покажу, как я справляюсь с этим.
Я решил написать функцию Excel, которая будет получать строки из не слитых строк за один шаг, объединять их и предоставлять для импорта.
Извините за мой VBA, я никогда не использовал его раньше. Все, что я написал, может быть переписано лучше и в одном сценарии, но это работает для меня, и я не хочу тратить больше времени на эту проблему, так что отпустите.
Ниже вы можете найти 4 функции Excel. 3 из них очень похожи, и разница только в одном письме. Последний скрипт предназначен для удаления пустых строк, которые были объединены, без него будут созданы шаги со значением "null".
Public Const lastTableRow = 3872
Function ConvertSteps()
Dim callerRow As Long
Dim isValueInStepId As Boolean
Dim isNoValueInNextStepId As Boolean
Dim result As String
Dim baseColumnLetter As String
Dim stepIdColumnLetter As String
callerRow = Application.Caller.row
baseColumnLetter = "S"
stepIdColumnLetter = "Q"
Debug.Print "processed row is: " & callerRow
isValueInStepId = (Range(stepIdColumnLetter & callerRow).Value <> "")
isNoValueInNextStepId = (Range(stepIdColumnLetter & (callerRow + 1)).Value = "")
If isValueInStepId And isNoValueInNextStepId Then
Dim i As Integer
i = 1
result = Range(baseColumnLetter & callerRow).Value
Do While Range(stepIdColumnLetter & (callerRow + i)).Value = "" And (callerRow + i) <= lastTableRow
result = result & " " & Range(baseColumnLetter & (callerRow + i)).Value
i = i + 1
Loop
ConvertSteps = result
Else
If Range(baseColumnLetter & (callerRow)).Value = "" Then
ConvertSteps = ""
Else
ConvertSteps = Range(baseColumnLetter & (callerRow)).Value
End If
End If
End Function
Function ConvertTestData()
Dim callerRow As Long
Dim isValueInStepId As Boolean
Dim isNoValueInNextStepId As Boolean
Dim result As String
Dim baseColumnLetter As String
Dim stepIdColumnLetter As String
callerRow = Application.Caller.row
baseColumnLetter = "T"
stepIdColumnLetter = "Q"
Debug.Print "processed row is: " & callerRow
isValueInStepId = (Range(stepIdColumnLetter & callerRow).Value <> "")
isNoValueInNextStepId = (Range(stepIdColumnLetter & (callerRow + 1)).Value = "")
If isValueInStepId And isNoValueInNextStepId Then
Dim i As Integer
i = 1
result = Range(baseColumnLetter & callerRow).Value
Do While Range(stepIdColumnLetter & (callerRow + i)).Value = "" And (callerRow + i) <= lastTableRow
result = result & " " & Range(baseColumnLetter & (callerRow + i)).Value
i = i + 1
Loop
ConvertTestData = result
Else
If Range(baseColumnLetter & (callerRow)).Value = "" Then
ConvertTestData = ""
Else
ConvertTestData = Range(baseColumnLetter & (callerRow)).Value
End If
End If
End Function
Function ConvertResult()
Dim callerRow As Long
Dim isValueInStepId As Boolean
Dim isNoValueInNextStepId As Boolean
Dim result As String
Dim baseColumnLetter As String
Dim stepIdColumnLetter As String
callerRow = Application.Caller.row
baseColumnLetter = "U"
stepIdColumnLetter = "Q"
Debug.Print "processed row is: " & callerRow
isValueInStepId = (Range(stepIdColumnLetter & callerRow).Value <> "")
isNoValueInNextStepId = (Range(stepIdColumnLetter & (callerRow + 1)).Value = "")
If isValueInStepId And isNoValueInNextStepId Then
Dim i As Integer
i = 1
result = Range(baseColumnLetter & callerRow).Value
Do While Range(stepIdColumnLetter & (callerRow + i)).Value = "" And (callerRow + i) <= lastTableRow
result = result & " " & Range(baseColumnLetter & (callerRow + i)).Value
i = i + 1
Loop
ConvertResult = result
Else
If Range(baseColumnLetter & (callerRow)).Value = "" Then
ConvertResult = ""
Else
ConvertResult = Range(baseColumnLetter & (callerRow)).Value
End If
End If
End Function
Public Sub DeleteBlankRows()
Dim SourceRange As Range
Dim EntireRow As Range
Set SourceRange = Range("Q1", "Q" & lastTableRow)
If Not (SourceRange Is Nothing) Then
Application.ScreenUpdating = False
For i = SourceRange.Rows.Count To 1 Step -1
Set EntireRow = SourceRange.Cells(i, 1).EntireRow
Debug.Print SourceRange.Cells(i, 1).Value
If SourceRange.Cells(i, 1).Value = 0 Then
EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End If
End Sub
Давайте откроем файл Excel и сохраним его в формате .xlsm для применения пользовательских функций.
Импорт функций в Excel
в верхней части кода, установленного в последней строке переменной lastTableRow с шагом Test Case в вашем Excel.
Теперь нам нужно 3 новых столбца, чтобы сохранить перенесенные поля Step, Test Data и Result. Для этого мы можем использовать последний столбец Комментарии, скопировать и вставить его два раза. Теперь у нас есть 3 пустых столбца W, X, Y для нашей цели.
Для всех строк в столбце W примените формулу = ConvertSteps (), чтобы объединить шаги (это может занять некоторое время)
Для всех строк в столбце X примените формулу = ConvertTestData (), чтобы объединить тестовые данные (это может занять некоторое время)
Для всех строк в столбце Y примените формулу = ConvertResult (), чтобы объединить результаты (это может занять некоторое время)
![enter image description here](https://i.stack.imgur.com/pBCBj.png)
Теперь мы должны преобразовать значения в новых столбцах из формулы в их строковое значение. Для этого выделите всю таблицу и нажмите Ctrl + C. Затем нажмите правую кнопку и выберите прошлые значения.
Запустите макросы DeleteBlankRows, чтобы удалить все строки, которые нам не нужно импортировать.
Сохранить файл в формате .xml.
Выберите этот файл в утилите и нажмите Начать импорт
В cmd вы можете увидеть несколько ошибок. В моем случае они были переведены в ситуацию, когда нет описания шага, но есть ожидаемый результат. Если они встречаются довольно редко, как в моем случае, проще изменить их вручную в файле Execel. Если их много, вы можете обработать этот случай в пользовательской функции.![enter image description here](https://i.stack.imgur.com/IPvAa.png)
Вот и все, это решение помогло мне импортировать 1800+ тестовых случаев.Я экспортировал их частично, на 500, и мне требуется около 3 часов, чтобы импортировать все тестовые случаи.