tl.testing παρέχει διάφορα βοηθητικά προγράμματα που μπορούν να χρησιμοποιηθούν κατά τη σύνταξη δοκιμές & nbsp?. Είναι συμβατό με Python εκδόσεις 2.6 και 2.7.
με άμμο των καταλόγων και των αρχείων
Κατά τη δοκιμή του κώδικα που τροποποιεί τους καταλόγους και τα αρχεία, είναι χρήσιμο να είναι σε θέση να δημιουργήσει και να επιθεωρήσει ένα δέντρο δείγμα των καταλόγων και των αρχείων εύκολα. Η μονάδα tl.testing.fs παρέχει υποστήριξη για τη δημιουργία ενός δέντρου από μια λεκτική περιγραφή, κατατάσσοντας την στην ίδια μορφή και να καθαρίσει μετά τον εαυτό του.
Σε μια δοκιμή doc, οι εγκαταστάσεις αυτές θα μπορούσαν να χρησιμοποιηθούν σαν αυτό για να δημιουργήσετε και να εγγράψει έναν κατάλογο, ένα αρχείο και ένα συμβολικό σύνδεσμο:
>>> Από tl.testing.fs new_sandbox εισαγωγής, LS
>>> New_sandbox ("" "
... Δ foo
... Στ foo / bar asdf
... L Baz -> foo / bar
... "" ")
>>> Ls ()
l Baz -> foo / bar
δ foo
στ foo / bar asdf
Δείτε το αρχείο fs.txt βρέθηκε με τον πηγαίο κώδικα για περαιτέρω συμβουλές, συμπεριλαμβανομένου του πώς να δημιουργήσει και να γκρεμίσουμε δοκιμές χρησιμοποιώντας sandboxes του συστήματος αρχείων.
Εγκατάσταση απαιτητών σενάρια
Ορισμένες λειτουργίες θα μπορούσε κανείς να θέλουν να δοκιμάσουν κάνει χρήση εξωτερικών προγραμμάτων, όπως ένα μπίπερ ή ένα πρόγραμμα επεξεργασίας κειμένου. Η μονάδα tl.testing.script παρέχει βοηθητικά προγράμματα που εγκαθιστάτε απλό μοντέλο σενάρια σε χώρους όπου ο κωδικός που πρέπει να ελέγχονται, θα τους βρείτε. Παίρνουν μια σειρά από κώδικα Python και να δημιουργήσει ένα σενάριο περιτύλιγμα που καθορίζει τη διαδρομή Python ώστε να ταιριάζει με τη δοκιμή και εκτελεί τον κώδικα.
Αυτό είναι το πώς μια τέτοια παρωδία σενάριο θα μπορούσε να χρησιμοποιηθεί σε μια δοκιμή DOC:
>>> Από tl.testing.script εισαγωγή εγκαταστήσετε
>>> Script_path = εγκατάσταση («εκτύπωση» ένα απλό σενάριο. ")
>>> Εκτύπωσης ανοιχτό (script_path) .read ()
#! ...
sys εισαγωγής
sys.path [:] = [...]
Εκτύπωση «Ένα απλό σενάριο.»
>>> Υποδιεργασία εισαγωγής
>>> Υπο = subprocess.Popen (script_path, κέλυφος = True, stdout = subprocess.PIPE)
>>> Stdout, stderr = sub.communicate ()
>>> Stdout εκτύπωσης
Ένα απλό σενάριο.
Δείτε το αρχείο script.txt βρέθηκε με τον πηγαίο κώδικα για περαιτέρω δυνατότητες πώς να εγκαταστήσετε και πρόσβαση εικονικές σενάρια καθώς και το πώς να γκρεμίσουμε δοκιμές χρησιμοποιώντας πλαστή σενάρια.
Doc-δοκιμή του γραφικού περιεχομένου των επιφανειών του Καΐρου
Ενώ είναι κατ 'ευθείαν προς τα εμπρός για να συγκρίνετε το περιεχόμενο των δύο επιφανειών του Καΐρου σε κώδικα Python, τον χειρισμό γραφικών είναι πέρα από τις δοκιμές έγγρ. Ωστόσο, το πακέτο manuel μπορεί να χρησιμοποιηθεί για την εξαγωγή πιο γενικές περιπτώσεις δοκιμής από ένα έγγραφο κειμένου, επιτρέποντας ταυτόχρονα να τα ανακατέψουμε με δοκιμές doc με φυσικό τρόπο.
Η μονάδα tl.testing.cairo παρέχει ένα εργοστάσιο δοκιμή σουίτα που χρησιμοποιεί manuel να εκτελέσει γραφικών δοκιμές διαμορφώνονται ως στοιχεία αναδιαρθρώθηκε-κείμενο. Η λεζάντα μιας τέτοιας εικόνα υποτίθεται ότι είναι μια κυριολεκτική έκφραση Python των οποίων η αξία είναι μια επιφάνεια του Καΐρου, και η εικόνα του χρησιμοποιείται ως δοκιμή προσδοκία.
Αυτό είναι το πώς μια επιφάνεια θα μπορούσε να συγκριθεί με την αναμενόμενη εικόνα σε ένα τεστ DOC:
>>> Κάιρο εισαγωγής
>>> Από pkg_resources resource_filename εισαγωγής
>>> Εικόνα = resource_filename («tl.testing», «testimages / correct.png»)
.. :: Σχήμα TL / δοκιμές / testimages / correct.png
& Nbsp? `` Cairo.ImageSurface.create_from_png (εικόνα) ``
Δείτε το αρχείο cairo.txt βρέθηκε με τον πηγαίο κώδικα για περαιτέρω συμβουλές και τεκμηρίωση της πιθανής εξόδου της δοκιμής.
Εργασία με νήματα στον κώδικα δοκιμής
Το πρότυπο τάξη TestCase δεν συλλέγει τα λάθη και τις αποτυχίες που σημειώθηκαν σε άλλα θέματα από το κεντρικό. Η μονάδα tl.testing.thread παρέχει μαθήματα νήμα και μια τάξη ThreadAwareTestCase να επιτρέπουν ακριβώς αυτό, καθώς και ορισμένες άλλες ανέσεις για τις δοκιμές που ασχολούνται με τα θέματα: πρόληψη αναμενόμενη unhandled εξαιρέσεις σε θέματα που να εκτυπωθεί με την έξοδο της δοκιμής, τα θέματα εκθέσεων άφησε πίσω με δοκιμή, η εκτέλεση κώδικα σε ένα νήμα δαίμονα, που ενώνει τα θέματα και μετρώντας τα θέματα που ξεκίνησε κατά τη διάρκεια του χρόνου λειτουργίας του τεστ:
>>> Χρόνο εισαγωγής
>>> Tl.testing.thread εισαγωγής
>>> Τάξη SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... Def test_error_in_thread_should_be_reported (αυτο):
... Με tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (λάμδα: 1/0)
...
... Def test_active_count_should_count_only_new_threads (αυτο):
... Με tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (λάμδα: time.sleep (0.1))
... Self.assertEqual (1, self.active_count ())
... Self.assertEqual (0, self.active_count ())
>>> Unittest εισαγωγής
>>> Τρέξιμο (unittest.makeSuite (SampleTest))
================================================== ====================
ΣΦΑΛΜΑ: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
Traceback (πιο πρόσφατη κλήση τελευταία):
& Nbsp? ...
ZeroDivisionError: διαίρεση ακέραιο ή modulo από το μηδέν
-------------------------------------------------- --------------------
Ran 2 δοκιμές σε N.NNNs
Απέτυχε (σφάλματα = 1)
Δείτε το αρχείο thread.txt βρέθηκε με τον πηγαίο κώδικα για περαιτέρω λεπτομέρειες σχετικά με την κατηγορία ThreadAwareTestCase.
Η κατασκευή σειρών των δοκιμών που χρησιμοποιούν Manuel
Όπως manuel παρέχει κάποια ισχυρά χαρακτηριστικά εκτός από την τυπική doctests, οι Manuel σουίτες δοκιμών που έχει συσταθεί με ελαφρώς διαφορετικό πρότυπο αυτά. Η tl.testing.doctest μονάδα εφαρμόζει ένα εργοστάσιο DocFileSuite που μπορεί να χρησιμοποιηθεί σαν πρότυπο ένα, αλλά δημιουργεί μια σουίτα δοκιμής χρησιμοποιώντας manuel και επιτρέπει κάποια επιπλέον ρυθμίσεις που σχετίζονται με manuel, μεταξύ των οποίων και την ικανότητα να ερμηνεύουν υποσημειώσεις που χρησιμοποιούνται για να γίνει χρησιμοποιώντας το παρωχημένο zope.testing.doctest:
>>> Sample_txt = write ('sample.txt "," ""
... [#footnote] _
... >>> X
... 1
...
... .. [#footnote]
... >>> X = 1
... "" ")
>>> Από tl.testing.doctest DocFileSuite εισαγωγής
>>> Τρέξιμο (DocFileSuite (sample_txt, υποσημειώσεις = True))
-------------------------------------------------- --------------------
Ran 1 δοκιμή σε N.NNNs
ΕΝΤΆΞΕΙ
>>> Sample_txt = write ('sample.txt "," ""
... .. Κωδικό μπλοκ :: Python
... X = 1
...
... >>> X
... 1
... "" ")
>>> Manuel.codeblock εισαγωγής
>>> Τρέξιμο (DocFileSuite (sample_txt, Manuel = manuel.codeblock.Manuel ()))
-------------------------------------------------- --------------------
Ran 1 δοκιμή σε N.NNNs
OK
Απαιτήσεις :
- Python
Τα σχόλια δεν βρέθηκε