eval()介紹
eval()函數(shù)十分強(qiáng)大袒炉,官方demo解釋為:將字符串str當(dāng)成有效的表達(dá)式來(lái)求值并返回計(jì)算結(jié)果。
它可以把list,tuple,dict和string相互轉(zhuǎn)化。
在接口自動(dòng)化中經(jīng)常用到鸥诽。
比如啊传趾,我們把測(cè)試數(shù)據(jù)寫(xiě)成數(shù)組的格式存放于excle表中,當(dāng)讀取出來(lái)時(shí)就是str格式敌呈,此時(shí)用eval,就可以把取到的值轉(zhuǎn)換為正常的數(shù)組或者字典的格式了造寝。
NameError: name ‘null’ is not defined是怎么出現(xiàn)的
a = "{"a":1,"b":2,"c":null}"
a = eval(a)
print(a)
在轉(zhuǎn)換的字符串中磕洪,存在null時(shí),就會(huì)出現(xiàn)NameError: name ‘null’ is not defined這個(gè)錯(cuò)誤匹舞。
解決方法
巧用 replace()方法褐鸥。
將字符串中的null替換掉!
str = "{"a":1,"b":2,"c":null}"
str.replace("null", "123456")
a = eval(str)
print(a)
這樣子就能夠?qū)⒆址械膎ull替換掉了赐稽。就能夠正常的轉(zhuǎn)換了叫榕。
應(yīng)用場(chǎng)景
我為什么要這么做呢?
因?yàn)槲以谧鲎詣?dòng)化測(cè)試的時(shí)候姊舵,需要在數(shù)據(jù)庫(kù)中取出一個(gè)
[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]
這樣子格式的數(shù)據(jù)來(lái)和預(yù)期值做對(duì)比晰绎。
我的預(yù)期值只是a,所以我要在這個(gè)數(shù)據(jù)中,把a(bǔ)取出來(lái)括丁。
所以就需要上述的這種操作了荞下!
a = "[{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null},{"a":1,"b":2,"c":null}]"
hlist = eval(a)
在這一步的時(shí)候因?yàn)橛衝ull存在,所以報(bào)錯(cuò)史飞。
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
這樣子就可以了尖昏,因?yàn)閚ull被替換為了123456.
竟然還有這種操作!
為我的機(jī)智點(diǎn)個(gè)贊构资!