Skip to content

Commit

Permalink
2018/3/6
Browse files Browse the repository at this point in the history
  • Loading branch information
qiangzhouf committed Mar 6, 2018
1 parent 882ca04 commit 1b5a0b1
Show file tree
Hide file tree
Showing 20 changed files with 541 additions and 183 deletions.
Binary file added web/image/deckCar/1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Binary file added web/image/noPlateCar/1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 2 additions & 19 deletions web/lib/case.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ class Case:

def __init__(self, project, name, data=None, assert_data=None,
save_data=None, del_data=None, pre_time=0):
self.name = project+'|'+name
self.interface = interf(project, name)
self.name = project+name
self.interface = interf(name, project)
self.data = data
self.assert_data = assert_data
self.save_data = save_data
Expand Down Expand Up @@ -64,21 +64,4 @@ def run(self):
self.interface.g_pop(self.del_data)

return self.name, self.status, log_file


# 测试代码
if __name__ == '__main__':

set_cookie('车综平台', '公共-用户-用户登录')

c = Case('车综平台','接入-获取卡口列表','',{"message": "数据获取成功"},['data.*r.nodeCode', 'data.*r'])
print(c.run())

c = Case('车综平台','接入-卡口导图',{'magic':'hfrz','cmd':'addinfo','deviceId':'*g.data.*r..nodeCode','direction':'*g.data.*r..platformDirection',
'imageData':'*base64./home/zhou/work/AutotestPlatform/web/image/fakeCar/1517284393960_6257265818146406400.jpg',
'snapshotTime':'*now'},{"message": "success"})
print(c.run())

c = Case('车综平台','车辆预警-假套无牌车',{'autoRecognizeResult':1, 'sortKey':'snapshotTime', 'startTime':'*now-0.1','endTime':'*now+0.1', 'carPlateNumber':'豫A00013','rows':1,'sortType':'desc','aggPlate':0,'start':0,'timeMode':0},{"data.0.autoRecognizeResultName": "假牌车","data.0.tollgateDeviceId":'*g.data.*r..nodeId', 'data.0.carPlateNumber':'豫A00013'},'',['data.*r.nodeCode', 'data.*r'],30)
print(c.run())

49 changes: 8 additions & 41 deletions web/lib/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import sqlite3
import base64
import random
import os
from mylog import *


Expand Down Expand Up @@ -70,7 +71,7 @@ def modify_params(self,k_v):
for k in k_v:
if isinstance(k_v[k], str):
if '*base64.' in k_v[k]:
k_v[k] = img_b64(k_v[k].replace('*base64.', ''))
k_v[k] = img_b64(os.getcwd() + '/image/'+ k_v[k].replace('*base64.', ''))
self.params[k] = k_v[k]

# 下发接口
Expand Down Expand Up @@ -194,17 +195,19 @@ def dynamic_params(params):
elif '*now-' in params[key]:
interval = int(float(params[key].split('-')[1])*3600*1000)
params[key] = int(time.time()*1000) - interval
elif '*base64.' in params[key]:
params[key] = img_b64(os.getcwd() + '/image/'+ params[key].replace('*base64.', ''))


# 登陆获取cookie,并保存到Interfa的类变量中
def set_cookie(project, interface_name):
i = interf(project, interface_name)
def set_cookie(interface_name, project):
i = interf(interface_name, project)
i.request()
Interface.cookie = i.result.headers['Set-Cookie'].split(';')[0]


# 从数据库api表中读取接口参数,并实例化对象
def interf(project, interface_name):
def interf(interface_name, project):
db = sqlite3.connect(Interface.db_path)
result = db.execute('select method,url,data'
' from api where project_name="%s" and name="%s"'
Expand All @@ -220,40 +223,4 @@ def interf(project, interface_name):
def img_b64(img_path):
with open(img_path, 'rb') as f:
return base64.b64encode(f.read()).decode('utf-8')


# 测试代码
if __name__ == '__main__':
# 登陆获取coikie
set_cookie('车综平台', '公共-用户-用户登录')

# 获取卡口id
i = interf('车综平台','接入-获取卡口列表')
i.request()
i.assert_response({"message": "数据获取成功"})
i.g_push(['data.*r.nodeCode', 'data.*r'])

# 上传假牌车图片
i = interf('车综平台','接入-卡口导图')
i.modify_params({'magic':'hfrz','cmd':'addinfo','deviceId':'*g.data.*r..nodeCode','direction':'*g.data.*r..platformDirection',
'imageData':'*base64./home/zhou/work/AutotestPlatform/web/image/fakeCar/1517284393960_6257265818146406400.jpg',
'snapshotTime':'*now'})
i.request()
i.assert_response({"message": "success"})

# 等待系统处理
time.sleep(5)

# 假牌车预警查询
i = interf('车综平台','车辆预警-假套无牌车')
i.modify_params({'autoRecognizeResult':1, 'sortKey':'snapshotTime', 'startTime':'*now-0.1','endTime':'*now+0.1',
'carPlateNumber':'豫A00013','rows':1,'sortType':'desc','aggPlate':0,'start':0,'timeMode':0})
i.request()
i.assert_response({"data.0.autoRecognizeResultName": "假牌车","data.0.tollgateDeviceId":'*g.data.*r..nodeId',
'data.0.carPlateNumber':'豫A00013'})
i.g_pop(['data.*r.nodeCode', 'data.*r'])






28 changes: 19 additions & 9 deletions web/lib/scene.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class Scene:
3、运行case返回运行结果。
'''

def __init__(self, project, scene_name):
def __init__(self, scene_name, project):
self.s_key = None
self.project = project
self.data = self.get_case_data(self.get_scene_data(scene_name))
Expand All @@ -30,7 +30,9 @@ def get_case_data(self, case_name):
s = sqlite3.connect(Interface.db_path)
tmp = []
for elem in case_name:
r = s.execute('select project,name,data,assert_data,save_data,del_data,pre_time from "case" where name="%s" and project="%s" and s_key="%s"' % (elem, self.project, self.s_key)).fetchall()[0]
r = s.execute('select name,data,assert_data,save_data,del_data,pre_time from "case" where name="%s" and s_key=%d' % (elem, self.s_key)).fetchall()[0]
r = list(r)
r.insert(0, self.project)
tmp.append(r)
s.close()
return tmp
Expand All @@ -43,13 +45,19 @@ def run(self):
self.status.append(result[-1][1][0] and result[-1][1][1])
return self.name, result, all(self.status)

@classmethod
def add(cls, scene_params, case_params):
pass

@classmethod
def modify(cls, scene_params, case_params):
pass
s = sqlite3.connect(Interface.db_path)
s.execute('update scene set data="%s" where project="%s" and name="%s";' % (','.join(scene_params[2]), scene_params[0], scene_params[1]))
s.commit()
s_key = s.execute('select id from scene where project="%s" and name="%s";' % (scene_params[0], scene_params[1])).fetchall()[0][0]
s.execute('delete from "case" where s_key=%d;' % s_key)
s.commit()
for key in scene_params[2]:
case_params[key].append(s_key)
s.execute("insert into 'case' (name,data,assert_data,save_data,del_data,pre_time,s_key) values('%s','%s','%s','%s','%s','%s','%s');" % tuple(case_params[key]))
s.commit()
s.close()

@classmethod
def delete(cls, scene_params, case_params):
Expand All @@ -59,8 +67,10 @@ def delete(cls, scene_params, case_params):

# 测试代码
if __name__ == '__main__':
set_cookie('车综平台', '公共-用户-用户登录')
scene_name = input('请输入场景名:')
project_name = input('请输入项目名:')

s = Scene('车综平台', '假牌车预警')
set_cookie('公共-用户-用户登录', project_name)
s = Scene(scene_name, project_name)
print(s.run())

Empty file removed web/lib/suite.py
Empty file.
33 changes: 33 additions & 0 deletions web/lib/task.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import scene
import sqlite3


class Task:
'''
任务类:
初始化参数: 任务名task_name, 项目project, 测试套suite
'''

def __init__(self, task_name, project, suite):
self.name = task_name
self.project = project
self.suite = get_suite(suite, project)

def get_suite(self, suite, project):
suite_data = self.db('select data from suite where name="%s" and project="%s"' % (suite, project))
return suite_data[0][0].split(',')

def run(self):

set_cookie('公共-用户-用户登录', project_name)
for elem in self.suite:
s = Scene(elem, project_name)
s.run()

def db(self, cmd):
s = sqlite3.connect(Interface.db_path)
r = s.execute(cmd).fetchall()
s.commit()
s.close()
return r
85 changes: 0 additions & 85 deletions web/log/log.txt

This file was deleted.

13 changes: 5 additions & 8 deletions web/static/api_record.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ function refresh_select()
}
else{
$('div#lay').empty()
$.post('/project_api', {'get': 'api', 'project_name': $('input#project').val()}, function(data){
$.post('/project_api', {'get': 'api', 'project_name': $('input#project').val(), 'type':''}, function(data){
$('ul#api_name').empty();
var new_html = ''
var sub_html = '<div id="api_b">'
Expand All @@ -43,16 +43,13 @@ function parse_res(fa,res,f=''){
if (typeof(fa[key])=='object'){
try {
if (fa[key].length > 0){
f = f + key + '[0].';
parse_res(fa[key][0],res,f)
parse_res(fa[key][0],res,f + key + '.0.')
}
else{
f = f + key + '.';
parse_res(fa[key],res,f)
parse_res(fa[key],res,f + key + '.')
}
} catch(error) {
f = f + key + '.';
parse_res(fa[key],res,f)
parse_res(fa[key],res,f + key + '.')
};
}
else{
Expand Down Expand Up @@ -505,7 +502,7 @@ $(function(){
parse_res(data.response, assert_obj)
var assert_type = '<select class="form-control"><option value ="null">Null</option><option value ="value">Value</option><option value="exist">Exist</option><option value="length">Length</option><option value="range">Range</option><option value="set">Set</option></select>'
for(var key in assert_obj){
var new_html = '<tr class="assert"><td>' + key + '</td><td>' + assert_obj[key] + '</td><td>' + assert_type + '</td><td class="av"></td></tr>';
var new_html = '<tr class="assert"><td style="width:20%;overflow:hidden">' + key + '</td><td style="width:25%;overflow:hidden">' + assert_obj[key] + '</td><td style="width:20%;overflow:hidden">' + assert_type + '</td><td class="av" style="width:25%;overflow:hidden""></td></tr>';
$('table#assert_tb').find('tr').last().after(new_html);
};
}
Expand Down
52 changes: 52 additions & 0 deletions web/static/interf_task.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
$(function(){
//选择项目后,动态加载测试套
$('select#project').change(function(){
if ($(this).val() != 'none'){
$.post('/suite', {'type': 'get_suite', 'project': $(this).val()}, function(data){
var obj = $('select#suite');
obj.empty();
var html = '<option value="none">请选择测试套</option>';
for (i=0;i<data.suite.length;i++){
html = html + '<option value="' + data.suite[i] + '">' + data.suite[i] + '</option>';
};
obj.html(html);
});
}
else{
$('select#suite').empty();
$('select#suite').html('<option value="none">请选择测试套</option>');
$('div#suite_data').hide();
};
});

//新建任务
$('button#new_task').on('click', function(){
if ($('select#suite').val() == 'none'){
$("h4#myModalLabel").text("提示");
$("div.modal-body").text("请先选择好测试套!");
$("button#send_alert").trigger("click");
return
};
if ($('input#task_name').val() == ''){
$("h4#myModalLabel").text("提示");
$("div.modal-body").text("任务名不能为空!");
$("button#send_alert").trigger("click");
return
};
$.post('/interf_task', {'type': 'new_task', 'name': $('input#task_name').val(), 'project': $('select#project').val(), 'suite': $('select#suite').val()}, function(data){
if (data.code == 200){
$("h4#myModalLabel").text("提示");
$("div.modal-body").text("任务新建成功!");
$("button#send_alert").trigger("click");

}
else{
$("h4#myModalLabel").text("提示");
$("div.modal-body").text("任务新建失败!");
$("button#send_alert").trigger("click");
};

});
});

});
Loading

0 comments on commit 1b5a0b1

Please sign in to comment.