eval()介紹
eval()函數十分強大,官方demo解釋為:將字符串str當成有效的表達式來求值并返回計算結果。
它可以把list,tuple,dict和string相互轉化。
在接口自動化中經常用到。
比如啊,我們把測試數據寫成數組的格式存放于excle表中,當讀取出來時就是str格式,此時用eval,就可以把取到的值轉換為正常的數組或者字典的格式了。
NameError: name ‘null’ is not defined是怎么出現的
a = "{"a":1,"b":2,"c":null}"
a = eval(a)
print(a)
在轉換的字符串中,存在null時,就會出現NameError: name ‘null’ is not defined這個錯誤。
解決方法
巧用 replace()方法。
將字符串中的null替換掉!
str = "{"a":1,"b":2,"c":null}"
str.replace("null", "123456")
a = eval(str)
print(a)
這樣子就能夠將字符串中的null替換掉了。就能夠正常的轉換了。
應用場景
我為什么要這么做呢?
因為我在做自動化測試的時候,需要在數據庫中取出一個
[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]
這樣子格式的數據來和預期值做對比。
我的預期值只是a,所以我要在這個數據中,把a取出來。
所以就需要上述的這種操作了!
a = "[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]"
hlist = eval(a)
在這一步的時候因為有null存在,所以報錯。
a = "[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]"
a = a.replace("null", "123456")
hlist = eval(a)
testhope = 1
if testhope == hlist[0]["a"]:
pass
這樣子就可以了,因為null被替換為了123456.
竟然還有這種操作!
為我的機智點個贊!