2013-04-11 79 views
0

我在模塊(mod1)中有一些功能。我想對它們進行一些單元測試(特別是nosetests)。大多數使用我所見過的unittest/nosetests的介紹似乎只是導入代碼以使用from mod1 import func1進行測試。但是,從我收集的內容中,我想避免導入由mod1導入的模塊(mod2)中的任何代碼,以便您只在mod1中直接測試代碼。相反,我應該嘲笑MOD1導入的mod2的功能。我只是很傻,from mod1 import func1不會從mod2導入代碼?還是有其他的方式來導入func1,以便它不會從mod2導入任何代碼?非常感謝!Python - 如何導入單元測試模塊?

回答

1

這比M1的設計決策,互動機智平方米,所以你必須選擇

1) Test mod1 with mod2 
2) Mock functions in mo2d 

但是還有一些方法也避免直接進口看看這個代碼

https://github.com/django/django/blob/master/django/db/models/loading.py 
https://github.com/tangentlabs/django-oscar/blob/master/oscar/core/loading.py 

,希望能幫助你分開你的模塊有點(如果真的需要)

+0

所以通過「模擬mod2函數」,你的意思是我只是導入mod1,然後導入mod2,然後我只是嘲笑每個函數是由mod2導入,所以他們都沒有實際使用?有什麼方法可以確保他們每個人都被嘲笑,而且沒有真正的功能會被使用? – golmschenk 2013-04-11 19:50:40

+0

當運行你的測試框架時,必須有一個類似於我們在unintest2中的「setubStubs」的方法。這裏是放置這段代碼的好地方。而這個東西http://www.voidspace.org.uk/python/mock/index.html#可能會有用 – singer 2013-04-11 20:31:32