Python之CMIP自动化测试脚本
来源:互联网 发布:办公室office软件下载 编辑:程序博客网 时间:2024/05/19 20:41
## 模拟CMIP客户端发起请求(client.py)
import xml.etree.ElementTree as Etreeimport threadingimport socketimport timeimport os,sys###############################################################################g_server_ip = '192.168.1.103'g_server_port = 10000g_listen_max = 30g_msg_path = 'cmip'g_sep = '\\'###############################################################################encoding = 'utf-8'BUFSIZE = 1024*4gCount = 0################################################################################ Log Helper.###############################################################################Debug_Mode = 1Error_Mode =2 def log_time(): return time.strftime('%Y-%m-%d %H-%M-%S',time.localtime(time.time()))def LogMsg(mode,msg): if mode == Debug_Mode: flag = "Debug" if mode == Error_Mode: flag = "Error" print "%s\t%s\t%s" % (log_time(),flag,msg)################################################################################ File Helper###############################################################################def readFile(fname): with open(fname, 'r') as f: return f.read() def writeFile(fname,content): with open(fname, 'w') as f: return f.write(content) ################################################################################ Request for Server############################################################################################################################################################### Request for Server###############################################################################class Request: cmdType = 0 cmdTarget = -1 timestamp = '' cmd = -1 response = 1 parameter = '' def __init__(self,_cmdTarget,_cmd,_response,_parameter): self.cmdTarget = _cmdTarget self.cmd = _cmd self.response = _response self.parameter = _parameter self.timestamp = int(time.time()) def display(self): print "-----------------------------------------------------------------------------" print "cmd\t\t%s" % (self.cmd) print "cmdTarget\t%s" % (self.cmdTarget) print "response\t%s" % (self.response) print "paramter\t%s" % (self.parameter) print "-----------------------------------------------------------------------------"class RequestFactory: global g_sep def __init__(self,_cmdValue): fname = os.path.join(os.getcwd(),"%s%s%d%sreq.txt" % (g_msg_path,os.path.sep,_cmdValue,os.path.sep)) self.content = readFile(fname) def toString(self): return self.content def toObject(self): return Str_To_Request(self.content)class ResponseFactory: def __init__(self,_cmdValue): fname = os.path.join(os.getcwd(),"%s%s%s%sres.txt" % (g_msg_path,os.path.sep,_cmdValue,os.path.sep)) self.content = readFile(fname) def toString(self): return self.contentdef DisNone(obj): if obj != None: return True else: return Falsedef Str_To_Request(str): domTree = Etree.fromstring(str) cmdType_node = domTree.find("cmdType") cmdTarget_node = domTree.find("cmdTarget") timestamp_node = domTree.find("timestamp") cmd_node = domTree.find("cmd") response_node = domTree.find("response") parameter_node = domTree.find("parameter") if DisNone(cmdType_node) and DisNone(cmdTarget_node) and DisNone(timestamp_node) and DisNone(response_node) and DisNone(parameter_node): return Request(cmdTarget_node.text,cmd_node.text,response_node.text,parameter_node.text) else: return Noneclass Response: cmd = 0 timestamp = '' result = 1 content = '' def __init__(self,_cmd,_result,_content): self.cmd = _cmd self.result = _result self.content = _content self.timestamp = int(time.time()) def display(self): print "-----------------------------------------------------------------------------" print "cmd\t\t%s" % (self.cmd) print "result\t\t%s" % (self.result) print "content\t\t%s" % (self.content.strip()) print "-----------------------------------------------------------------------------" def Str_To_Response(str): domTree = Etree.fromstring(str) cmd_node = domTree.find("cmd") result_node = domTree.find("result") content_node = domTree.find("content") if DisNone(cmd_node) and DisNone(result_node) and DisNone(content_node): return Response(cmd_node.text,result_node.text,content_node.text) else: return Nonedef Response_To_Str(resp): return "<resp><cmd>%d</cmd><timestamp>%s</timestamp><result>%d</result><content>%s</content>" % \ (resp.cmd, resp.timestamp, resp.result ,resp.content)class ResultCompareHandle: def __init__(self,_resObj): self.res_obj = _resObj def compare(self): cmd = self.res_obj.cmd expect_obj = ResponseFactory(cmd).toObject() if self.res_obj.result.strip() == expect_obj.result.strip(): return True else: return False################################################################################ CMA Handler Class###############################################################################class CMAHandler(threading.Thread): def __init__(self,client): threading.Thread.__init__(self) self.client = client self.count = 0 def run(self): while True: data = self.client.recv(BUFSIZE) if(data): req_str = bytes.decode(data,encoding) req_obj = Str_To_Request(req_str) if req_obj: req_obj.display() cmdValue = req_obj.cmd resp_obj = ResponseFactory(cmdValue).toString() self.client.send(ret) else: LogMsg(Debug_Mode,"Client Request Format is invalid") else: break LogMsg(Debug_Mode,"Client [%s] close Connection." % (self.client.getpeername()))################################################################################ TestClient Class.# Create Tcp Link to Server# if accept, create thread for it.###############################################################################class TestClient(threading.Thread): def __init__(self, ip ,port): threading.Thread.__init__(self) self.port = port self.ip = ip self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.nMaxCmd = 3 self.curCmd = 0 self.nOKCmd = 0 self.nNGCmd = 0 self.ngList = [] self.okList = [] def run(self): self.sock.connect((self.ip,self.port)) LogMsg(Debug_Mode,"Client Start Connecting to Server (%s,%d)" % (self.ip,self.port)) while True: LogMsg(Debug_Mode,"Request[%d]" % (self.curCmd)) #[1] req_factory = RequestFactory(self.curCmd) req_obj = req_factory.toObject() req_obj.display() req_str = req_factory.toString() self.sock.send(req_str) #[2] data = self.sock.recv(BUFSIZE) res_obj = Str_To_Response(data) if res_obj: LogMsg(Debug_Mode,"Response[%s]" % (res_obj.cmd)) res_obj.display() nResult = ResultCompareHandle(res_obj).compare() if nResult: nOKCmd = nOKCmd + 1 self.okList.append(res_obj.cmd) else: nNGCmd = nNGCmd + 1 self.ngList.append(res_obj.cmd) print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`" time.sleep(3) self.curCmd = self.curCmd + 1 if self.curCmd > self.nMaxCmd: break LogMsg(Debug_Mode,"Client Will Exit app...") self.displayTestResults() def displayTestResults(self): print "\n" print "------------------------------------------------------------------------" print "Total/OK/NG Case:\t%d/%d/%d" % (self.nOKCmd + self.nNGCmd,self.nOKCmd,self.nNGCmd) ngStr = "" for ng in self.ngList: ngStr = "%s%s-" % (ngStr,ng) okStr = "" for ok in self.okList: ngStr = "%s%s-" % (okStr,ok) print "OK CaseList:\t%s" % (okStr) print "------------------------------------------------------------------------"################################################################################ Create Service# Start Service###############################################################################s_server = TestClient(g_server_ip,g_server_port)s_server.start()
import xml.etree.ElementTree as Etreeimport threadingimport socketimport timeimport os,sys###############################################################################g_server_ip = '192.168.1.103'g_server_port = 10000g_listen_max = 30g_msg_path = 'cmip'g_sep = '\\'###############################################################################encoding = 'utf-8'BUFSIZE = 1024*4gCount = 0################################################################################ Log Helper.###############################################################################Debug_Mode = 1Error_Mode =2 def log_time(): return time.strftime('%Y-%m-%d %H-%M-%S',time.localtime(time.time()))def LogMsg(mode,msg): if mode == Debug_Mode: flag = "Debug" if mode == Error_Mode: flag = "Error" print "%s\t%s\t%s" % (log_time(),flag,msg)################################################################################ File Helper###############################################################################def readFile(fname): with open(fname, 'r') as f: return f.read() def writeFile(fname,content): with open(fname, 'w') as f: return f.write(content) ################################################################################ Request for Server############################################################################################################################################################### Request for Server###############################################################################class Request: cmdType = 0 cmdTarget = -1 timestamp = '' cmd = -1 response = 1 parameter = '' def __init__(self,_cmdTarget,_cmd,_response,_parameter): self.cmdTarget = _cmdTarget self.cmd = _cmd self.response = _response self.parameter = _parameter self.timestamp = int(time.time()) def display(self): print "#################### Request #########################" print "cmd\t\t%s" % (self.cmd) print "cmdTarget\t%s" % (self.cmdTarget) print "response\t%s" % (self.response) print "paramter\t%s" % (self.parameter) print "######################################################"class RequestFactory: global g_sep def __init__(self,_cmdValue): fname = os.path.join(os.getcwd(),"%s%s%d%sreq.txt" % (g_msg_path,os.path.sep,_cmdValue,os.path.sep)) self.content = readFile(fname) def toString(self): return self.content def toObject(self): return Str_To_Request(self.content)class ResponseFactory: def __init__(self,_cmdValue): fname = os.path.join(os.getcwd(),"%s%s%s%sres.txt" % (g_msg_path,os.path.sep,_cmdValue,os.path.sep)) self.content = readFile(fname) def toString(self): return self.contentdef DisNone(obj): if obj != None: return True else: return Falsedef Str_To_Request(str): domTree = Etree.fromstring(str) cmdType_node = domTree.find("cmdType") cmdTarget_node = domTree.find("cmdTarget") timestamp_node = domTree.find("timestamp") cmd_node = domTree.find("cmd") response_node = domTree.find("response") parameter_node = domTree.find("parameter") if DisNone(cmdType_node) and DisNone(cmdTarget_node) and DisNone(timestamp_node) and DisNone(response_node) and DisNone(parameter_node): return Request(cmdTarget_node.text,cmd_node.text,response_node.text,parameter_node.text) else: return Noneclass Response: cmd = 0 timestamp = '' result = 1 content = '' def __init__(self,_cmd,_result,_content): self.cmd = _cmd self.result = _result self.content = _content self.timestamp = int(time.time()) def display(self): print "###################### Response ######################" print "cmd\t\t%s" % (self.cmd) print "result\t\t%s" % (self.result) print "content\t\t%s" % (self.content) print "######################################################" def Str_To_Response(str): domTree = Etree.fromstring(str) cmd_node = domTree.find("cmd") result_node = domTree.find("result") content_node = domTree.find("content") if DisNone(cmd_node) and DisNone(result_node) and DisNone(content_node): return Response(cmd_node.text,result_node.text,content_node.text) else: return Nonedef Response_To_Str(resp): return "<resp><cmd>%d</cmd><timestamp>%s</timestamp><result>%d</result><content>%s</content>" % \ (resp.cmd, resp.timestamp, resp.result ,resp.content)################################################################################ CMA Handler Class###############################################################################class CMAHandler(threading.Thread): def __init__(self,client): threading.Thread.__init__(self) self.client = client self.count = 0 def run(self): while True: data = self.client.recv(BUFSIZE) if(data): req_str = bytes.decode(data,encoding) req_obj = Str_To_Request(req_str) if req_obj: req_obj.display() cmdValue = req_obj.cmd resp_str = ResponseFactory(cmdValue).toString() self.client.send(resp_str) else: LogMsg(Debug_Mode,"Client Request Format is invalid") else: break LogMsg(Debug_Mode,"Client close Connection.")################################################################################ TestServer Class.# Create Tcp Link ,Wait the Client# if accept, create thread for it.###############################################################################class TestServer(threading.Thread): def __init__(self, ip ,port ,listen_max): threading.Thread.__init__(self) self.port = port self.ip = ip self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind((self.ip,self.port)) self.sock.listen(listen_max) def run(self): LogMsg(Debug_Mode,"Server Start Listen the Client...") while True: client,cltadd = self.sock.accept() LogMsg(Debug_Mode,"Client XXX is connected.") CMAHandler(client).start()################################################################################ Create Service# Start Service###############################################################################s_server = TestServer(g_server_ip,g_server_port,g_listen_max)s_server.start()
0 0
- Python之CMIP自动化测试脚本
- 用Python开发自动化测试脚本
- python _自动化性能测试脚本
- 用Python开发自动化测试脚本
- 用Python开发网页自动化测试脚本
- 用Python开发自动化测试脚本
- 测试HTTP接口的python自动化脚本
- 用Python开发自动化测试脚本
- 用 Python 开发网站自动化测试脚本
- python 自动化测试脚本-->selenium应用
- Android自动化测试之Monkeyrunner 脚本编写
- FPGA学习之TCL自动化测试脚本
- Android自动化测试之Monkeyrunner 脚本编写
- 自动化测试之Python + selenium = Web UI自动化测试
- 自动化测试之Python + selenium = Web UI自动化测试
- Python自动化测试--一个简单的自动化测试脚本--批量执行测试用例
- python之nosetests自动化测试框架感知
- python + selenium自动化测试之环境搭建
- Spring MVC 中 HandlerInterceptorAdapter的使用
- Target runtime Apache Tomcat v6.0 is not defined解决方法
- CSS应用的方式与注意问题
- ARM汇编语言最常用指令
- Android人脸对比
- Python之CMIP自动化测试脚本
- ofbiz安装错误,页面报错:Template location is empty
- Verifying Checksum ... Bad Data CRC ERROR: can't get kernel image!
- 博客生活
- 内存
- 个人开发android app
- 解决ubuntu 对zip文件解压乱码问题
- Qt中translate、tr关系 与中文问题
- Nginx反向代理和负载均衡部署指南