Je travaille sur un programme de test qui lit le fichier ".test" d'un répertoire donné.Exécution de tous les fichiers de test en python à partir d'une fonction en utilisant "assert" sans quitter "for loop" en cas d'échec du test
Structure de ".test" est:
---TEMPLATE---
template content
---CONTEXT---
context to render on template
---RESULT---
expected result of the template.
Il n'y 'n' pas. du fichier de test dans mon répertoire de test. I mémorise le no. des fichiers .test dans le dictionnaire "tests" comme clé et le nom du fichier .test comme valeur. Après cela, itérer sur le dictionnaire "tests" et lire le contenu du fichier .test et les stocker dans des variables.
---TEMPLATE--- part in "template_string",
---CONTEXT--- part in "context_string", and
---RESULT--- part in "expected_result"
puis rendre template_string avec context_string en utilisant la classe jinja2.Environment et les stocker dans varibale "résultat".
comparer "result" avec "expected_result".
code coureur de test en cours:
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
comparer "résultat" et "expected_result" avec dans "si d'autre" état fonctionne bien. Mais maintenant je veux utiliser "assert" ou "assertEquals" sans quitter "for loop" quand un fichier de test "result" ne correspond pas à "expected_result" jusqu'à ce que tous les fichiers de tests ne soient pas exécutés. Donc, que je peux utiliser mon coureur de test dans Travis CI pour que la construction de Travis échoue quand un cas de test échoue.
Dans la situation actuelle, la génération de CI Travis n'échoue pas en cas de défaillance du test élémentaire.