Я использую простой тестовый фреймворк, который преобразует содержимое файла * .xlsx в тестовый браузер selenium. Это позволяет получить высокий уровень абстракции, но раздражает работу в git из-за того, что он является двоичным.Есть ли способ принудительно создать автоматически сгенерированный файл вместе с остальной частью коммита, которая запускает его генерацию?
Формат тестового файла Эксел:
Column A -> Action
Column B -> Identity (which text field, etc)
Column C onwards -> Value
Я написал следующий код, который успешно преобразует файл первенствовать в текстовый файл (* .json), по существу, только список списков (так что порядок сохраняется и не вводится лишние ключевые слова).
#!/usr/bin/env python
"""
This script takes a GUI test in xlsx format and outputs a text interpretation.
"""
import argparse
import json
from openpyxl import load_workbook
from openpyxl.cell import get_column_letter
def main(xlsx_test):
ws = load_workbook(filename=xlsx_test, data_only=True).active
col_size = len(ws.column_dimensions)
row_size = len(ws.row_dimensions)
full_document = []
for col in xrange(2, col_size):
col_letter = get_column_letter(col + 1)
test_document = []
for row in xrange(row_size):
cell_reference = col_letter + str(row + 1)
cell_value = ws[cell_reference].value
if cell_value:
action = ws['A' + str(row + 1)].value
identity = ws['B' + str(row + 1)].value
if not action:
action = ""
if not identity:
identity = ""
test_item = [action, identity, cell_value]
test_document.append(test_item)
if test_document:
full_document.append(test_document)
with open(xlsx_test + '.json', 'w') as outfile:
json.dump(full_document, outfile, indent=4)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Generate text verion of tests')
test_file = parser.add_argument(
'--input',
type=str,
nargs='?',
help='the file to generate text version of tests from'
)
args = parser.parse_args()
if args.input is None:
print '''No file selected'''
else:
main(args.input)
Чтобы запустить его, я бы выполнить следующее в Баш скрипт:
python /path/to/this/script.py --input='/path/to/test.xlsx'
Я хотел бы текстовый файл, он производит совершаться вместе с XLSX двоичном просто так, что мы получаем git изменить историю.
Я читал о крючках pre-commit (что-то, что я с удовольствием настроил на каждой машине автора, но я изо всех сил пытаюсь установить, будет ли он включать дополнительный сгенерированный файл в фиксацию или нет. было бы здорово, так как я не совсем уверен, что на данный момент попробовать.
Мне также нужно решить, могу ли я перебирать список файлов в фиксации с расширением * .xlsx и передавать путь в виде аргумент для скрипта python выше, в цикле.Что я прошу выполнить таким образом?