简介
  最近在工作中,遇到一种奇葩的接口,它的参数数据是通过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部分格式如下:

2、body里xml的参数:

<?xml version=“1.0” encoding = “UTF-8”?> bjhongge 123456 absbnmasbnfmasbm1213

模拟接口请求
  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-8
2 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
4 # 2.注释:包括记录创建时间,创建人,项目名称。
10 # 3.导入模块
11 import requests
12 url = “http://httpbin.org/post”
13
14 # python3字符串换行,在右边加个反斜杠
15 body = ‘<?xml version="1.0" encoding = "UTF-8"?>’
16 ‘’
17 ‘’
18 ‘<USER_ID></USER_ID>’
19 ‘<COMMODITY_ID>123456</COMMODITY_ID>’
20 ‘<SESSION_ID>absbnmasbnfmasbm1213</SESSION_ID>’
21 ‘’
22 ‘’
23
24 # 遇到编码报错时候,对body进行encode
25 r = requests.post(url, data=body.encode(“utf-8”))
26 print(r.text)

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


3、参考内容

<?xml version=“1.0” encoding = “UTF-8”?> bjhongge 123456 absbnmasbnfmasbm1213

4、用open函数去读xml内容

5、运行结果
6、参考代码

1 # coding=utf-8
2 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
3
4 # 2.注释:包括记录创建时间,创建人,项目名称。
5 ‘’’
6 Created on 2019-5-29
7 @author: 北京-宏哥 QQ交流群:984942724
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 ‘’
17 ‘’
18 ‘<USER_ID></USER_ID>’
19 ‘<COMMODITY_ID>123456</COMMODITY_ID>’
20 ‘<SESSION_ID>absbnmasbnfmasbm1213</SESSION_ID>’
21 ‘’
22 ‘’
23
24 with open(‘body1.xml’,encoding=‘utf-8’) as fp:
25 body = fp.read()
26 print(body)

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

  1. python接口自动化(三十九)- logger 日志 - 上(超详解)

    简介 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP, ...

  2. python接口自动化(二十八)--html测试 报告——下(详解)

    简介 五一小长假已经结束了,想必大家都吃饱喝足玩好了,那就继续学习吧.一天不学习,自己知道:两天不学习,对手知道:三天不学习,大家知道:一周不学习,智商输给猪.好了开个玩笑都逗大家一乐,但是想想还是有 ...

  3. python控制手机模拟器_Appium+python自动化之连接模拟器并启动淘宝APP(超详解)...

    简介 上一篇讲解完模拟器的安装.配置好以后,就好比我们手机已经买好,并且系统已经做好了,就差我们用数据线和电脑连接开始实战了,这篇宏哥就带着小伙伴们和童鞋们趁热打铁,讲解和分享一下如何连接模拟器(电脑 ...

  4. python接口自动化(十一)--发送post【data】(详解)

    简介 前面登录博客园的是传 json 参数,由于其登录机制的改变没办法演示,然而在工作中有些登录不是传 json 的,如 jenkins 的登录,这里小编就以jenkins 登录为案例,传 data ...

  5. python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解

    目录 一.安装python(python3.7.4) 1.下载 (1)下载1(32位) (2)下载2(64位) 2.安装 3.配置python环境变量 4.检验python 二.安装anaconda( ...

  6. java集合详解_Map、Set、List及其子类和接口你都明白吗?看这篇Java集合超详解

    前言: 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同? 长度上:数组 ...

  7. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)–发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先了 ...

  8. python接口自动化pdf悠悠_python接口自动化13-data和json参数傻傻分不清【悠悠】

    https://www.cnblogs.com/yoyoketang/p/7231384.html 前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参 ...

  9. python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

最新文章

  1. 专家点评Nature Plants | 中科院微生物所郭惠珊研究组揭示土传病原菌逃避寄主免疫的新机制...
  2. JavaScript对css样式表操作
  3. (Spring)概述及IOC
  4. 理解注意力机制的好文二
  5. NumPy学习笔记 一
  6. 基于ARM A53开发板,使用按键中断及中断底半部实现《led灯状态取反》的驱动
  7. (数论)51NOD 1136 欧拉函数
  8. 新鲜出炉的自主协同操作系统研讨会纪要
  9. 苹果投影仪_无线投屏才是真正的王道,明基智能商务投影仪E580
  10. pygame安装教程(window)
  11. 史上最大,人工智能算法模型GPT-3问世,这意味着什么?
  12. JN5169 ZigBee 3.0 协议栈之 ZigBee 网络参数
  13. linux 薄膜键盘驱动,一份*级薄膜键盘的简历— HHKB 静电容 键盘
  14. 大话设计模式(Java代码)
  15. ocr识别图片文字 纯前端
  16. css的3种布局方式
  17. 数据分析方法-描述性统计分析
  18. [Summary]召集会议
  19. 基于ssm的校园二手物品交易平台(idea+spring+springmvc+mybatis+jsp)
  20. se(3)-TrackNet: Data-driven 6D Pose Tracking by Calibrating Image Residuals in Synthetic Domains

热门文章

  1. 拖动窗体FormBorderStyle属性为None的窗体移动
  2. 做Web应用程序时应该如何面向对象杂谈
  3. _blank开新窗口不符合标准?
  4. 项目经理应如何调动员工的积极性
  5. rpmbuild - 构建 RPM 打包
  6. iOS-关于一些手势冲突问题(scrollView 嵌套 tableView)
  7. 关于JS中apply和call详细解答
  8. 04 Mysql之单表查询
  9. leetcode 148. Sort List
  10. [课程相关]homework-03