Qualche ragione per NON scrivere un codice Python autodiagnostico?

5

Mentre scrivevo i test stavo riflettendo seriamente su come garantire di avere i test per ogni classe nella mia applicazione.

Mi è venuto in mente che forse dovrei inserire il codice di test nelle classi, rendendo evidente che ogni classe ha un test e viceversa.

Ho scoperto che questo è chiamato "codice di test automatico" link

Ovviamente nello sviluppo del software ci saranno sempre molte persone che dicono che è un modo terribile di programmare, non puoi farlo! Sono interessato a sentire cosa hanno da dire gli oppositori riguardo alla scrittura di classi di auto test in Python. Quali sono le ragioni per cui è una cattiva idea?

grazie!

class MyOperation():

    def some_useful_function(self):
         # do some useful function

    def some_other_function(self):
         # do some other function

    class Test_MyOperation():

        def test_something(self):
            # some test code
            assert(True)

        def test_something_else(self):
            # some more test code
            assert(True)
    
posta Duke Dougal 26.01.2015 - 23:09
fonte

1 risposta

18

Ecco quattro ragioni per non farlo:

  1. Chiunque legga il tuo codice dovrà guadare un sacco di codice di test. Ciò renderà più difficile capire cosa sta facendo.
  2. Tutto il codice di test viene caricato in memoria anche quando non si esegue il test. Questo è uno spreco. (Forse non è importante in questi giorni quando 8 GB di RAM sono normali.)
  3. Il codice di prova dovrebbe avere esattamente l'accesso che hanno gli altri utenti del codice. Se fa parte della classe stessa, si fanno mancare le cose poiché il codice di test non è in esecuzione nello stesso contesto del codice effettivo che utilizza la classe. (Un problema più grande in linguaggi come il C ++ che impone la privacy ma può comunque causare problemi).
  4. Renderà inaccurati gli strumenti di copertura del codice

L'alternativa che ho usato è di inserire tutto il codice di prova per foo.py in un file chiamato test/test_foo.py . Ciò rende banale eseguire automaticamente un test per un dato file e vedere quale codice di test si applica a quale file, senza avere nessuno di questi problemi. Diventa anche molto naturale avere un editor con una vista a finestra divisa, uno nel codice reale, uno nel codice di test.

    
risposta data 27.01.2015 - 00:22
fonte

Leggi altre domande sui tag