Я работаю над тестовым runner, который читает файл «.test» из заданного каталога.Запуск всех тестовых файлов в python из одной функции с помощью «assert» без выхода из цикла «for loop» при ошибке теста
Структура ".test" является:
---TEMPLATE---
template content
---CONTEXT---
context to render on template
---RESULT---
expected result of the template.
Есть 'п' нет. тестового файла в моем тестовом каталоге. Я храню номер теста. .test файлов в словаре «тесты» как его ключ и имя файла .test в качестве значения.
после этого итерация по словарю «тесты» и чтение содержимого .test-файла и сохранение их в переменных.
---TEMPLATE--- part in "template_string",
---CONTEXT--- part in "context_string", and
---RESULT--- part in "expected_result"
затем сделать template_string с context_string используя класс jinja2.Environment и хранить их в "результат" varibale.
сравнить "результат" с "expected_result".
текущий код тест бегун:
class TestTempates(TestCase):
def test_method(self):
tests = { dictionary of .test file }
results = {} #to store status of test case at there index (pass or error).
env = jinja2.Environment()
passed = 0
error = 0
for index, fname in tests.items():
file_path = dirpath + os.sep + fname
with open(file_path) as f:
# logic to read file content
template_string = #content of ---TEMPLATE--- part from file
context_string = #content of ---CONTEXT--- part from file
expected_result = #content of ---RESULT--- part from file
template = env.from_string(template_string)
context = json.loads(context_string)
result = template.render(context)
if result == expected_result:
results[index] = "Pass"
passed += 1
else:
sep = "-----------------------------"
error = "Error: results mismatch:\n%s\n%s\n%s\n%s" % \
(sep, result, sep, expected_result)
results[index] = error
errors += 1
сравнивая «результат» и «EXPECTED_RESULT» с в «если еще» условие работает нормально. Но теперь я хочу использовать «assert» или «assertEquals», не выходя из «for loop», когда какой-либо тестовый файл «result» не соответствует «expected_result», пока все файлы тестов не будут выполнены. Итак, я могу использовать свой тестовый бегун в Travis CI, чтобы сборка Travis не удалась, если какой-либо тестовый пример не получился.
В сложившейся ситуации конструкция Travis CI не терпит неудачу при сбое тестового теста.