我正在测试一些代码并希望测试以查看API是否格式正确。下面是我用来测试的字典。
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,如下所示:
TypeError: string indices must be integers, not str
我没看到什么?我在它下面有一个负面测试,运行完全正常,但这个没有。那是为什么?
编辑:我忘了说有问题的一行是:if self.verify_age(slots['DriverAge']):
除此之外似乎运行良好。
答案 0 :(得分: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)