|
2#
楼主 |
发表于 2017-6-29 15:46:25
|
只看该作者
代码太多了点,没写下。其实就是一个读excel,一个post,一个get的过程。
后面还有一个对json的解析过程。开始以为是一个字典就搞定了,后面发现有些{}里面嵌套了好几层。
最后用了个递归搞定。
- [code]
- #! /usr/bin/env python
- #coding=utf-8
- import urllib2
- import json
- class readjson():
- def read(self,obj,key):
- collect = list()
- for k in obj:
- v = obj[k]
- if isinstance(v,str) or isinstance(v,unicode):
- if key== ' ':
- collect.append({k:v})
- else:
- collect.append({str(key)+"."+k:v})
- elif isinstance(v,int):
- if key== ' ':
- collect.append({k:v})
- else:
- collect.append({str(key)+"."+k:v})
- elif isinstance(v,bool):
- if key== ' ':
- collect.append({k:v})
- else:
- collect.append({str(key)+"."+k:v})
- elif isinstance(v,dict):
- collect.extend(read(v,k))
- elif isinstance(v,list):
- collect.extend(readList(v,key))
- return collect
- def readList(self,obj,key):
- collect = list()
- for index,item in enumerate(obj):
- for k in item:
- v = item[k]
- if isinstance(v,str) or isinstance(v,unicode):
- collect.append({key+"["+str(index)+"]"+"."+k:v})
- elif isinstance(v,int):
- collect.append({key+"["+str(index)+"]"+"."+k:v})
- elif isinstance(v,bool):
- collect.append({key+"["+str(index)+"]"+"."+k:v})
- elif isinstance(v,dict):
- collect.extend(read(v,key+"["+str(index)+"]"))
- elif isinstance(v,list):
- collect.extend(readList(v,key+"["+str(index)+"]"))
- return collect
- #ojt=test_data1
- #print read(ojt,' ')
复制代码
最后是结果:
是用python写图表,生成pdf.
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart
from urllib import urlopen
from reportlab.graphics.shapes import *
from reportlab.graphics.charts.lineplots import LinePlot
from reportlab.graphics.charts.textlabels import Label
from reportlab.graphics import renderPDF
class pdfreport():
def createpdf(self,datas):
drawing = Drawing(400, 200)
#data = [(13, 5, 20),(14, 6, 21)]
data=datas
bc = VerticalBarChart()
bc.x = 50
bc.y = 50
bc.height = 125
bc.width = 300
bc.data = data
bc.strokeColor = colors.black
bc.valueAxis.valueMin = 0
bc.valueAxis.valueMax = 50
bc.valueAxis.valueStep = 10
bc.categoryAxis.labels.boxAnchor ='ne'
bc.categoryAxis.labels.dx = 8
bc.categoryAxis.labels.dy = -2
bc.categoryAxis.labels.angle = 30
bc.categoryAxis.categoryNames = ['Jan-99','Feb-99','Mar-99']
#bc.categoryAxis.categoryNames =ytype
drawing.add(bc)
drawing.add(String(250,150,"ss", fontSize=14,fillColor=colors.red))
#drawing.add(String(250,150,des, fontSize=14,fillColor=colors.red))
renderPDF.drawToFile(drawing,'report1.pdf','API')
#renderPDF.drawToFile(drawing,'APIReport.pdf','API')
datas=[(0,20),(0,25)]
f=pdfreport()
f.createpdf(datas)
[/code]
接口自动化的持续集成
配置到jenkins上也很简单,这里就不过多描述。现在问题是,生成的报告是pdf。Jenkins里面不太好展现出来。弄成zip附件查看不方便。最后我写个脚本将其传到共享里面,或者写脚本用邮件发出来。后面写打包的时候会讲到的。
探讨
这些脚本,还有很多可以完善的地方。我也没有花太多的精力去完善,我的宗旨是花少的时间,搞出简单又好用的东西。
上次看到思寒的一篇文章,就是自动生成接口的测试用例,这样效率大大提高了。 |
|