Python的學習(十八)—- 單元測試工具nose

來源:互聯網
上載者:User

轉自http://blog.csdn.net/zbyufei/article/details/6574213

一、安裝nose

  先用easy_install 安裝 nose,easy_install是一個很好的python工具,可以方便安裝很多的python程式。可以去http://pypi.python.org/pypi/setuptools瞭解一下easy_install。如果懶得去看的,可以直接從這裡下載安裝檔案進行安裝就可以了,注意,這個連結是windows
32位的安裝包。

  安裝完easy_install後,在相應版本的Scripts目錄下(例如C:/Python26/Scripts)會有一個easy_install.exe程式,通過這個就可以安裝了。在命令列下轉到Python的Scripts目錄下,執行以下的命令進行安裝:

  C:/Python26/Scripts/easy_install nose

  上面的 C:/Python26/Scripts 需要根據您的Python的安裝路徑進行修改。   安完畢後,在C:/Python26/Scripts下會有一個nosetests.exe檔案,通過這個exe程式就可以在命令列下運行測試了。最好是把C:/Python26/Scripts加入環境變數,這樣在其它目錄中可以直接引用nosetests.exe。

二、運行測試

  在命令列下,直接運行nosetests(注意要把nosetests.exe所在的目錄加入到環境變數Path裡面),它就會自動尋找目前的目錄下包含"Test"字串的目錄和檔案進行測試
這樣我們可以把所有測試case放在一起,然後讓測試自己去運行,我們最後看結果就可以了。我們可以指定具體如何輸出結果,也可以指定如何搜尋檔案和檔案夾,還可以把測試結果輸入到指定的檔案。

三、編寫測試
a)簡單的測試

=======================#### file: test.py ####======================= def Testfunc():     a = 1     b = 2     assert a == b

  把上面的檔案儲存到一個目錄下,然後在該目錄下在命令列裡執行nosetests就可以運行測試了。

b)模組的setUp和tearDown

def setUp():    print "function setup"def tearDown():    print "function teardown"    def Testfunc1():    print "Testfunc1"    assert Truedef Testfunc2():    print "Testfunc2"    assert True

  nose在檔案中如果找到函數setup, setup_module, setUp 或者setUpModule等,那麼會在該模組的所有測試執行之前執行該函數。如果找到函數 teardown,tearDown, teardown_module或者 tearDownModule 等,那麼會在該模組所有的測試執行完之後執行該函數。

  對於上面的代碼,nose實際的執行過程是這樣的:

  setUp()->Testfunc1()->Testfunc2()->tearDown()

c)測試函數的setUp和tearDown

  可能會想給每個函數單獨指定類似的setUp和tearDown函數,可以如下處理:

  def setUp():      print "function setup"   def tearDown():     print "function teardown"  def func1Start():     print "func1 start"  def func1End():     print "func1 end"  def func2Start():     print "func2 start"  def func2End():     print "func2 end"     def Testfunc1():     print "Testfunc1"     assert True  def Testfunc2():     print "Testfunc2"     assert True  Testfunc1.setup = func1Start Testfunc1.tearDown = func1End Testfunc2.setup = func2Start Testfunc2.tearDown = func2End

  注意最後面的四行,分別指定了Testfunc1和Testfun2的setup和teardown函數。

  nose對上面代碼的具體執行順序如下:

  setUp()->func1Start()->Testfunc1()->func1End()->func2Start()->Testfunc2()->func2End()->tearDown()

  d)測試類別的的setUp和tearDown

  看如下的代碼:

 

 class TestClass():     arr1 = 2     arr2 = 2         def setUp(self):         self.arr1 = 1         self.arr2 = 3         print "MyTestClass setup"      def tearDown(self):         print "MyTestClass teardown"             def Testfunc1(self):         assert self.arr1 == self.arr2         def Testfunc2(self):         assert self.arr1 == 2

  這裡nose會對每個類的測試方法單獨建立類的執行個體,並且有單獨的setUp和tearDown。nose對上面測試的順序如下:

   setUp()->Testfunc1()->TearDown()->setUp()->Testfunc2()->TearDown()

 

  e)package的setUp和tearDown

  package的setUp和tearDown方法需要放在__init__.py這個檔案中,整個package只執行一次setUp和一次tearDown。

 

四、nosetest常用的命令列參數

  這裡只重點介紹幾個常用的,其它的參數可以通過nosetests -h進行查看。

  a) -w ,指定一個目錄運行測試。目錄可以是相對路徑或絕對路徑。

   例如: nosetest -w c:/pythonTests/Test1,只運行目錄c:/pythonTests/Test1下的測試。可以指定多個目錄,例如: nosetest -w c:/pythonTests/Test1 -w c:/pythonTests/Test2。

   b)-s,不捕獲輸出,會讓你的程式裡面的一些命令列上的輸出顯示出來。例如print所輸出的內容。

   c)-v,查看nose的運行資訊和調試資訊。例如會給出當前正在運行哪個測試。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.