![](/img/trans.png)
[英]How to do unit testing of functions writing files using Python's 'unittest'
[英]Python - How to do unit testing of functions deleting something?
我有兩個函數,一個函數創建一個對象並存儲在列表調用create()
,另一個函數刪除對象形式的列表調用delete()
。
我已經使用unittest模塊為create()
編寫了單元測試。 但是我不知道如何為delete()
編寫單元測試。
由於delete()
依賴於create()
。
創建對象之前無法刪除它。
如果我通過先調用create()
為delete()
編寫單元測試。
當測試失敗時,我不知道哪個功能導致測試失敗。
def create(self, clusterName):
import uuid
newClusterUuid = str(uuid.uuid4())
newCluster = Cluster(uuid = newClusterUuid, name = clusterName)
self.clusterList[newClusterUuid] = newCluster
return newClusterUuid
def delete(self, uuid):
try:
del self.clusterList[uuid]
return True
except:
return False
在測試中,您有“預期的失敗”,實際上可以證明您的功能正在工作。
因此,對於刪除功能,您可以測試所有以下情況:
在情況#1中,您期望它失敗-如果它確實失敗(引發異常),則它實際上通過了測試。
還有一些將測試標記為預期失敗的方法 ; 這基本上意味着,如果此測試無法運行,那么它就不會失敗。
您也可以嘗試使用setUp
和tearDown
方法。 因此,您可以將create()
放入安裝程序,如果失敗,則將自動跳過delete()
測試。
您可以通過初始化偽集群列表來隔離刪除和創建。
#setup
fakeClusterList = [1,3,5,6,0]
fakeUUID = 3
# test delete with your delete method
更好的方法是將Cluster注入您的create方法(即,將其作為參數傳遞)。 這樣,您可以傳入模擬的Cluster對象,該對象將返回假列表進行測試。
因此,由於delete
了實際的創建邏輯(可能會很復雜),因此在delete
單元測試期間,偽create
失敗的可能性要低得多。
閱讀有關依賴注入的內容 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.