我們昨天稍微寫了一些test來測試我們的Todolist,那當中下了很多次djang去run test的指令
'python manage.py test'
今天就來看看這個指令做了些什麼事吧!
先來稍微看一下python unittest怎麼寫,因為django的test也是建立在unittest之上的
接下來~
老樣子的到core management commands下的test.py看handle function
第一行的TestRunner從settings過來的,我想大家也都很熟悉了直接到django.conf.global_settings.py
下找到TEST_RUNNER
然後就可以找到DiscoverRunner
接著往下看
這邊可以看到他有setup環境 db等等,我們看看最重要的run test部分~
這邊的runner就是unittest中的runner了
而這個run就看最重要的地方吧
這邊的test就是我們剛剛傳進來的suite
那我們就來看看suite被call的時候會做什麼事吧!
看到call就要聯想到__call__
再看run
這邊就可以看到test運行前呢會先觸發class setup,結束會tear down~
然後接著看當中的test
一樣__call__
再往下
這邊也處理了很多東西
當中的super.__call__(result)
就不多看了,裡面也是滿多東西XD
最後就來畫個久久沒畫的圖吧~
test也是博大精深的學問,其實有時候光是想test要怎麼寫就花了一些時間,但有test的保護下自己交付出去的程式碼也相對能有信心!最後在好奇心的驅使下去看了django test的過程~起初是想要了解setUp, setUpClass, tearDown, tearDownClass的關聯,後面就把test整個巡過了一遍,挺有趣的!