#robotframework
#robotframework
Вопрос:
Я понимаю, что есть команда для слияния :
rebot --merge TC002-002output.xml rerunTC002-002output.xml
однако у меня есть около 50 отдельных отчетов для объединения, есть ли лучший и быстрый способ их объединения.
структура выглядит следующим образом
OutputTC001.xml .....TC020.xml
OutputNEWTC030.xml.....TC050.xml
Комментарии:
1. Я не понимаю, вы хотите объединить их в один отчет? Вы можете объединить несколько файлов с помощью rebot, и он поддерживает подстановочные знаки. Если вам нужен только один файл, это может быть просто один вкладыш
2. @JiriJanous я объяснил, что у меня много файлов, вводить их один за другим в командной строке неэффективно.
3. Вот где в игру вступают подстановочные знаки. Вы можете написать, например, rebot —merge TC * rerunTC*
Ответ №1:
Вы можете использовать rebot CLI API для создания скрипта, который рекурсивно собирает весь XML из заданной папки, а затем объединяет их.
#!/usr/bin/env python
import sys
import os
from robot import rebot_cli
def collect_xmls(path, xmls):
for filename in os.listdir(path):
file_path = os.path.join(path,filename)
if filename.endswith('.xml'):
fullname = os.path.join(path, filename)
xmls.append(file_path)
if os.path.isdir(filename):
collect_xmls(file_path, xmls)
root_folder = sys.argv[1]
rebot_args = []
collect_xmls(root_folder, rebot_args)
rebot_cli(rebot_args)
Назовите это так: python merge.py Output
. Этот сценарий предполагает, что весь XML является выходным XML, но вы можете добавить дополнительные проверки имен файлов.
Комментарии:
1. команда python merge.py Вывод, является ли название Output окончательным отчетом? я могу использовать python merge.py finaloutput.xml ?
2. извините, я не очень хорошо разбираюсь в python. куда я должен вставить фактический путь к сценарию?
3. @guo Я вижу, вы приняли ответ. Ваши предыдущие комментарии все еще открыты? Вы можете передать несколько аргументов из командной строки
python merge.py Output finaloutput.xml
. Тогда могут быть введены любые параметры для перезагрузкиrebot_args = ['--merge', 'sys.argv[2]', 'param3']
.Output
в моем примере это папка, в которой можно найти xml, объединенные выходные имена будут по умолчаниюlog.html
,report.html
,output.xml
.4. я получил сообщение об ошибке, например, невозможно объединить выходные данные, содержащие разные корневые наборы. Исходный набор — ‘TC001-001’, а объединенный — ‘TC001-002’. почему?
5. @guo Смотрите мой обновленный ответ. Вы должны удалить
--merge
аргумент, чтобы иметь возможность комбинировать разные наборы тестов. Объединение применимо только в том случае, если вы хотите объединить результаты одного и того же набора. Подробнее: robotframework.org/robotframework/latest /…