2012-04-04 114 views
-2

我的作業部分是爲每個函數創建測試。這有點長,但我很困惑。我把這個函數下面的鏈接,所以你可以看到它看起來像
第一個代碼是非常長的,因爲。如何編寫作業測試用例

def load_profiles(profiles_file, person_to_friends, person_to_networks): 
    '''(file, dict of {str : list of strs}, dict of {str : list of strs}) -> NoneType 
    Update person to friends and person to networks dictionaries to include 
    the data in open file.''' 

    # for updating person_to_friends dict 
    update_p_to_f(profiles_file, person_to_friends) 
    update_p_to_n(profiles_file, person_to_networks) 

繼承人整個代碼:http://shrib.com/8EF4E8Z3,我通過mainblock測試它,它的工作原理。 這是我們所提供的文本文件(profiles_file),我們正在使用,將它們轉換: http://shrib.com/zI61fmNP

如何通過鼻子運行測試用例對於這一點,有點什麼測試結果有哪些?還是我沒有足夠具體?

進口鼻 進口a3_functions

高清test_load_profiles_

如果 == '主要': nose.runmodule() 我去那麼遠那麼我不知道我可以測試的功能。

+0

是的,你不夠具體。測試用例是可以輸入到程序中的數據示例,您必須查看輸出是否正確以及程序是否失敗。要運行測試用例,您可以簡單地創建一些文件,例如'profiles_file',並用它們運行程序。看看它是否有效。用不同的數據製作不同類型的文件,看看它們是否都能正常工作。當我們對數據一無所知時,很難看到應該運行哪些測試用例。 – jamylak 2012-04-04 09:41:40

+0

哦,因爲有太多的數據我不能在這裏複製它,除非我真的與他們一起詳細介紹1。而且人們也會讀它。所以測試這些類型的數據你必須創建你自己的文本? – xevaaa 2012-04-04 09:43:39

+0

是的,創建你自己的文件,或者你的程序接受的任何輸入。嘗試和使用幾乎所有你能想到的不同類型的東西,看看你的程序是否適用於所有情況。 – jamylak 2012-04-04 09:45:46

回答

1

讓我們假設你寫了這麼遠是一個名爲「mycode的」模塊中的代碼。

編寫一個名爲testmycode的新模塊。 (即創建一個名爲testmycode.py Python文件)

在那裏,輸入你想測試(mycode的)

寫一個函數叫做testupdate模塊()。

在這種功能,先寫一個文本文件(file.write),您希望是有效的。然後讓update_p_to_f更新它。使用assert驗證它是否符合你的期望。這是一個閱讀文本文件的測試。

然後,你可以寫一個第二函數調用testupdate_write(),在那裏你讓你的代碼寫入到文件 - 然後驗證它寫的是正確的。

運行測試,使用(在命令行)

nosetests -sx testmycode.py 

將加載testmycode並運行它發現有與測試開始的所有功能。

+0

因爲它需要txt文件作爲參數這是否意味着我必須創建diff文本文件來測試它? – xevaaa 2012-04-04 17:51:28

+0

如果通過'差異'你的意思不同,是的。這個想法是涵蓋你想測試的函數的各個方面,以確保每一行代碼按預期工作。 – j13r 2012-04-04 18:43:01

0

你可能想測試這兩個程序的整體輸出是正確的,你的程序的個別部分是正確的。

  • @ j13r已經介紹瞭如何測試程序的全面正確性以確保正常運行。
  • 你提到你有四個幫助函數。你可以分別爲它們編寫測試。

測試小部分代碼是有幫助的,因爲您可以用更多和更具體的方式測試每個部分,而不是僅測試整個部分。

unittest模塊是用於執行測試的框架。

+0

您可以使用鼻子只運行單個測試:nosetests -sx testmycode.py:testupdate – j13r 2012-04-04 11:58:42

+0

等等,我必須爲助手函數編寫一個單獨的文件?或者我可以將它全部納入其下的一個功能之下。 – xevaaa 2012-04-04 17:35:59