python函数传参不改变传入变量值

  今天写用例遇到一个问题,困扰了好一会

问题描述:

  接口的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)

 

posted @ 2021-11-22 17:55  真果粒豆  阅读(849)  评论(0编辑  收藏  举报