我正在嘗試使用unittest
設置介紹CS類的評分腳本。實質上,學生提交一個python文件student.py
,它有一些通常相互依賴的函數(意思是func3()
可能在其計算中使用func1()
)。刪除/覆蓋導入
我通過student.func1
輸出比較的correct.func1
輸出,這是已知的正確執行(從文件correct.py
)的方法寫的每一個方法的單元測試。
作爲一個例子,說func2
在它的計算中使用func1
。 因此,無論是默認還是student.func1
都沒有通過一些測試,我想用correct.func1
覆蓋student.func1
,所以student.func2
使用了一個已知的正確實現(因此默認情況下不僅僅是錯誤的)。我怎麼能這樣做呢?它看起來像setUp()
和tearDown()
是類似於我想要的,但我不知道如何在Python中「unimport」模塊,到目前爲止還沒有找到任何有關它的資源。
我很感興趣,雙方的情況下student.py
含有類,func1
,func2
是一類特殊的方法,以及當func1
和func2
內student.py
只是定義一般。
我認爲用正確的函數替換錯誤的函數是一個不好的舉動。如果'func2'依賴'func1'並且'func1'以打破'func2'的方式被破壞,那麼學生應該注意到'func2'在測試中被破壞了。同樣,如果他們錯誤地解釋了'func1'的規範並且注意到它太遲了,但是其他所有函數都與不正確的'func1'行爲一起工作,他們不應該因爲將func1換出他們的其他職能沒有想到。 – user2357112
@ user2357112我同意這不是一個完美的想法,我只是想這樣做,因爲我們目前的查找錯誤的調試方法是用已知的工作代碼替換破碎的代碼,直到我們發現它們沒有工作。另外,這個腳本並不是用於分配等級,而僅僅是爲了協助手動評分(所以如果他們通過了所有測試,那麼一切都很完美,只要'func7'失敗,可能先看那裏等等)。 – Mark