python--利用列表推导式快速生成xml格式数据
在接口自动化测试中,我们经常将要发送的数据放到excel里。
json数据放至excel方便,但最近的一个测试,数据是xml格式发送的
如下:
|
属性 |
必选/可选 |
描述 |
||||
|
1. |
Message |
Element |
M |
信息开始,XML根元素 |
||
|
2. |
Version |
Attribute |
M |
协议版本信息,取值为1.0 |
||
|
3. |
Header |
Element |
M |
消息头 |
||
|
5. |
MsgType |
Attribute |
M |
取值为包头的命令字值 |
||
|
MsgSeq |
Attribute |
M |
取值为包头的消息序列号 |
|||
例如:
<?xml version="1.0" encoding="UTF-8"?>
<Message Version="1.0">
<Header MsgType="0x4001" MsgSeq=""/>
....
</Message>
在实际测试中不可能将所有数据放至excel中,这样太麻烦,更改也痛苦,所以将数据设成如下:
| Name | Data | url | Method | MsgType | Response | token |
| 用户登陆-正确密码 | LogonId:15622222222 Password:k4y5eMcjTbNp/ncsaaD8OA== UserType:1 |
/spi/login | POST | LoginRequest |
<Result RetCode="200" RetDesc="操作成功"/> <LoginResponse> <SessionId>xxxx</SessionId> </LoginResponse> |
否 |
| 用户登陆-错误密码 | LogonId:156222222 Password:111111 UserType:0 |
/spi/login | POST | LoginRequest |
<Result RetCode="200" RetDesc="操作成功"/> <LoginResponse> <SessionId>xxxx</SessionId> </LoginResponse> |
否 |
| 用户登陆-错误的用户类型 | LogonId:156222222 Password:111111 UserType:3 |
/spi/login | POST | LoginRequest |
<Result RetCode="200" RetDesc="操作成功"/> <LoginResponse> <SessionId>xxxx</SessionId> </LoginResponse> |
否 |
在python中使用列表推导式,一句话就生成相应的xml数据,简单实现,截取的部分代码如下:
读取excel这里不罗列
dd=testDate.strip().split()
aa=dict(tuple(item.split(':') for item in dd))
xmlheader='<?xml version="1.0" encoding="utf-8"?><Message Version="1.0"><Header MsgType="%s" MsgSeq="1"/><%s>' % (infoType,infoType)
xmlbody="".join([ '<%s>%s</%s>' % (i,v,i) for (i,v) in aa.items()]) #形成XML文件
xmltail='</%s></Message>' % infoType
xml=xmlheader+xmlbody+xmltail
小技巧,供有需要的人参考
python--利用列表推导式快速生成xml格式数据的更多相关文章
- Python基础-列表推导式
python中列表推导式有三种数据类型可用:列表,字典,集合 列表推导式书写形式: [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件] 1,列表推导式 ...
- python 3列表推导式的的一点理解!
python 3列表推导式的的一点理解! Python的列表推导式对于新手来说一般都难以理解,简单看个例子: [x * x for x in range(1,100)] 上面是一个很简单的列表推导式, ...
- python基础——列表推导式
python基础--列表推导式 1 列表推导式定义 列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形 2 列表推导式语法 基本格式如下: [expr for va ...
- Python之列表推导式
我们经常需要这样处理一个列表:把一个列表里面的每个元素, 经过相同的处理 ,生成另一个列表. 比如:一个列表1,里面都是数字,我们需要生成一个新的列表B,依次存放列表A中每个元素的平方 怎么办? 当然 ...
- Python的列表推导式,字典推导式,集合推导式使用方法
推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式.功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表格式:用中括号括起 ...
- Python的列表推导式
1.列表推导式书写形式: [表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件] 2.举例说明: #!/usr/bin/python # -*- codi ...
- Python基础-列表推导式、匿名函数、os/sys/time/datetime/pymysql/xlwt/hashlib模块
列表推导式 [表达式 for 变量 in range(n) if 条件] 等效于 for 变量 in in range(n): if 条件: 表达式 优点:书写方便,缺点:不易读 注意:用的是方括号 ...
- Python函数——列表推导式、生成器与迭代器
列表推导式 产生背景 现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现? 第一种方法: a = [1,3,4,6,7,7,8,9 ...
- python - list 列表推导式
一.如有两个list,分别为: a = [1,2,3,4,5,6]b = ["a","b","c","d"," ...
随机推荐
- 到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf
转载,原文: http://blog.lessfun.com/blog/2014/11/22/when-should-use-weakself-and-strongself-in-objc-block ...
- Java学习路线图(如何快速学Java)
不知不觉从初学Java到现在已经8年了,今天在这里给刚入门和入门不久的小伙伴们一些建议.可能总结的不是很详细,但给出了一个大概的学习路线.希望对大家有帮助哈~ 如何快速学Java 这里我以Java E ...
- windows下redis启动失败提示maxheap flag
windows下redis启动失败 D:\redis>redis-server.exe redis.conf [] Oct ::39.789 # The Windows version of R ...
- redis的其他命令
1.del del key-name 用于删除已存在的键.不存在的 key 会被忽略 返回值:被删除 key 的数量 2.DUMP DUMP key-name 用于序列化给定 key ,并返回被序列化 ...
- 怎么让BarTender对象等间距分布
在BarTender 2016设计条码标签时,我们需要让对象分布尽可能整齐美观,例如实现对象的对齐,对象等间距分布等.这些在作为世界上最好且最受信任的条码打印软件BarTender中,都是可以很轻松的 ...
- Java如何取得当前程序部署的服务器的IP
1.问题:之前使用InetAddress.getLocalHost().getHostAddress()时,在开发机测试可以得到192.168.0.18这样的IP.但部署到linux服务器以后, 这个 ...
- 排列2(全排列next_permutation 注意格式)
排列2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解
from:https://blog.csdn.net/li315171406/article/details/78450534 最近要做一个大数据dataTable循环操作,开始发现 运用foreac ...
- Layui:设置select下拉框自动选中某项
1.问题:layUI,在做编辑功能有下拉框数据时,需要初始化选中某个值,layUI官网没有相关api,可能我比较笨没找到 2.解决思路:出发点击事件 3.分析dom树结构,出发dl点击事件 方法: v ...
- SpringMVC由浅入深day02_4springmvc校验
4 springmvc校验 4.1 校验Validation理解 b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可 ...