​python接口自动化(四十一)- 发xml格式参数的post请求(超详解)​

news/2023/12/8 23:17:06

简介

  最近在工作中,遇到一种奇葩的接口,它的参数数据是通过xml,进行传递的,不要大惊小怪的,林子大了什么鸟都有,每个人的思路想法不一样,开发的接口也是各式各样的,如果想要统一的话,必须是提前团队已经做好沟通定好规则,这样就像在产品线上生成一

样规格大小一致。就不会出现前边的问题了,如果出现了怎么办?而且项目进度比较急,没有时间修改,一期上线就只能凑合着用这组接口了,那么作为QA的你,会不会测试,如何用代码、工具实现呢???等等问题跟着就产生了。

  前边就有介绍到有关:post请求相对于get请求多一个body部分,body部分常见的数据类型有以下四种(注意是常见的,并不是只有4种)

  • application/x-www-form-urlencoded
  • application/json
  • text/xml
  • multipart/form-data

  本篇就来给各位看官和小伙伴们来讲xml这种类型的body案例,如何用python去实现,由于公司的制度的保密性,所以公司的接口就不能在这里给小伙伴们演示了,我给小伙伴们模拟了一个类似的接口,来给小伙伴们讲解一下思路,希望小伙伴们在遇到的时候不至于

慌了神,不知道从何处入手,其实说到底,说破大天了,它的本质还是一个接口,那就还是按照接口的那套思路往上边靠,这样就思路不至于太偏,也会走很少的弯路。好了就不啰嗦了,直接进入今天的正题吧。

text/xml的数据类型

1、首先要确定post请求的body部分类型是xml格式,可以用fiddler抓包工具、postman、jemter、Google浏览器接口调试插件来进行缺洞,这里我是用fiddler抓包工具来确定的。看到body部分格式如下:

如果你想学习接口自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的接口自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1.【接口自动化】目前软件测试的市场行情以及测试人员能力标准。、2.【接口自动化】全面熟练Requests库以及底层方法调用逻辑、3.【接口自动化】接口自动化实战及正则和JsonPath提取器的应用等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a

2、body里xml的参数:

复制代码

<?xml version=“1.0” encoding = “UTF-8”?>
<COM>
<REQ name="北京-宏哥">
<USER_ID>bjhongge</USER_ID>
<COMMODITY_ID>123456</COMMODITY_ID>
<SESSION_ID>absbnmasbnfmasbm1213</SESSION_ID>
</REQ>
</COM>

复制代码

模拟接口请求

  PS:!!!先不要着急的去用代码实现,而是先用工具请求一次,看是否可以请求是否可以成功。不要一开始就抨击怕啦的敲了半天,运行代码,傻眼了,运行结果和股市一样行情大涨,一片红色。结果你费了半天劲调试代码,也没查出错误。一问开发,开发用工具一试,一脸淫笑,然后笑呵呵的告诉你:额。。。,这个接口有点小问题,我需要调整一下下,这个时候是不是有一种想把开发接口的人痛揍一顿冲动,但是仔细想想还是自己的问题,如果一开始你就用工具模拟一下,出现问题立马找开发人员确认沟通,就不会有后面的剧情了。这种场景一般是萌新、小白可能会遇到的。好了,以下给小伙伴们列举了两种方法,当然了你也可以用其他方法模拟,条条大路通罗马,即可。

1、Google浏览器接口调试插件模拟

1、将url、请求方法、参数在插件中填写好,以后直接点击“Send”,即可

2、使用fiddler模拟

1、点开fiddler工具上composer菜单

 

2、填写URL、选择请求方法、将xml数据直接复制到右下方Request Body部分,然后点右上角Execute就能执行了

python3代码实现

1、宏哥演示环境:

(1)python37 (2)PyCharm 2018.3.5 x64  (3)操作系统win10

2、其实很简单的,难而不会,会而不难。将xml格式的body部分直接写成一个字符串类型就行了,遇到换行的字符串,在后面加个反斜杠

3、body参数用data去接收传入,要是遇到编码问题报错,就对body部分encode下再传入

4、运行结果

5、参考代码

 1 # coding=utf-82 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行3 4 # 2.注释:包括记录创建时间,创建人,项目名称。5 '''6 Created on 2019-5-297 8 Project:学习和使用 发xml格式参数的post请求9 '''
10 # 3.导入模块
11 import requests
12 url = "http://httpbin.org/post"
13 
14 # python3字符串换行,在右边加个反斜杠
15 body = '<?xml version="1.0" encoding = "UTF-8"?>' \
16        '<COM>' \
17        '<REQ name="北京-">' \
18        '<USER_ID></USER_ID>' \
19        '<COMMODITY_ID>123456</COMMODITY_ID>' \
20        '<SESSION_ID>absbnmasbnfmasbm1213</SESSION_ID>' \
21        '</REQ>' \
22        '</COM>'
23 
24 # 遇到编码报错时候,对body进行encode
25 r = requests.post(url, data=body.encode("utf-8"))
26 print(r.text)

从文件中读取XML数据

1、xml格式的数据写到代码里面,不太直观,后期维护也不方便,可以把xml格式数据单独拿出来写到一个文件里,再用open函数去读取

2、新建一个body1_xml文件,写入内容如下

3、参考内容

<?xml version=“1.0” encoding = “UTF-8”?>
<COM><REQ name="北京-宏哥"><USER_ID>bjhongge</USER_ID><COMMODITY_ID>123456</COMMODITY_ID><SESSION_ID>absbnmasbnfmasbm1213</SESSION_ID></REQ>
</COM>

4、用open函数去读xml内容

5、运行结果

6、参考代码

 1 # coding=utf-82 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行3 4 # 2.注释:包括记录创建时间,创建人,项目名称。5 '''6 Created on 2019-5-297 8 Project:学习和使用 发xml格式参数的post请求9 '''
10 # 3.导入模块
11 import requests
12 url = "http://httpbin.org/post"
13 
14 # python3字符串换行,在右边加个反斜杠
15 body = '<?xml version="1.0" encoding = "UTF-8"?>' \
16        '<COM>' \
17        '<REQ name="北京-宏哥">' \
18        '<USER_ID></USER_ID>' \
19        '<COMMODITY_ID>123456</COMMODITY_ID>' \
20        '<SESSION_ID>absbnmasbnfmasbm1213</SESSION_ID>' \
21        '</REQ>' \
22        '</COM>'
23 
24 with open('body1.xml',encoding='utf-8') as fp:
25        body = fp.read()
26 print(body)

小结

   嘿嘿,今天到这里有关发xml格式参数的post请求就给小伙伴们介绍完了,看起来是不是相当简单啊,但是在工作中遇到类似的问题,要灵活应用,不要生搬硬套。


http://www.ppmy.cn/news/949468.html

相关文章

GUI-Menu菜单实例(颜色+线型菜单)

运行代码&#xff1a; //GUI-Menu菜单实例&#xff08;颜色线型菜单&#xff09; #include"std_lib_facilities.h" #include"GUI/Simple_window.h" #include"GUI/GUI.h" #include"GUI/Graph.h" #include"GUI/Point.h"struc…

ChatGPT不是要付费的吗

是的&#xff0c;ChatGPT是一个付费的服务。OpenAI提供了API&#xff0c;允许开发人员将其集成到他们的应用程序中。开发人员可以通过订阅OpenAI的API并付费使用&#xff0c;以在他们的应用程序中使用ChatGPT的功能。然而&#xff0c;OpenAI也提供了一些免费的限制版本&#xf…

chatGPT是否支持语音交互

ChatGPT是一种自然语言处理模型&#xff0c;其主要功能是通过文本输入来生成文本输出。它本身不具备语音交互功能。如果你想要实现语音交互&#xff0c;可以使用其他技术&#xff0c;比如语音识别和语音合成。你可以使用这些技术将语音转换为文本&#xff0c;然后使用ChatGPT进…

2023全新简易ChatGPT手机端源码 使用ChatGPT3.5版本 实测可用

欢迎参考我主页内的其他文章,具体食用如图中所示&#xff0c;也可对我发起sx&#xff0c;你懂的

ChatGpt 申请的一些细节

ChatGPT的流程网上很多&#xff0c;大同小异&#xff0c;此处记录我申请的一些细节。 1. 代理 我一直用的代理不行&#xff0c;在ChatGPT网址上填写的时候&#xff0c;会报错chatGPT is not available in your country。偶然中&#xff0c;师妹提供了她的代理&#xff0c;htt…

程序员如何把ChatGPT用到开发中

问&#xff1a;ChatGPT是程序员的好帮手&#xff1f;还是要干掉程序员&#xff1f; ChatGPT现在如何了&#xff1f; ChatGPT最近火到不行&#xff0c;在短短几个月时间里&#xff0c;OpenAI打造的ChatGPT就从一个弱小无助的AI聊天程序发展成几乎无所不知、无所不能的强大AI大…

ChatGPT使用心得

心得&#xff1a; ChatGPT是openAI旗下的一款语言模型&#xff0c;说它是语言模型更不如说他是一个全能小助手&#xff0c;自从去年它爆火之后&#xff0c;国内也出现了许多同款语言模型&#xff0c;CSDN的C知道、三月份即将上线的百度的“文心一言”&#xff0c;这些智能语言…

对标ChatGPT3.5,支持手机电脑网页使用,无需魔法

说到 Claude 是什么&#xff0c;大家可能没听说过。 但是说到 OpenAI&#xff0c;说到 ChatGPT&#xff0c;相信大家一定听说过&#xff0c;玩过。 PS&#xff1a;关于 Claude 网页版的注册教程&#xff0c;我之前已经写过文章了&#xff0c;现在额外介绍如何使用手机App和电脑…

刚刚,我们和ChatGPT聊了聊边缘计算

ChatGPT是由美国OpenAI研发的聊天机器人程序&#xff0c;于2022年11月30日发布。上线仅仅两个月&#xff0c;ChatGPT的活跃用户就突破一亿&#xff0c;掀起了新一轮人工智能浪潮。作为一款优秀智能聊天机器人模型&#xff0c;ChatGPT在很多事情上都有着独特的见解。今天&#x…

在线使用AI合集

POE 前言 目前有关注的小伙伴应该会发现&#xff0c;ChatGPT注册功能已经关闭。那些还没有注册的小伙伴岂不是不能使用ChatGPT&#xff0c;今天为大家推荐的就是Poe | AI机器人集合 Sage、Claude、ChatGPT、Dragonfly。Poe链接 使用poe.com/ChatGPT 注册也非常简单&#xff…

手机版ChatGPT软件开发

手机版ChatGPT软件开发需要以下步骤&#xff1a; 确定需求&#xff1a;明确手机版ChatGPT软件的功能和特点&#xff0c;包括用户界面、交互方式、语音识别、自然语言处理等方面的要求。 设计UI界面&#xff1a;根据需求设计手机版ChatGPT软件的UI界面&#xff0c;包括首…

如何安装 ChatGPT手机客户端? 支持 iOS 和 安卓手机

1.首选需要在手机上安装快捷指令管理器&#xff1a;Shortcuts 【iOS版】【Android版】 2.在手机上下载ChatGPT的 ico 图标&#xff1a;正在上传…重新上传取消 3.添加下面的快捷指令&#xff1a;Make app from URL https://www.icloud.com/shortcuts/a8d6943813db4fe7a2c17e…

2023 安卓 ChatGPT手机学习版

无须注册 无须登陆 直接使用。。。。。。。。。。。。。。。。 2023 安卓 ChatGPT手机学习版。。。。。。。。。。。。。。。。

chatgpt赋能python:Python模拟手机操作–将更多的自动化和便利带到您的手中

Python 模拟手机操作 – 将更多的自动化和便利带到您的手中 随着人们的生活方式变得越来越快速和数码化&#xff0c;我们需要更多的自动化工具和便利性来提高我们的生产力和生活质量。Python是一种可靠的编程语言&#xff0c;有着出色的自动化和功能性&#xff0c;可以帮助我们…

使用chatgpt工具实现媒体查询适配各大厂商手机

本文目的&#xff1a; 使用chatgpt工具实现媒体查询适配各大厂商手机&#xff0c;根据不同的尺寸显示不同颜色的文字 实验过程&#xff1a; 1.先查询各大手机厂商存在哪些手机尺寸机型 华为手机有多种型号和尺寸&#xff0c;以下是其中一些主要的型号和尺寸&#xff1a; 华为…

874. 模拟行走机器人 模拟+哈希存储

题目链接力扣 机器人在一个无限大小的 XY 网格平面上行走&#xff0c;从点 (0, 0) 处开始出发&#xff0c;面向北方。该机器人可以接收以下三种类型的命令 commands &#xff1a; -2 &#xff1a;向左转 90 度-1 &#xff1a;向右转 90 度1 < x < 9 &#xff1a;向前移…

mysql中的行格式之compact格式分析

mysql中的行格式之compact格式分析 mysql行格式 所谓行格式&#xff0c;就是指mysql一行数据的存储格式。 InnoDB 储存引擎支持有四种行储存格式&#xff1a;Compact、Redundant、Dynamic 和 Compressed。 Redundant是很古老的行格式了&#xff0c;因为占用空间最多&#x…

使用ChatGPT

https://gpt.chatapi.art/

ChatGPT是什么?如何看待?如何使用?

ChatGPT是一个基于GPT-3模型的聊天机器人&#xff0c;它能够通过自然语言理解和生成技术&#xff0c;与用户进行智能对话&#xff0c;并根据用户的需求和偏好&#xff0c;完成各种有趣和实用的任务。例如&#xff0c;它可以帮助用户写故事、写代码、写歌词等创造性的内容&#…

TortoiseGit 入门指南11:还原与重置

Git 就像个时光机器&#xff0c;能让我们还原到任何提交。 还原未提交的更改 假如我们在查看一个干净的代码仓库&#xff0c;干净意味着工作区中的文件保持着最后一次提交的状态&#xff0c;没有修改。在查看的过程中&#xff0c;我们有意或无意的修改了工作区中的文件&#…
最新文章