源码:
def test_member_save(self):
headers = {
"Accept": "*/*",
"Content-Length":"",
"Host":"",
# "Accept-Encoding": "gzip, deflate, br",
# "Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}
path='./data/member/member_data.json'
raw_path='E:\data\python\gulimalltest\data\member\member_data.json'
with open(raw_path,"r",encoding="UTF-8") as file:
data=file.read()
member_data_list=json.loads(data)
member_data=member_data_list['save_data1']
print(member_data)
url = 'http://localhost:88/api/member/member/save'
#ret = self.apikey.post(url=url,data=None,json=member_data)
ret = requests.post(url, data=data,headers=headers)
log.info(f"------------run {ret }")
logging.info(f"ret.status_code={ret.status_code}")
assert ret.status_code == 200
logging.info(f"ret.encoding={ret.encoding}")
assert ret.encoding == 'UTF-8'
logging.info(f"ret.headers={ret.headers}")
logging.info(f"ret.text={ret.text}")
logging.info(f"ret.json={ret.json}")
data = ret.content.decode(ret.apparent_encoding)
logging.info(data)
问题:
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 177-178: Body ('深圳') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.
问题原因:
请求body里面有 汉字,没有进行untf-8编码导致,解决方法,对data进行 encode()编码
修改 ;
ret = requests.post(url, data=data.encode(encoding="utf-8"),headers=headers)
def test_member_save(self):
headers = {
"Accept": "*/*",
"Content-Length":"",
"Host":"",
# "Accept-Encoding": "gzip, deflate, br",
# "Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
}
path='./data/member/member_data.json'
raw_path='E:\data\python\gulimalltest\data\member\member_data.json'
with open(raw_path,"r",encoding="UTF-8") as file:
data=file.read()
member_data_list=json.loads(data)
member_data=member_data_list['save_data1']
print(member_data)
url = 'http://localhost:88/api/member/member/save'
#ret = self.apikey.post(url=url,data=None,json=member_data)
ret = requests.post(url, data=data.encode(encoding="utf-8"),headers=headers)
log.info(f"------------run {ret }")
logging.info(f"ret.status_code={ret.status_code}")
assert ret.status_code == 200
logging.info(f"ret.encoding={ret.encoding}")
assert ret.encoding == 'UTF-8'
logging.info(f"ret.headers={ret.headers}")
logging.info(f"ret.text={ret.text}")
logging.info(f"ret.json={ret.json}")
data = ret.content.decode(ret.apparent_encoding)
logging.info(data)