2017-03-12 103 views
0

我對Python中的unittest完全陌生,所以很抱歉,如果這是一個noob問題。在python unittest中創建模擬對象

我有一個Customer類:

class Customer(object): 

    def __init__(self, name, clubMember, taxExempt): 
     self.name = name 
     self.clubMember = clubMember 
     self.taxExempt = taxExempt 

    def isClubMember(self): 
     if (self.clubMember == True): 
      return True 
     else: 
      return False 

    def isTaxExempt(self): 
     if (self.taxExempt == True): 
      return True 
     else: 
      return False 

而且我想以一種模擬客戶的使用來測試它:

import unittest 
import Customer 

class TestCustomer(unittest.TestCase): 
    def setUp(self): 
     self.customer = Customer("John Doe", True, False) 

    def test_customer_member_status(self): 
     self.assertTrue(self.customer.isClubMember(), 'incorrect member status') 

    def test_customer_tax_exemption(self): 
     self.assertFalse(self.customer.isTaxExempt(), 'incorrect tax status') 

    def tearDown(self): 
     self.customer.dispose() 

不過,我收到以下錯誤:

self.customer = Customer("John Doe", True, False) 
TypeError: 'module' object is not callable 

我試圖搜索許多不同的網站,但我無法找到正確的格式來創建模擬客戶。此外,我不知道如何創建多個模擬客戶來測試另一個例子,如客戶(「Jane Doe」,False,True)等。

+2

您是否在'Customer.py'中定義了'Customer'類?如果是這樣,您需要將您的測試文件中的導入更改爲'from Customer import Customer' –

+0

您可以顯示您的目錄結構嗎?您的文件是否包含名爲'Customer.py'的Customer類?如果是這樣,你可能需要'從客戶導入客戶'。儘管如此,這不是真的關於嘲笑!你絕對*不想*嘲笑'客戶',因爲這是你正在測試的東西! –

回答

0

我猜你的模塊名稱也是Customer,當你做import Customer,它是導入模塊而不是類。

做到這一點,而不是在測試moudle

from Customer import Customer