原本是打算今天分享一下最近学习接口自动化的心得体会,然而在我写模板的时候,却被一个坑拦我大半天,心得体会不得不 延期再分享了。在我无数次调试无数次看log,终于发现并解决这个问题了。下面记录一下踩的坑: 首先我有这么一个简单至极的excel用例,请看下图:
其他列暂且忽略,我们发现param列的元素在python中是字典格式的,对吧?然后我就一波操作,从excel中取到了这个字典,然后通过request.get方法,传到参数里面,but???发现返回值500?什么鬼啊?我不信,不用这个获取到的param,直接定义一个一样的字典传到get方法里面。哎?成功了?woc,明明这两个都长一样啊,一个成功调用了接口的数据,另一个怎么500?(此处忽略N处怀疑其他地方出问题的-.-)看来就是这个param有问题啊。可是看上去都一样啊?肿木办啊!就在我苦思冥想几个小时之后,一个idea灵光一闪,字符"1"和数字1看上去不也一样嘛,莫非,取出这个字典也变成了字符串?哎,对啊,取出来的就是字符串啊!只不过长得像字典而已!为了证实一下猜想,用type函数验证了一下,果然就是这个问题!敌人伪装成了字典,但是它就是字符串,呵!好,问题找到了,那么要怎么解决这个问题呢?把字符串转换成字典?对不起,这题超纲了!我能怎么办?我也很绝望啊!于是乎,非常腼腆的去百度了一下怎么解决(感谢度娘,阿西吧),果然,解决办法多样,什么json啊,eval()啊,ast.literal_eval 啊 等等等。我这么笨,当然只能记住最简单的那个eval(),于是就又腼腆的使用这个eval()函数,在代码中偷偷的将敌人字符串转换成我们的友军字典。完美。然后再执行,一切都如预期那样,该成功的成功,该执行失败的失败,美滋滋! 附上结果图: