2017-04-12 77 views
0

我正在測試一些代碼,並想測試以查看API是否格式正確。下面是我用來測試的字典。TypeError:字符串索引必須是整數,而不是str。我沒有看到什麼?

self.test_query_values_positive = { 
    'DriverAge' : 33, 
    'PickUpCity' : 'Tampa', 
    'CarType' : 'luxury' 
} 

這裏是有問題的單元測試:

def testQueryCreationPositive(self): 
    test_query = self.testDBM.create_http_query(self.test_query_values_positive) 
    self.assertEqual("some.api/findCar?city=Tampa&class=luxury", 
        self.testDBM.create_http_query(test_query)) 

這裏是我從testDBM對象調用

def create_http_query(self, slots): 
    base_url = 'some.api/findCar?' 
    query = None 
    if self.verify_age(slots['DriverAge']): 
     pickup = slots['PickUpCity'].title() 
     car_type = slots['CarType'].lower() 
     query = '{0}city={1}&class={2}'.format(base_url, pickup, car_type) 
    else: 
     query = None 
    return query 

從這個功能,我得到一個類型錯誤的如下所示:

TypeError: string indices must be integers, not str 

我沒有看到什麼?我在它下面有一個負面測試,它運行得非常好,但這不是。這是爲什麼?

編輯:我忘了說,有問題的路線是:

if self.verify_age(slots['DriverAge']): 

似乎跑得比罰款等。

+1

'test_query'是字符串或'None',所以在執行下一行中,'create_http_query'的'slots'參數可以是一個字符串或'None'(在你的情況下是字符串)。 – vaultah

回答

1
def testQueryCreationPositive(self): 
    test_query = self.testDBM.create_http_query(self.test_query_values_positive) 
    self.assertEqual("some.api/findCar?city=Tampa&class=luxury", 
        self.testDBM.create_http_query(test_query)) # this line is bad 

這是你想要什麼:

self.assertEqual("some.api/findCar?city=Tampa&class=luxury", test_query) 
相關問題