1.使用requests库请求get接口的传参问题
- 问题:请求一个get接口,语法:requests.get(url,params=param),其中param是一个字典,并且字典内部的valueb包含list,接口报400,无法请求成功
- 解决:requests.get(url,params=str(param)),param还是原来的字典,请求成功
- 总结:requests.get方法的params参数,虽然支持字典格式传参,但字典内部包含list的时候,接口请求报错,需要将字典转成字符串传参(不排除是接口本身特殊,待验证)
2.Jenkins执行自动化,Oracle连接断开问题
- 问题:Jenkins执行自动化脚本报错数据库连接失效,本地不报错
- 解决:问题原因是开启数据库连接写在了py文件的类外部/ 类内部,但是不在任何函数里,这样的代码,pytest在一开始搜集用例时就会执行,等到真正执行该条case的时候,连接开启已经自动关闭了。
- 总结:数据库连接应该在哪里用就在哪里开,不能写在函数外部
3.Jenkins执行自动化,sql.iud操作卡死问题
- 问题:Jenkins执行自动化脚本卡在sql.iud方法,几小时都不结束
- 分析:死锁。1.自动化脚本触发程序执行异步作业,达到脚本内超时时间,放弃作业直接去执行delete语句清理数据,但程序触发的异步作业尚在执行,还未结束,正在对数据库的数据进行update操作,自动化脚本执行delete操作产生死锁,sql.iud方法不退出,直接卡死。解决方案最优选是自动化脚本执行异步作业超时的时候,对异步作业标记放弃,停止操作数据库,再去执行清理操作 .2.异步作业,程序还没有处理完,脚本就去清理数据,这属于错误操作,判断程序完成的方法写得有问题
- 总结:自动化脚本操作数据库时,需要考虑是否和程序正在执行的操作冲突