python2->3编码格式坑

两年前用HttpRunner框架做了接口自动化,最近再次用发现改动很大,特别是从python2升到了python3,字节和字符对应关系的改变,对曾经用到的加密模块产生了问题.

image.png
image.png

跑去几个社区提问题也没靠谱回复:segment , stackflow

最开始以为是Crypto库不支持python3,因为同样的代码,python2运行并不报错.
后来一边继续用python2做自动化工程,一边每天留出一点时间解决python3的这个加密问题.
直到上周发现继续使用python2的话,框架没法打印出带中文的自动化测试报告,除非我又去改框架代码.....
没办法了..一定要解决python3的问题,不然类似问题会越堆越多.

拷贝了一份已有工程,换到另一台笔记本,避免系统自身环境问题干扰.
两台电脑的两份代码, 对比着一行一行修改,一句一句调试打印...
修改了加密代码,上周五开始没报编码问题了,但是登录返回的是9999网络错误, 看服务器后台日志,是无法解析加密代码.

看来修改加密代码处理了加密问题,但是服务器那边又无法解析了.

刚才看修改前的加密原版代码,突然发现了问题所在....

其实只需要把这行
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
改成
pad = lambda s: (s + ((BS - len(s) % BS) * chr(BS - len(s) % BS))).encode(encoding="utf-8")

不需要修改加密代码,只把最后的格式改一下就可以了....

image.png

你可能感兴趣的:(python2->3编码格式坑)