今天寫用例遇到一個問題,困擾了好一會
問題描述:
接口的api定義在yaml文件中,里面有接口的apiurl,定義為/testapi,調用時會進行域名拼接,重新賦值給apiurl,使用數據驅動第一次執行完, interface["url"]被賦值修改為域名+apiurl,第二次調用接口報錯
如圖為api層調用makeInterface函數,傳入interface這個json,通過makeInterface函數會對請求url等進行拼接
在一個case中使用了數據驅動進行調用,第一次執行完,interface["url"]被賦值修改為域名+apiurl,第二次調用接口報錯
這個原因是因為python存在可變參數和不可變參數,只有函數參數傳入的是不可變參數,函數中的調用不會改變原參數變量值,否則,函數中對變量值的修改會改變原變量的值
- 不可變對象:Number ,String , Tuple,bool
- 可變對象: List , Set , Dictionary是可以改變內部的元素
如果想要函數中不對可變對象的原參數值進行修改可以使用copy.deepcopy()
desinterface = copy.deepcopy(interface)