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

 
δοκιμές μονάδα στην Python
==========================



Η Python έχει αρκετές πλαίσια δοκιμών, συμπεριλαμβανομένων `unittest`, `doctest`και `nose`. Το πιο xUnit-όπως είναι `unittest`, η οποία τεκμηριώνεται στο Python.org.


* [`unittest` απόδειξη με έγγραφα](https://docs.python.org/3/library/unittest.html)
* [`doctest` απόδειξη με έγγραφα](https://docs.python.org/3/library/doctest.html)

 

Υπάρχει [testoob](http://testoob.sourceforge.net/) η οποία είναι αρκετά πλήρης σουίτα test.Also xUnit-δηλαδή, και έχει μια ωραία επιλογή αναφοράς

 

Υπάρχει επίσης [PyUnit](http://pyunit.sourceforge.net/) που θα μπορούσε να είναι αυτό που ψάχνετε.

 

@Greg: PyUnit συμπεριλαμβάνεται στην πρότυπη βιβλιοθήκη όπως `unittest`

 

Σκεφτείτε [py.test](http://codespeak.net/py/dist/test.html) . Δεν είναι ακριβώς ανάλογη με NUnit, αλλά πολύ καλό, με ωραία χαρακτηριστικά, όπως τεστ αυτο-ανακάλυψης και «Παρακολουθήστε τις δοκιμές και τον κωδικό -. Όταν αλλάζει κάτι επανάληψη των δοκιμών που απέτυχε την τελευταία στιγμή τη στιγμή που όλες οι δοκιμές περάσει, διακόπτη για τη λειτουργία όλων οι δοκιμές όποτε Κάτι αλλαγές.» επιλογή.

 

Ποτέ μην χρησιμοποιείται xUnit, έτσι δεν μπορώ να σας πω αν τα πλαίσια είναι καλό / κακό comparativly, αλλά [εδώ](http://github.com/dbr/tvdb_api/tree/master/tvdb_api.py#L518-575) είναι ένα σενάριο που έγραψα το οποίο χρησιμοποιεί το unittest πλαισίου (για να ελέγξετε το API λειτουργεί όπως θα έπρεπε), και η doctest (για να ελέγξετε το παραδείγματα που έχω δώσει εργασίας)


Το μόνο μου πρόβλημα είναι ο έλεγχος κάτι που δημιουργεί μια εξαίρεση είναι ελαφρώς περίπλοκη (θα πρέπει να το δώσετε σε λειτουργία / λάμδα που αυξάνει την εξαίρεση, και όχι μόνο την ίδια εντολή, όπως και το υπόλοιπο του πλαισίου) .. Πέρα από αυτό, κάνει ό, τι θα έπρεπε, αξιόπιστα, και έχει συμπεριληφθεί στην προεπιλογή της διανομής python για αρκετό καιρό.

 

Θα ήθελα να συστήσω [τη μύτη](https://nose.readthedocs.org/en/latest/) .


Είναι το πιο Pythonic των πλαισίων δοκιμή μονάδα. Η δοκιμή δρομέας τρέχει και τα δύο doctests και unittests, έτσι ώστε να είναι ελεύθεροι να χρησιμοποιούν ό, τι το στυλ της δοκιμής που σας αρέσει.

 

Θα ήθελα να συστήσω μύτη. 


Μετά τη λογική απλή εγκατάσταση, απλά πρέπει να τρέξει «nosetests» στο φάκελο του έργου σας και τη μύτη θα βρείτε όλες τις δοκιμές σας και τη διαχείρισή τους. Μου αρέσει επίσης η συλλογή των plugins (κάλυψη, GAE, κλπ) και την abilty να καλέσετε μύτη απευθείας από τα σενάρια Python μου.

 

μύτη φαίνεται να είναι ο καλύτερος συνδυασμός ευελιξίας και ευκολίας. Τρέχει unittests, doctests, κάλυψη (με επέκταση) και py.test-όπως δοκιμές από ένα πλαίσιο και το κάνει πολύ καλά. Έχει αρκετά δημοτικότητα που είχε κάποια ενσωμάτωση IDE γίνει καθώς για Komodo Επεξεργασία και δεν θα πρέπει να εκπλαγούμε αν το δούμε και αλλού.


Μου αρέσει για έναν ισχυρό λόγο: Έχω σχεδόν πάντα doctest πριν από τη σύνταξη πιο εκτεταμένες δοκιμές σε άλλο πλαίσιο. Αυτό οφείλεται στο γεγονός ότι, για τις βασικές εξετάσεις, doctests σκοτώσει δύο πουλιά με μια πέτρα. Μπορείτε να πάρετε εκτελέσιμο εξετάσεις (αν και είναι λίγο αδέξια να γράψει καλά μερικές φορές), καθώς και τεκμηρίωση API και διαδραστικά έγγραφα ταυτόχρονα. μύτη θα τρέξει αυτά με το πακέτο επέκτασης doctest όταν χρησιμοποιείτε μια επιλογή γραμμής εντολών (--with-doctest).


Το λέω αυτό προερχόμενος από py.test ως πρώην αγαπημένο μου. Ενώ είναι μεγάλη, δοκιμές μύτη είναι αρκετά παρόμοια με μένα ότι εγώ δεν το χάσετε, και μου αρέσει η ένταξη των διαφόρων μεθόδων δοκιμής κάτω από μία στέγη, να το πω έτσι. YMMV, αλλά ήθελα να συστήσω τη λήψη μια καλή ματιά στη μύτη πριν από την επιλογή άλλου. Εάν δεν είστε εξοικειωμένοι με τις δοκιμές py.test, θα πρέπει να εξετάσουμε τους επίσης. Βρίσκω καταπληκτικό, επειδή είναι γραμμένο συνήθως με τέτοιο τρόπο ώστε να μπορεί να διορθωθεί εύκολα *χωρίς* πλαίσιο δοκιμών, γεγονός που καθιστά ένα λιγότερο δύσκολο σύστημα που συμμετέχουν στη σύνοδο εντοπισμού σφαλμάτων. Θεωρώ ότι και μόνο ανεκτίμητη, ενώ είναι επίσης πιο εύκολο να γράψει ό, τι unittest δοκιμές κατά τη γνώμη μου.

 