報錯NameError: name ‘null’ is not defined的解決方法


報錯NameError: name ‘null’ is not defined的解決方法

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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM