Tutorial PyUnit: Πλαίσιο δοκιμών μονάδας Python (με παράδειγμα)

Πίνακας περιεχομένων:

Anonim

Τι είναι η δοκιμή μονάδας;

Ο έλεγχος μονάδας στο Python γίνεται για τον εντοπισμό σφαλμάτων νωρίς στο στάδιο ανάπτυξης της εφαρμογής, όταν τα σφάλματα είναι λιγότερο επαναλαμβανόμενα και λιγότερο δαπανηρά για διόρθωση.

Ένα τεστ μονάδας είναι μια δοκιμασμένη σε επίπεδο κώδικα δοκιμή σχεδιασμένη στο Python για την επαλήθευση μιας μικρής «μονάδας» λειτουργικότητας. Το τεστ μονάδας είναι ένα αντικειμενοστρεφές πλαίσιο που βασίζεται σε φωτιστικά δοκιμής.

Τεχνικές δοκιμής μονάδας Python

Το Python Unit Testing περιλαμβάνει κυρίως τη δοκιμή μιας συγκεκριμένης λειτουργικής μονάδας χωρίς πρόσβαση σε κάποιον εξαρτώμενο κώδικα. Οι προγραμματιστές μπορούν να χρησιμοποιήσουν τεχνικές όπως στέλεχος και χλευασμούς για να διαχωρίσουν τον κώδικα σε "μονάδες" και να εκτελέσουν δοκιμές σε επίπεδο μονάδας στα μεμονωμένα κομμάτια.

  • Ανάπτυξη βάσει δοκιμής TDD: Ο έλεγχος μονάδας πρέπει να γίνει μαζί με το Python και για αυτό οι προγραμματιστές χρησιμοποιούν τη μέθοδο ανάπτυξης βάσει δοκιμής. Στη μέθοδο TDD, σχεδιάζετε πρώτα δοκιμές μονάδων Python και μόνο τότε συνεχίζετε να γράφετε τον κωδικό που θα εφαρμόσει αυτήν τη δυνατότητα.
  • Stubs and Mocks: Είναι δύο βασικές τεχνικές που προσομοιώνουν ψεύτικες μεθόδους που δοκιμάζονται. Ένα Stub χρησιμοποιείται για να συμπληρώσει κάποια εξάρτηση που απαιτείται για τη σωστή εκτέλεση της δοκιμής μονάδας. Ένα χλευάσμα από την άλλη πλευρά είναι ένα ψεύτικο αντικείμενο που εκτελεί τις δοκιμές όπου ισχυριζόμαστε.

    Οι προθέσεις και των δύο μεθόδων είναι ίδιες για την εξάλειψη του ελέγχου όλων των εξαρτήσεων μιας τάξης ή μιας λειτουργίας.

Πλαίσιο δοκιμών μονάδων Python

Για να διευκολύνετε τη διαδικασία δοκιμής μονάδας και να βελτιώσετε την ποιότητα του έργου σας, συνιστάται το πλαίσιο δοκιμής μονάδας Python. Το πλαίσιο δοκιμών μονάδας περιλαμβάνει

  • PyUnit: Το PyUnit υποστηρίζει φωτιστικά, θήκες δοκιμών, σουίτες δοκιμών και δοκιμαστικό δρομέα για τον αυτοματοποιημένο έλεγχο του κώδικα. Στο PyUnit, μπορείτε να οργανώσετε δοκιμαστικές θήκες σε σουίτες με τα ίδια φωτιστικά
  • Nose: Τα ενσωματωμένα plug-in της Nose σάς βοηθούν με τη λήψη εξόδου, την κάλυψη κώδικα, τα έγγραφα, κ.λπ. Επεκτείνει την Python unittest για να διευκολύνει τις δοκιμές.
  • Doctest: Το σενάριο δοκιμών Doctest πηγαίνει σε docstring με μικρή λειτουργία στο κάτω μέρος του αρχείου. Το Doctest σάς επιτρέπει να δοκιμάσετε τον κωδικό σας εκτελώντας παραδείγματα που περιλαμβάνονται στην τεκμηρίωση και επαληθεύοντας ότι επέστρεψαν τα αναμενόμενα αποτελέσματα. Η περίπτωση χρήσης του docest είναι λιγότερο λεπτομερής και δεν συλλαμβάνει ειδικές περιπτώσεις. Είναι χρήσιμα ως εκφραστική τεκμηρίωση της κύριας χρήσης της μονάδας και των συστατικών της.

Δοκιμή μονάδας με PyUnit

Το Pyunit είναι ένα λιμάνι Python του JUnit. Ως μέρος του Pyunit, στην unittest ενότητα υπάρχουν πέντε βασικές κατηγορίες.

  • Τάξη TestCase : Η τάξη TestCase φέρει τις ρουτίνες δοκιμής και παρέχει άγκιστρα για κάθε ρουτίνα και καθαρισμό μετά
  • Τάξη TestSuite : Φέρει ως κοντέινερ συλλογής και μπορεί να διαθέτει πολλαπλά αντικείμενα δοκιμών και αντικείμενα πολλαπλών δοκιμών
  • ClassLoader class : Αυτή η τάξη φορτώνει δοκιμαστικές θήκες και σουίτες που ορίζονται τοπικά ή από εξωτερικό αρχείο. Εκπέμπει ένα testuite αντικείμενα που διαθέτει αυτές τις σουίτες και τις θήκες
  • ClassTestRunner class : Για να εκτελέσετε τις δοκιμές, εξυπηρετεί μια τυπική πλατφόρμα για την εκτέλεση των δοκιμών
  • Η κλάση TestResults : Προσφέρει ένα τυπικό κοντέινερ για τα αποτελέσματα των δοκιμών

Σχεδιασμός δοκιμαστικής θήκης για Python Testing με χρήση του PyUnit

Μια δοκιμή μονάδας παρέχει μια βασική κατηγορία, μια δοκιμαστική θήκη, η οποία μπορεί να χρησιμοποιηθεί για τη δημιουργία νέων δοκιμαστικών περιπτώσεων. Για το σχεδιασμό της δοκιμαστικής θήκης, υπάρχουν τρία σύνολα μεθόδων που χρησιμοποιούνται

unittest.TestCase

setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string

Στο πρώτο σετ είναι τα άγκιστρα πριν και μετά το τεστ Η μέθοδος setup () ξεκινά πριν από κάθε ρουτίνα δοκιμής, το teardown () μετά τη ρουτίνα.

Το δεύτερο σύνολο μεθόδου ελέγχει την εκτέλεση της δοκιμής. Και οι δύο μέθοδοι λαμβάνουν μια συμβολοσειρά μηνυμάτων ως είσοδο και αμφότερες ακυρώνουν μια τρέχουσα δοκιμή. Αλλά η μέθοδος skiptest () διακόπτει την τρέχουσα δοκιμή ενώ η μέθοδος fail () αποτυγχάνει εντελώς.

Η τελευταία ή η τρίτη μέθοδος βοηθούν στον προσδιορισμό του τεστ. Η μέθοδος id () επιστρέφει μια συμβολοσειρά που αποτελείται από το όνομα του αντικειμένου της εξέτασης και της ρουτίνας δοκιμής. Και η μέθοδος shortDescription () επιστρέφει το σχόλιο docstr κατά την έναρξη κάθε ρουτίνας δοκιμής.

Πλεονεκτήματα της χρήσης δοκιμών μονάδας Python

  • Σας βοηθά να εντοπίσετε σφάλματα πριν από τον κύκλο ανάπτυξης
  • Σας βοηθά να γράψετε καλύτερα προγράμματα
  • Συγχρονίζεται εύκολα με άλλες μεθόδους και εργαλεία δοκιμών
  • Θα έχει πολύ λιγότερα σφάλματα
  • Είναι πιο εύκολο να τροποποιήσετε στο μέλλον με πολύ λιγότερες συνέπειες