Python 接口自动化测试,python 里一个隐藏很深的坑

null · 2019年08月02日 · 最后由 陈恒捷 回复于 2019年08月02日 · 2007 次阅读

python 版本:2.7.14
平台:win7_64 、 Linux x86_64

场景:校验字段类型,长整型校验通过,其他类型校验不通过
问题描述:相同的值,在本地长整型类型校验时能通过,但是在 Linux 环境下校验不通过

原因分析:不同的平台,python 支持的整型精度不一样,使用 sys.maxint 即可等到当前平台支持的整型精度
例如:
win7_64 sys.maxint 得到的是 2147483647
linux x86_64 sys.maxint 得到的是 9223372036854775807

所以同一个值 100000007455,在本地 windows 环境下得到的是长整型,但是 linux 环境下得到的是整型而不是长整型,导致本地校验通过,linux 校验不通过

共收到 4 条回复 时间 点赞

为什么要对数据类型做校验呢?
不同的语言,不同的平台对数据类型处理都不太一样,一般都是校验值是否正确吧

null #2 · 2019年08月02日 Author

要的,全部字段做校验,类型校验也要做,值校验也做,只是少数

3楼 已删除

引用https://stackoverflow.com/questions/22513445/python-handles-long-ints-differently-on-windows-and-unix 上面的回答
python 的 int 是取 C long type,在 windows 里,定义 C long type 就是 32 位长度,而在 Linux 则取 C long type 的 64 位,所以不一样,也就是说,有一些 windows 和 linux 上的差异基本都是 c 库在不同平台的表现差异。

这个坑确实挺深的。想请教下,应该怎么做能避免踩中这个坑?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册