Documentation Frappe Framework

Frappe Framework

Tests unitaires

FrappeTestCase annule la transaction et remet les drapeaux. On peut sauter les fixtures, profiler, ou écrire un rapport JUnit.

2 min de lectureMis à jour le Source : docs.frappe.io

Règles

Le fichier peut être n’importe où, mais il commence par test_ et finit en .py. Le site doit commencer par test_, pour ne pas effacer des données. Les DocTypes neufs reçoivent une ébauche. Le lanceur construit les enregistrements des DocTypes liés par un champ Link. La commande est bench run-tests, depuis frappe_bench. Sans option, tout part. bench --verbose run-tests détaille. La vue d’ensemble est dans Présentation des tests.

DocType

Le fichier s’appelle test_[doctype].py. Les dépendances se créent dans le fichier. L’exemple Event, classe TestEvent(FrappeTestCase), appelle create_events dans setUp et remet l’utilisateur Administrator dans tearDown.

create_events ne fait rien si frappe.flags.test_events_created est déjà vrai. Sinon, en Administrator, trois Event du 2014-01-01 : Public « _Test Event 1 », Private « _Test Event 2 », Public « _Test Event 3 » avec event_individuals pour [email protected]. Dans le dictionnaire publié du troisième, il n’y a pas de virgule entre event_type et event_individuals. Le corps publié de la fonction n’est pas indenté sous le if.

Les tests, en tant que [email protected] : le public est autorisé, le privé non, le troisième l’est parce que la personne est dans les participants. get_list avec un like _Test Event% renvoie deux lignes, les sujets 1 et 3, pas le 2.

Lancer

OptionEffet
--appUne application, par exemple erpnext, erpnext_demo ou frappe, sous ~/frappe-bench/apps
--doctypeUn DocType. Activity Cost : 1 test en 0,008 s
--testUn cas. User, test_get_value : 1 test en 0,005 s
--moduleChemin pointé depuis l’app, par exemple erpnext.support.doctype.issue.test_issue. L’exemple stock entry lance 27 tests en 30,549 s
--profileProfileur. Activity Cost : 9133 appels, le tableau publié s’arrête au milieu d’une ligne
--junit-xml-outputXML XUnit. La page écrit l’option collée au chemin, sans espace

--skip-test-records ne construit pas les fixtures des liens. --skip-before-tests saute le script d’initialisation. Exemple : bench --site school.erpnext.local run-tests --doctype "Student Group" avec les deux.

FrappeTestCase

Elle étend unittest.TestCase. Le texte publié écrit « Inherting ». Elle remet frappe.local.flags et les proxys locaux les plus utilisés, et ouvre une transaction annulée à la fin. setUpClass doit appeler super().setUpClass().

JUnit

bench run-tests --junit-xml-output=/reports/junit_test.xml. L’exemple publié n’est pas un XML bien formé : les trois testcase se ferment dans le désordre, et le troisième porte un failure de type NotEnoughFoo. C’est prévu pour Jenkins, ou tout outil XUnit. Installer le plugin xUnit, cocher Publish JUnit test result report, chemin d’exemple *reports/*.xml* avec les astérisques publiés.

Point d’attention

Hors d’un site test_, la page dit que les données peuvent être perdues. Le troisième Event de l’exemple n’a pas la virgule publiée entre deux clés.