From 6261ddea0b19dbf7e4e4a0486c935f700474183e Mon Sep 17 00:00:00 2001 From: sheerfish999 Date: Thu, 17 May 2018 09:39:32 +0800 Subject: [PATCH] new file: README.md new file: doxmind.py new file: doxml.py new file: example.png new file: test.xmind new file: test/test1.xml new file: test/test2.xml new file: xmind2case.py --- README.md | 86 +++++++ doxmind.py | 177 +++++++++++++++ doxml.py | 149 +++++++++++++ example.png | Bin 0 -> 2122678 bytes test.xmind | Bin 0 -> 460760 bytes test/test1.xml | 6 + test/test2.xml | 30 +++ xmind2case.py | 592 +++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 1040 insertions(+) create mode 100644 README.md create mode 100644 doxmind.py create mode 100644 doxml.py create mode 100644 example.png create mode 100644 test.xmind create mode 100644 test/test1.xml create mode 100644 test/test2.xml create mode 100644 xmind2case.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..116d74b --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +# workflow2case +通过绘制的xmind流程可视化文件,可直接分析生成所有遍历路径,以及python逻辑脚本,适合与各类自动化测试框架进行结合,在基础功能团操作封装完毕后,完成测试路径的覆盖遍历。 + +## 安装 + +python环境 3.x\
+'''bash +pip install HTMLParser +pip install lxml + +''' + +## 样例 + +流程图效果\
+![](https://github.com/sheerfish999/workflow2case/example.png) + +### 调用方法(参考xmind2case.py) + +'''python + +xmindfile="test.xmind" +endtitle="Stop" + +lastpath=xmind2path(xmindfile, endtitle) + +''' + +### 生成的逻辑脚本 + +case 目录下 case_code.py:\
+ +'''python + +Receive_Data() + +Verify_Data() + +a=test() + +if a=="Y": + b=Transform(a) + + if b>1: + Load() + + c=select1() + + if c==5: + e=select2(c) + + if e>=5: + d=select4(c) + + if d<=8: + runit() + + if c==2: + d=select3(c) + + if d>8: + runit() + + if d<=8: + runit() + +if a=="N": + Report_Errors() + + +''' + +### 生成的遍历路径 + +生成的 case 目录下各个 casen_path.py + +## 基本绘图要求 + +1) 使用xmind中workflow类型,只能有一个起始入口和结束点\
+2) 函数使用钻石型,返回判断条件使圆形,过程使用圆角矩形 + +### 未来计划支持 + +1) 处理回环\
+2) 支持 else 逻辑条件 + diff --git a/doxmind.py b/doxmind.py new file mode 100644 index 0000000..c80bccc --- /dev/null +++ b/doxmind.py @@ -0,0 +1,177 @@ +# -*- coding: utf-8 -*- + +########### 本脚本用于解析 xmind, 并处理 xmind 导出的 xml 及其生成的 tree + +import re +from xml.etree import ElementTree as ET +from xml.etree.ElementTree import Element +from zipfile import ZipFile + + +content_xml = "content.xml" # 主要数据 +comments_xml = "comments.xml" +styles_xml="styles.xml" # 样式 + + +################################# xmind 提取 xml + +def read_xmind(filename): + + cache = {} + + with ZipFile(filename) as xmind: + for f in xmind.namelist(): + #print(f) # 所有的数据 + for key in [content_xml, comments_xml, styles_xml]: + if f == key: + cache[key] = xmind.open(f).read().decode('utf-8') + + xml=cache[content_xml] + stylexml=cache[styles_xml] + + + ## 生成供调试 + f=open(content_xml,"w") + f.writelines(xml) + f.close() + + f=open(styles_xml,"w") + f.writelines(stylexml) + f.close() + + + return xml,stylexml + + + +################################# xmind 的xml 转 list (非标准xml 先转 tree , 按tree处理) + +def xml2list(xml,stylexml): + + lists=[] + + xml_content=xmind_content_to_etree(xml) + + ## 起始节点 + start_node=xml_content.find('sheet').find('topic') + + ids,title,styleids=get_ele_attr(start_node) + next_id=get_id_nextele(xml,ids) + + lists.append([title,ids,next_id]) + + + ## 下级各个节点, 最后结构类似: [' Valid ', '76q1ecqiei4u494hnsu4a9cl0i', ['6690se63nn0agpf9u043icvmc4', '1je2u1g9ghg60eu0g41668akej'], type] + + children_nodes=xml_content.find('sheet').find('topic').find('children').find('topics') + + for children_node in children_nodes: + + ids,title,styleids=get_ele_attr(children_node) + next_id=get_id_nextele(xml,ids) + + types=styleid2type(styleids,stylexml) # 类型 + + lists.append([title,ids,next_id,types]) + + + lists[0].append("start") ### 起始节点类型 + + return lists + + + +# 转 etree +def xmind_content_to_etree(content): + + xml_content = re.sub(r'\sxmlns="[^"]+"', '', content, count=1) + + return ET.fromstring(xml_content.encode('utf-8')) + + +#### 获取节点的 id 和 title + +def get_ele_attr(ele): + + title=ele.find('title').text.strip() + ids=ele.attrib['id'] + + try: + styleids=ele.attrib['style-id'] + except: + #print(u"style-id取值错误,id:",ids) + styleids=-1 # 默认的圆角矩形 没有这个key "org.xmind.topicShape.roundedRect" + + return ids,title,styleids + +##### 获取节点的 指向的下一个元素的 id + +def get_id_nextele(xml,first_id): + + xml_content=xmind_content_to_etree(xml) + + relationships=xml_content.find('sheet').find('relationships') + + ## 遍历所有的 relationship + + next_id=[] + for relationship in relationships: + + the_id=relationship.attrib['end1'] + + if the_id==first_id: + next_id.append(relationship.attrib['end2']) # 可能有多个下一个 + + if next_id==[]: + next_id=[""] ## 为空则置一个空 + + return next_id + + + +##### 根据 style id ,取得 style 样式,并进行转化 (非标准xml 先转 tree , 按tree处理) + +def styleid2type(styleid,stylexml): + + ### 查找 shape-class + + shape_class="" + types="" + + if styleid==-1: # 默认的圆角矩形 没有这个key + shape_class="org.xmind.topicShape.roundedRect" + + ######################## + + stylexml_content=xmind_content_to_etree(stylexml) + + style_nodes=stylexml_content.find('styles').findall('style') + + for style_node in style_nodes: + + ids=style_node.attrib['id'] + + if ids==styleid: ## 如果相同则查找对应的 shape-class + + try: + shape_class=style_node.getchildren()[0].attrib['shape-class'] # 相当于 style_node.find['relationship-properties'][0].attrib['shape-class'],但这个方法报错 + #print(shape_class) + except: + shape_class="org.xmind.topicShape.roundedRect" + #print(u"shape-class取值错误,styleid:",styleid) + + ### 转化 + + if shape_class=="org.xmind.topicShape.roundedRect": + types="sub" + + if shape_class=="org.xmind.topicShape.circle": + types="select" + + if shape_class=="org.xmind.topicShape.diamond": + types="func" + + + + return types + diff --git a/doxml.py b/doxml.py new file mode 100644 index 0000000..fa5d4b6 --- /dev/null +++ b/doxml.py @@ -0,0 +1,149 @@ +# -*- coding: utf-8 -*- + +########### 本脚本用于解析标准 xml + +from lxml import etree # pip install lxml + +class XmlDocment(): + + xmldoc="" + + ### xmldoc tree 对象 + def __init__(self,filename): + + self.xmldoc = etree.parse(filename) + + + ### xpath特征对象的 list 注意是符合该 xpath 特征的所有对象 例如第一个对象为 lists[0] + def ele_list(self,xpath): + + lists=[] + + for eles in self.xmldoc.xpath(xpath): + + lists.append(eles) + + return lists + + + ### 对象的 子对象的list + + def getchildren_list_byele(self,eles): + + eles_childrens=[] + + for eles_children in eles.getchildren(): + + eles_childrens.append(eles_children) + + return eles_childrens + + + ### 注意是符合该 xpath 特征的所有对象的子对象 例如第一个对象的第一个子对象为 lists[0][0] + + def getchildren_list(self,xpath): + + lists=[] + + for eles in self.xmldoc.xpath(xpath): + + eles_childrens=self.getchildren_list_byele(eles) + + lists.append(eles_childrens) + + return lists + + + ### 获得对象的某个属性 + def get_attr(self,ele,attr=""): + + ret="" + if attr=="": + ret=htmldecode(ele.text) + else: + ret=ele.attrib.get(attr) + + return ret + + ### 设置对象的某个属性 + def set_attr(self,ele,value,attr=""): + + if attr=="": + ele.text=value + else: + ele.set(attr, value) + + + ### 插入子节点 + def insert_node(self,father_ele,child_node_name): + + child_node = etree.SubElement(father_ele, child_node_name) + + return child_node + + + + #### 完整的 xml 信息 供输出和调试 + def gettext(self): + + ret=etree.tostring(self.xmldoc, pretty_print=True) + + return ret + + + +## 字符转换 + +def htmldecode(strs): + + + strs=strs.replace("&","&") + strs=strs.replace("<","<") + strs=strs.replace(">",">") + strs=strs.replace(" "," ") + + + return strs + + + +########################################### + + +if __name__ == '__main__': + + + filename="./test/test1.xml" + xmldoc=XmlDocment(filename) + + ### 返回成员 + xpath="//*[@lang='en']" + ele_lists=xmldoc.ele_list(xpath) #一维list + print(len(ele_lists)) + + xpath='//book' + ele_lists=xmldoc.ele_list(xpath) #一维list + print(ele_lists) + + ele_lists=xmldoc.getchildren_list(xpath) # 二维list + print(ele_lists) + + ### 成员属性 + + ele=ele_lists[0][0] + ret=xmldoc.get_attr(ele) + print(ret) + + ret=xmldoc.get_attr(ele,"lang") + print(ret) + + + ### 添加节点 + child_node=xmldoc.insert_node(ele,"test1") + xmldoc.set_attr(child_node,"11111111") + xmldoc.set_attr(child_node,"22222222",attr="attr") + + ### 当前 xml + ret=xmldoc.gettext() + print(ret) + diff --git a/example.png b/example.png new file mode 100644 index 0000000000000000000000000000000000000000..413aa2df2ecb6ee24179e62728a4aa448a5fb297 GIT binary patch literal 2122678 zcmeFaYtU6inl9*!^W#Jqappw$rz8B+G4-b-{Byz+GjYPGn&|fQ>0z8WRVVDByNl|s zwydsG)pnO{SZ#UhZY8uVtnq?SC@NSWmLOh0Q9%Je6j~5LsRFqP@+mj{Kv3i=R_}Q} zUP$v>x1DS4wetGx_{7|~a%H~xyl<}kJ}WcdyzIZd^!?vIZ}jtj;J-h>f0zF+=bd-Q z|9swg|I>NDH=2FkZMeSb-=BBpzcU&5r^gQwAOb{y2oM1xKm>>Y5g-CYAPNM?Z=z5m zJ3$1901+SpM1Tko0U|&IhyV~Ezo8ir0U|&IhyW2F0z`la5CI|(3j*Xfv1pS0AOb{y z2oM1xKm>>Y5g-CYfc%CwKm>>Y5g-CYfCvx)B0vO)Kr9H5-^8Lx_Jarz0U|&IhyW2F z0z`la5CQTV+CWMOe6V+D<=R_Uthw=t=l&3XcR%#+COvT8gL8f#>1P-JcU*ewH}@Sp zv?V1-*jFMz1c(3;AOb{y2tKxIQ`{`&F{^9@zpCQ&-@QyGbVqJ%>9Gq ztFGPq(dvTgm_-DL01+SpM1Tko0V3cr0^~OyD~F;Dh``B{he1>Y5jcYY`3(&rE(EY3O|cVw4n}1Tk^pVuL{41x!rl-8 zB0vO)01+Spu^~Wy6PrfU?GM(ZAq?7C`l8Ld3_@rM?_ItA=jo!%o)ZBgKm>?@YXm;s zx@zys({|3e{@r`WJN(-^?aJY&ZX0=H{>e}FxQ2x76M-=Zkl&1fgI_{L;L{_!uuDeh zNbA!!d6t7{Y@s4WxrqP~AOb`nSOiWVJ^aD5KXb@w3Y*?MWy0Z2L&1Vd!6QU~{3b%B zCf6m*+#sTJo`rOpgF|$Z1DYKs0z`la5CL}x{M+d-oX^=5@*Bw{#c^jEY&nYn`ArrP zeh&`;9L?D&mC06qZt)xU;)G`_l$Zz*0U{7A0$2%FK`)$N!Ys}gpN#~IE(MPY0rH!u z)R|&uFpnbq!@{z(4AH^KIv*c+Cq>ZNXCgoZhyW3=jsW(%I43dH0vuS&vlOhG1sg0v zfc&Ni73PJ4z|IdAXE=wYuhY&GI)zO?r@uTA3S5+v2oM1xKm@`?pqg9waP`CIe-SRc zlsqN`$ZulOW@3E-vA~%$qlD(%f-y_vX6)HH45yZu-LbnwfCvx)HwgH^V5()5&?Dpa@iR3m>kM-vnw} z@rg}-6Q54g=#e_j(;>Ohn_jv0)--@;FNpvVAOb|d4FWzem}(iwZ`@c0Tg@Rrev^ZQ z8U7=%_oLN1x9}m214jMFjS><8B0vO)K)480a|>MU?RXHq+p%`PUQ#kMy?%G``g~!P zb877kD8GA05B2OowTBj|+i{~_c_vMMqkv+Zt-X9jS#?ON!OgF_x?XZv=`p* znK$(5kzI{?!<&cz5g-CYfC%(QAVVhdUll=7mxQStI0UA012PrYG3Pg#8dS}N3G$o% zT4V_;2$0`cftii8i@@2i&|~8?n-dX}k`4F`;<=S|bHT>d)8ANJc9r==fCvx)B0vQC zB2Y*v^vpcJ$>i(?#p$g_Lv{I$%;o596{g8=`YMqH>>xmXV+Uup(jEc`#%w}R1}syL z-<&ysXZ{Q0^1a-&|AQYsHSOzDZ}|J?9?4&24iO*%M1Tko0Yd}|DTSVyVKcZSIciav zT5LvsV~9D61&RRqO`wWPSnLn>4)x_O!cG)O`Z6&!UyRoKi6xY`?1BnI^ex!Dd{^T0oDUxuqaxhni7pI_YcwDXXUgFZzG zr@lNrXWh`ahi}t=$H;GzvCt+RrK4Kr7f0!+>Q4ryiGU#j=KMzOwlSH%(HEX6dZfn} z(9?yaO3&o_v?f0Qyr%;M$Zt9Tl~s0%!0PosFD4mhw&Um=MT$v|FqI6yk*|$DF-?^#GZFG|F&+Al3 zk|Cg9sqEa88*_*N5padT_vYU3$>Rd7!pYMz-zc8vI+G|&3qiq;nqn<|*QcSdtX?}X z2U~OYpTgHUi*!z-rwbd^Gs$l{^?z8oIRfN2=2)?$9|+Vv*;A;AOy?BxoBVW68NX3W z+6r0DKTW&v$4^f#a|gabubBuWkHB{xzne~L#&3P{ot5_Ae3Z55$1|Q%lp>%riNdtv zH<>Cb_TLni6i#zsM^BFoEhSY|g#wV@WbouyR|t^bxI&)oHbvmMSN>v@UYyy|U&u2g zQ>{!xJ3?-dU&wDzpq2TXs~`AJe?0x4zT!9MW^N=WVt(^S5B<}BnR%NJe}6Lj_RHtq z<-_0qGw&ByJU7Md--0b`#f`;+$)=-?_Ynai;1L3al%nfQ&fj=s0Tjg;0rDGTs94Yw z1YUmaM-{Y2kr=bJ7yo?mgP2J8isGDEmGuA4z5D5%>-k3nx<+97yRQl3A-}QvWMXSXpmPKYDMc5V zI=`t^Klx4PM!*Kl5Fo!X!-=K*LEyJrepSIR@*x9+z7+1isi>#fB|&NXryu{z+UKr# ze(HajajRlEjGyL@3B@f5Xbt&I+$v`8l0~2v)o@an{3coB^sVFMH@<0v^7KRCtMhNp zL}ktsk$gY_R4KDB`Soe}+neN^*$k99|K^STJO1{y$G`Q=egEf!qbDDb-}F-~ueXB$ z`As`GvKAuX9|BG&ORYx9Z~U{GL?t4>NmTIxcl+R>Eqy77P#o1slci;S>#Qgs=X*Z( z%zsubO5%&(eL45NwSTp2CU(4E_3Q(gtNcm?xpg{019?3b7nHe&n9tEXA&f!mG?A0_`F|e$y_Vtc?ixgMbst zQmaw&8-J`NaY@K;5;uS_yWcm2nth6c7WaO%x&qF_r;b-#6V&3S;8}loBz>7q{5(4BmmVjn6Z6a{`%M+7l{s%A&Ss0d~8cx1qN~z5r zvMwUf6an&^rpWO=BH%j$`<6XyPBrY8+&pE%$xrt94kG1C0|D}zH1r%_FJFB1N+&#~ ztWiuU#RoEb6e0rTHz8_`G7|w41pe*x7ueuppST#dcwp@UlU}e45wL&&`HcmT*+d5j z96h%G?uY&z*oF^NIL|Kr?;UiJRT6fh}L_O{iX|2Fe>RqbUD+;Zo#`ET#p z*;eJOhX{0p0QpTvz_MB^2)y;1`_3|t2hXdZAe~$~(<0W$VWpgvzOoS_V1xkqjS);N zLT(*Dk9J#0^~O>g2}2} zATa-hah=c?v&hq%-<#{A(`=Inlp;WWQwj|)5P?__n6qw3Q4J)%G4%%h>yMv(sKt&> zS-D87{6;N3+9;-TT5O9|5rMW4Airq~N!H^C0jyGcWbPk0p*Snn+~}y&Y?cU=B0zpq z3Jot1frt=zY4f_m$s2GEFp?HKx?tn#45v|FfB4k2PmUdFu`O0b1lmG?{H84=S&use zK0UI_{&6^rndVO6Y`F>n@|!Ajc#Q}|gut5Nt>YfP?JV1v^3@a$cI33!%T4<~P=rQL zVABtl$+g%Jt0Dp|B0zrABABeo9RfIhM#4pRJCSp4m(Q=}|3{oL>aM$NnFy33Kz>sS z4KEOZ=n!~l^%9+PNP76tNQ)i){N(X`6ZfuI*kTi`iU_oh0QpVpkg`HY2p~xFgL8hr zD}FQWtM~<&xgoi6q+~YR9|7{4{ur?Y5r_f-%-;y}_@f7IRulv?I<0r^n=|iF^?&1+ zqg!y$3WE!@jx#H45drd>7Qtjyt`R^ev&WwK&s|ZRGZ6>4=f<^?*?u1c$Zz@p#LGk= z3IwohO!nV^eC#~14_je`g0vf4K%n}`^N&j9-+BD*#aq@(yWg98Ki8*4VM=j!g8U{< zy{6kM%&ffl>XofgoO27(P$Aa8Fh80fF$#25Z6(uDC4H3ZHiR`?=zjD+KsK!k% zJ_Z&t{f)&9D=ok6?x6*!8TDhW8cIF+&Pt&>$SJ>xSBQX11juh(qR+OwLIB%wo_OvL z2VpsPjg1ezeATr)=cX%dvEEh@Airr9PF6+)yh8va1IN#RVPGBwOVo7vKtx{Oxk=Ay zB@IH8p-sYgAOlXpX{8BPLIm1Hfc&OiJXxDh2!Q1v5I~mYXj3v@T{^eDCPQmb0JA}e z&*oFNC<_s&LV*0H3LRb}0)Zodc^WJXlj#$Lh|c$>i#22UI+3GR#C5@_^8I2C5vYX# z`AsdjSU5lgz;a%G?MD@%2X303<3JCb2V%5({m;p40#tbFB9q^wZUO9n)Cj1pFwQ4V zaPp0sMrt==Tht0<=PV&Weq#w}Hsc-v1Xx?S_ExN0(_;|)^zln4yz;>95C5+?K?j!* z8}02)4{|A*du>sIrU;PVG)0d05dq&3P^-d_@Ih8={gGG$AUd)&#|Nn>0}%iMdbF1edK3vzmzZx?0QrPkl#e5PIiU}oI?N;HnJ=YQ#j}H-2WeEiHcN+ z+m>I(=3YKZkSYS?H>ql#{RRRreXtSaM*cP&+)Ye~Km-Vo-$bB9c7X_F5WrR&p%K{i z;v0=X=mC*!%F0C-3u{Zi9f6~}|gQGt&ivu2pgGc=ljFKda0QpU_s!zM)n7sM! z@<%~yCdm4b3FS9n!5~UBa+WqHKAln*rDPo1xh%2Z0rHz5)kdLPLty&5uYuoy)3jD2D#2qlai^YgQiwKb4vo0nzs2eurMAkcY$6Ex*Z@g6v z1+#(x`HdBr*@!&^$Zzan&6bG3zz85h8n&khxk2Q#f$Q_J0xZ3YX`@&A$ZzVP#j*h)Kz>leYdN>^=ESgi2+XB0@lS@V6h>8&S_pyMmb;p?8?ON@QW4 zDKsqC9s=Yy?P1B9LPTK0!QB#H;P9#AA<9pgi9iMc@|z4G{7MA;K|ntY220fZ5zMkA z*ncC-^ROewa?@-s5d_F@5>Yg}S%QFa21kw`DJjBiA`lV+%A}D9Np8wY1Y$=(-+l7Z z=5?`mw@?4>9$Fw22SMce6y;?iP#*#EoBEjXj+hWo&LH_sOlnQJFUq9JZ&Ee`_T57S z)H$AW)(v?mo@J51_HY)CP#m0&W4U!U7d-;xH_@w@9jrt^IfLXkl{oQYFbF7-QK96pImri+C_@|wkl)0iNA{vA0>eiRN_+t% zn%2Slh=4~3kl%Qu42nVodOd8lkyTh&j>T|cd5c)KeS_eW&N-)f5SY_C0^~QXL&^$+ zLIBe?!f*JpJ1D(T*ir<@Z%U!z1tMS_0R&0o{6t^W5n@0n4j1qB#fk+C5g@-Y1d7EX zMS%P!QpKj*E%KXmbq zw7N)sla{{OTVD~tIiBB~c?UPo8|nv}Z*bhFz=Z=q4ew$xB2b0^`Ar!z%ufRW@|!gD zoKP>xZxT{AyXq?f%3FuSp7J@Kwe&N5Xhf#Fzze|+Yu(GjL?D9z`Ar58eoYJk@|(mI z9)EYqZ{pW6d+0X;2qJ*3^0J|XtF3D33S3Zd``+C98H=G7bS#`ffcz!{2*0L>fW#MA zv3FZ~U1yIYM1cGzLZz}xK_PI{i;szuj8|NyZ04XCdW#uAq&+l9|KV=*S>HDoqo)8S@tQ#7n9^RWW0^~O- zYoC2Tg8=yr4Iw53$ZulOCi@Z=0&4C7(ZIO8s9nK08iu3x;O^xf}jVU8Qev`8H z+4nODkl)Y{VnTrYCMIpNF99K-&Z)%S5yTe=NOBKFRng}VaR6}#Jd}_kd5!@2jpquY zc-snRu z8jxtca#k2I0^~OlE0907Gq3ztrHZ3)=bB(Vm*Ir9#N zZ|EBBIO-?Ai9?U<#Q+HWh5HLcVClV>!rgJXQ`xvxC6x>s|oAnf~r;cA8@=M4(dy$ZtA@mz5I% zAfU(fqOWbuBxb(3l$_EU+Mzc@eiOO|DgVF-klzdpAuI3*0rDGeCP4I zc`l1(4d3+QW8Cm$8S_A!Bfkk$aTL2f1jujN!;&?*M}Yjsy$&crya?!rP9idNydCwl zXP7Nh0qfQbZ}n74isb95n(6+ohrubLPOU zs&S60gj3@ZLAQ$VxpndzpS45TtROID|8SvaDaW!pFSBN!#|0Ri$GAGAOjoFYJe;}m{2-ZBE@H!TCo>e5C)owD#~fanjPJAMjDsq7;_eq$eVw&)oGk8N9x{WmwRdDb(zC=L;5f&lqV6V!MQ z5y&BcAZf~R<~g1@cs$C$;xy7wkM!Y(DC9SO=z&r=MBwS2>%niXSvAk03~ZVRw1oiq zO{%L&f+1s~C3(9qqfUl&^aP$ZxvGm@RmY0QrsQ3Zi(m5Fo#) z1s4kwfeZpziiT4oWio*0cxJ%y`KwYKSSbzw^;uNPW&r{68w((_3BM5_zwui?l&&5E zj__%?7;{L58^Vd$(gDamg-gO(MCf`IUwzkTiT zPz0u&M4$oz@|y~9c!>y9BY+^#GIN8l(A6b*)lUR4e;&(7(TIR40^~QQNUmG^m5anR#(|z=ukc$)2w?w>=#fVjg`~E& zWhK998&TF590KGw!KsV_S0F%sQvnVy5rHxU=ByhMrx@GR`QE<_rBL#3UGjuzlk;$) zsH}B4$!}VRlof`C0QpU58l${b2$0`Yp~GuLpa=nVfXesg-cNEZ`p&+0K`9|D< zP{gL3Z6QE@(-xAfCs+i?Z-P}F1usB={H6dDW)XoB1aQ2Kinv8DxCEq7vp4PkKrvTD zj}EmPl)DiE_dht4^N!vtynSoH)~dJ;>5FmNJ}QJ@)HCC_D+nliM#4&iY=j5|i2z>cW4Dbszuck`qzcW1R$=jwsJLUphTe78 z^)9}+cmDZ({!j)bQJx>45g@B)_qOHyh~|0cFqRH{Alw+CxSFuksNm zO~?(x35VPj%HAIVOx}pDF`bhsy=zzR>Z^MfUDSuu6p|j?g?mv0KOQ1Le&eB1D3Vq=f(x238=dZ;2GoPv`0)w>@*A(zL1A1Vp!`Ad8yE1i&6W{R_Dp`$GP11BDFS#) zK6!HQl1r+*QCvltzVFk)Y26<+oY`bp4(dF7*j|s= zQZ)kPH`Vy?Y61vs|MX*tFR=G0A5979JN7P;-^8xrPiUXtJVtshEf0Ri$G3m~%zYY33vSc94kb%y|gQ&lfTGx0Q~%w?CI zeWk9ShJwh@-3iZ{{X_uk$IQ)Uz>-)e$&XtE$Zy=@&(=Lafc(Y-B~XOc5Fo#44N6wz z2m!qQZuccSYC{ZyxA*MCQJ(n2nVyb%#%7%%fDix!QkJ^6gHG||5CQTVhv2hmKM)|l z@k0-kq8$XtZ`#3;wKzfmFTU$Kk|yP`nH)QEu*n=O$5GGNtTP0#h0DZ9S}%hImi)Lv zfc(Z4@@&@|1jui^Q3VBQ0Ri%x7C>Ybju7a21<|BQjylF>-64SKz}AV2VTEATYu32y zdD<_yQ~TZX+N>Aan%CZ$j5#vhw3)x1rlONHOmHPRhWrk*nRcj&*Gh zt@jOBo|Hzcb(Z|b8q{paV+6==JXQ`xtA_yjO+CC=+7ATahqikjNtquCf0Ge>{m{7$ zDcXusQD#mi`Bz+Fqo-^mg8=zW1`vKt5&`m?B-I{gr^#>P)N9ne!rAYG#DO;PG4(Qt z8-3zL)PS;cXAnSia9!^X)0{Q5Z<6FU_AzIR{vkkq*%b57DC+6_9cf z0aFCXZ%mP5IS&xPR{t`8u9`DSUW$~5Fo#?1~nV<7yLEaWQx7kec836V_~(5kpb#z4{T^xsv>4i`Q4wO&TG=t}FkddY8ckT4@b z1b*_yQ`mnq_r0|V_MKgh3<2_+$P^lJcV^9U%x~b0;)oP}B0~Vn4*T*9R|ObF&6=^1 z-&lj14S9^f?dx6uznT8-YaYu;(TIQ%0^~PFFtLya2=qPnX2!Uzl-CbcxvoRkk10RY zt12uWF1JLCfh>wI&}lV&scTndwKcFe9=v4D#K>=~LCuCdMu7arW93k^dI*r;)WeIV z-61exLX{tS{rRJk4TGbM8!grw8vP1>BTl8tSH7n>ttcfqQf$U>RTC(A_0^-*@)HvR z)e*`EDuZa+ik%qepfUz^z*qmo;*H1Zp3P_rSA5g@KM#&7*lx*7yWd-t`H!<=?Yoa+cpB#L45UfM7l4jd{33BuT|3-k1AP_;HmO$Yt?;yjqPf9##!O} z(qd&%v^V$qE|GxzrUV#fCxyV2jjtlUz@)bqC)I0qHcAA@Z=zIdl%1-6&kh$d|LR

+j`NNj<^%Y3}sjRm<(# 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 zfy753 + Everyday Italian + Giada De Laurentiis + 2005 + 30.00 + diff --git a/test/test2.xml b/test/test2.xml new file mode 100644 index 0000000..b06b06e --- /dev/null +++ b/test/test2.xml @@ -0,0 +1,30 @@ + + + + 这个 + b2ebd12a-136b-43wb-s3a1-d9114c481ac2 + 000823 + 20160405 + 20160405 + 151440 + 0000 + 1.0 + + 410221199005169930 + I + 那个 + 6225182222222222 + DEBIT + 0015 + 1872135xxxxx + 24 + 上海市 + 240001 + 上海市 + 666666 + 187213xxxxx + + diff --git a/xmind2case.py b/xmind2case.py new file mode 100644 index 0000000..d8b6106 --- /dev/null +++ b/xmind2case.py @@ -0,0 +1,592 @@ +# -*- coding: utf-8 -*- + + +import os +import shutil + +import sys +if sys.version_info.major==2: #python2 + import HTMLParser #pip install HTMLParser + import urllib2 + +if sys.version_info.major==3: #python3 + from html import parser as HTMLParser + from urllib import request as urllib2 + +from doxml import * +from doxmind import * + + +##### 由处理后的 list 中 id 转 title、 type + +def id2title(id,lists): + + for x in range(len(lists)): + if id==lists[x][1]: + title=lists[x][0].strip() + types=lists[x][3] + break + + return title,types + + +################################# list 生成带有结构的 xml + +def list2xml(lists,endtitle): + + ## 创建起始节点 + filename="null.xml" + + xmldoc=XmlDocment(filename) + + start_node_id=lists[0][1] + start_node_value=lists[0][0] + + f=open(filename,"w") + #f.write(r"") + f.write(r"") + f.close() + #xpath='//start' + xpath='//node_' + start_node_id + + ele_lists=xmldoc.ele_list(xpath) + start_node=ele_lists[0] + + xmldoc.set_attr(start_node,start_node_id,attr="id") + xmldoc.set_attr(start_node,start_node_value) + xmldoc.set_attr(start_node,"start",attr="type") + + + ## 按list成员遍历 + + hasadd=True ## 本次是否成员添加 + + while True: + + if hasadd==False: ## 已经没有成员再次被添加 + break + else: + hasadd=False + + + for i in range(len(lists)): + + list_id=lists[i][1] + xpath="//*[@id='" + list_id + "']" + + ## xml树中有该 id 特征的所有节点 + ele_lists=xmldoc.ele_list(xpath) + #print(xpath) + #print(len(ele_lists)) + for node in ele_lists: ## 逐个查现有的子节点是否完整 + + xml_id=xmldoc.get_attr(node,"id") + + ## 找到对应的节点 + if xml_id==list_id: + + ## list中该特征的子节点与xml mode列举子节点进行比较,不存在则添加,并进行标记,直到完全没有需要标记的节点则退出 + + for ii in range(len(lists[i][2])): + + if lists[i][2][ii]=="": + continue + + childid_fromlist=lists[i][2][ii] ## list中的子节点 + childtitle_fromlist,childtype_fromlist=id2title(childid_fromlist,lists) ## list中的子节点标题 + + childnode_list=xmldoc.getchildren_list_byele(node) + + ## 结束标记 + if endtitle==childtitle_fromlist: + childtype_fromlist="end" + + hasnode=False + + for childnode_xml in childnode_list: ## xml中的子节点 + + childid_fromxml=xmldoc.get_attr(childnode_xml,"id") + + if childid_fromxml==childid_fromlist: + + hasnode=True + break + + ## 不存在则添加并标记 + + if hasnode==False: + + + #child_node=xmldoc.insert_node(node,"node") + child_node=xmldoc.insert_node(node,"node_" + childid_fromlist) # 名称规则首不能为数字 + xmldoc.set_attr(child_node,childid_fromlist,attr="id") + + xmldoc.set_attr(child_node,childtitle_fromlist) + xmldoc.set_attr(child_node,childtype_fromlist,attr="type") + + hasadd=True ## 本次有成员添加 + + + + xml_str=xmldoc.gettext().decode("utf-8") + + ## 输出进行调试 + + filename="fina.xml" + f=open(filename,"w") + f.write(xml_str) + f.close + + + return xml_str + + + +################################# xml 遍历所有 xpath , 返回 xpath list + +path_list=[] +tagstack = [] + +class ShowStructure(HTMLParser.HTMLParser): + + + def handle_endtag(self, tag): tagstack.pop() + + def handle_starttag(self, tag, attrs): + + tagstack.append(tag) + + this_path="/" + + for tags in tagstack: + + this_path=this_path+"/"+tags + + path_list.append(this_path) + + +def xpath_all_from_tree(xml_str): + + ShowStructure().feed(xml_str) + + +################################# xpath list 转换成 可用路径 + + +## 格式整理 +def xpathlist2_pathlist(xpathlist): + + for i in range(len(xpathlist)): + + path=xpathlist[i].replace("//","") + path=path.replace("node_","") + path=path.replace("/",",") + + xpathlist[i]=path + + + return xpathlist + + +## 路径 id_list id 转为 title 及类型的 list +def pathlist2_titlepathlist(pathlist,lists): + + for ii in range(len(pathlist)): + + path_list=pathlist[ii].split(",") + + for i in range(len(path_list)): + + title,types=id2title(path_list[i],lists) + + path_list[i]= ([title,types]) + + pathlist[ii]=path_list + + + return pathlist + + + +## 去掉最后一个元素不为出口的 所有节点路径, end_str 为最后字符串特征; 并进行其它必要处理 + +def only_start2end_path(titlelist,end_str): + + ## 只保留最后一个元素不为出口的 所有节点路径 + + lastlist=[] + + for i in range(len(titlelist)): + + if titlelist[i][len(titlelist[i])-1][0] == end_str: + + lastlist.append(titlelist[i]) + + + ## 去掉所有 list 中的头尾 + + lastlist_2=[] + + for i in range(len(lastlist)): + + templist=[] + + for ii in range(1,len(lastlist[i])-1): + + templist.append(lastlist[i][ii]) + + lastlist_2.append(templist) + + return lastlist_2 + +################################# 转换为 python 脚本 + + + #### 路径类脚本 + +def pathlist2_scipts(pathlist): + + casepath="case" + + if os.path.exists(casepath)==True: + + shutil.rmtree(casepath) + + os.mkdir(casepath) + + casetitle="case" + + ##### 生成 按照路径拆分逻辑脚本 ------ 这段暂时意义不大 + + """ + + for i in range(len(pathlist)): + + filepath=casepath+"/" + casetitle + str(i) + ".py" + + script="" + tab="" # 前置缩进记忆 + + for ii in range(len(pathlist[i])): + + cmd_name=pathlist[i][ii][0] + cmd_type=pathlist[i][ii][1] + + ## 过程 + if cmd_type=="sub": + if cmd_name[-1:]!=")": + cmd_name=cmd_name+"()" + script=script+ tab +cmd_name + "\n" + + + ## 函数 + if cmd_type=="func": + if cmd_name[-1:]!=")": + cmd_name=cmd_name+"()" + script=script+ tab + cmd_name + "\n" + + ## 判断 + if cmd_type=="select": + + if cmd_name=="else": + cmd_name="else:" + else: + ## = 换 == + if cmd_name.find("=")>=0 and cmd_name.find(">")<0 and cmd_name.find("<")<0 and cmd_name.find("==")<0: + cmd_name=cmd_name.replace("=","==") + + cmd_name="if " + cmd_name +":" + + + script=script+ "\n" + tab + cmd_name + "\n" + tab=tab+"\t" # 增加一次缩进 + + + f=open(filepath,"w") + f.writelines(script) + f.close() + + """ + + + ###### 生成 完全遍历的脚本 + + + for i in range(len(pathlist)): + + filepath=casepath+"/" + casetitle + str(i) + "_path.py" + + script="" + + for ii in range(len(pathlist[i])): + + cmd_name=pathlist[i][ii][0] + cmd_type=pathlist[i][ii][1] + + ## 过程 + if cmd_type=="sub": + if cmd_name[-1:]!=")": + cmd_name=cmd_name+"()" + script=script +cmd_name + "\n" + + + ## 函数 + if cmd_type=="func": + if cmd_name[-1:]!=")": + cmd_name=cmd_name+"()" + script=script + cmd_name + "\n" + + ## 判断 + if cmd_type=="select": + pass + + + f=open(filepath,"w") + f.writelines(script) + f.close() + + + +##### 全逻辑脚本, 利用 xml 文件结构和特征 + +def xml2_script(): + + casepath="case" + + if os.path.exists(casepath)==False: + + os.mkdir(casepath) + + xmlfile="fina.xml" + filepath="case/case_code.py" + + ################# + + f=open(xmlfile,"r") + xml=f.read() + f.close() + + ## 分割成行 + xml=xml.replace("","\">\n") + + + ########### 根据逻辑生成 tab 缩进 + + + lastsctipt=[] + cell=0 + + + ## 先生成xml结构层次标号 + xmllist=xml.split("\n") + for line in xmllist: + + if line!="": + + if line.find("=0 or line.find("=0: + + if line.find("=0: + cell=cell+1 + elif line.find("=0: + cell=cell-1 + + lastsctipt.append([line,cell]) + + else: + + lastsctipt.append([line]) + + """ + for lists in lastsctipt: + print(lists) + """ + + ## 预处理 + + for i in range(len(lastsctipt)): + + if len(lastsctipt[i])==2: + + ## 过程 + if lastsctipt[i][0].find("type=\"sub\"")>0: + if lastsctipt[i+1][0][-1:]!=")": + lastsctipt[i+1][0]=lastsctipt[i+1][0]+"()" + lastsctipt[i+1][0]=lastsctipt[i+1][0]+"\n" + + ## 函数 + if lastsctipt[i][0].find("type=\"func\"")>0: + if lastsctipt[i+1][0][-1:]!=")": + lastsctipt[i+1][0]=lastsctipt[i+1][0]+"()" + lastsctipt[i+1][0]=lastsctipt[i+1][0]+"\n" + + ## 判断 + if lastsctipt[i][0].find("type=\"select\"")>0: + lastsctipt[i+1][0]=htmldecode(lastsctipt[i+1][0]) # 逻辑中的各类字符 + + ## = 换 == + strs=lastsctipt[i+1][0] + if strs.find("=")>=0 and strs.find(">")<0 and strs.find("<")<0 and strs.find("==")<0: + lastsctipt[i+1][0]=strs.replace("=","==") + + + lastsctipt[i+1][0]="if " + lastsctipt[i+1][0] + ":" + + + + + ## 产生缩进 直到同级的结构层次标号 + + tab="" + + for i in range(len(lastsctipt)): + + if len(lastsctipt[i])==2: + + if lastsctipt[i][0].find("type=\"select\"")>0: + + cell=lastsctipt[i][1] ## 增加一个缩进 记录逻辑层次 + tab=tab+"\t" + + for ii in range(i+2,len(lastsctipt)): + + if len(lastsctipt[ii])==2: + if lastsctipt[ii][1]==cell: ##减少一个缩进 + tab=tab[:-1] + break + + lastsctipt[ii][0]=tab + lastsctipt[ii][0] + + + """ + for lists in lastsctipt: + print(lists) + """ + + + ## 去掉头尾 只能最后去掉 避免影响层次关系 + + xmllist=[] + + for i in range(len(lastsctipt)): + + if lastsctipt[i][0].find("type=\"start\"")>=0 or lastsctipt[i][0].find("type=\"end\"")>=0: + lastsctipt[i+1][0]="" ## python for 循环是迭代器,因此不能直接操作 不必删除 直接置空就行了 + continue + else: + xmllist.append(lastsctipt[i]) + + + + """ + for lists in xmllist: + print(lists) + """ + + + + ## 去掉 xml 节点 + + lastsctipt=[] + + for i in range(len(xmllist)): + + if len(xmllist[i])==2: + continue + else: + lastsctipt.append(xmllist[i]) + + + """ + for lists in lastsctipt: + print(lists) + """ + + + ################# + + lastsctipt_str="" + + + for line in lastsctipt: + if line[0]!="": + lastsctipt_str=lastsctipt_str+ line[0] +"\n" + + f=open(filepath,"w") + f.writelines(lastsctipt_str) + f.close() + + + + +########################################### 完整处理过程 + +# xpath 文件名,终点特征 + +def xmind2path(xmindfile, endtitle): + + # 解压出其中的 xml + xml,stylexml=read_xmind(xmindfile) + + # 根据 xmind 中的 xml 资源前后关系生成类似list结构: + # 下级各个节点, 最后结构类似: ['Valid', '76q1ecqiei4u494hnsu4a9cl0i', ['6690se63nn0agpf9u043icvmc4', '1je2u1g9ghg60eu0g41668akej'], type] + lists=xml2list(xml,stylexml) + """ + for ele in lists: + print(ele) + """ + + # 根据list 生成 xml 结构树 + xml_str=list2xml(lists,endtitle) + + # 根据xml结构树 生成所有 xpath 到 list + xpath_all_from_tree(xml_str) + #print(path_list) + + # 整理 xpath list 到 路径 list + pathlist=xpathlist2_pathlist(path_list) + #print(pathlist) + + titlelist=pathlist2_titlepathlist(pathlist,lists) + #print(titlelist) + + # 得到出口为终点的路径 并进行处理 + lastpath=only_start2end_path(titlelist,endtitle) + """ + for ele in lastpath: + print(ele) + """ + + # 将所有路径转换为 python 遍历脚本 + pathlist2_scipts(lastpath) + + # 根据xml得到逻辑伪代码 + xml2_script() + + + return lastpath + + + +########################################### + +# 用法: + +if __name__ == '__main__': + + + ## xmind 文件名 + xmindfile="test.xmind" + + ## 结束节点的文本标记 + endtitle="Stop" + + lastpath=xmind2path(xmindfile, endtitle) + + + + + + +