RobotFramework自定义系统关键字解析txt,csv,dbf,xml格式文件(
一、需求 业务中有一个功能菜单,解析交易所的证券信息文件,导入到数据表中,有些问价会导入几个数据表当中。 本次自动化设计的目标就是免去人工对比文件数据和数据表数据的过程; 二、已知条件: 1.业务处理流程: (1)存在接口配置表根据接口ID(ITF_ID)指定文件存在的路径D:ITF[email?protected]@[email?protected]@DD.txt,假设计算机物理日期是2018/11/28,则文件hkexzxjc_20181128需要存在于服务器D:ITF路径下;后续接口导入文件才能成功,否则会找不到该文件; (2)存在文件导入接口适用于所有类型文件导入,根据”接口配置号“(ITF_CFG_SN)区分不同文件; 2.业务封装了一个Test Library供使用,该Test Libirary有关键字:LBM CALL RET DATA。F5查询用法为: Arguments:[server|funcid|fixparam|unfixparam],其中server有约定的写法; 三、实现思路: 1.证券信息文件对日期有特别要求,每次执行用例之前,都要手动修改hkexzxjc_20181128文件的日期和当前物理日期一致;将同一份文件hkexzxjc_20181128放在两个位置。 业务后台程序在所服务器:接口调用使用;robotFramwork所在机器:自动化系统程序解析文件使用; 2.自定义系统关键字,实现文件解析功能; 3.调用业务接口将文件数据导入数据表之后,和文件解析的数据进行对比,验证接口处理功能是否正常; 四、实现过程
? 五.RobotFramwork自定义系统关键字 ?(一)文件说明如下,格式是(txt),业务中需要获取的三个字段是高亮部分。 ? ? ? ? 文件内容示例 我们需要读取的是股票的价差价位,也就是R0403|01开头的记录,一条价差记录的关键信息是(价格下限,价格上限,价差价位) (二)自定义系统关键字 ?1.Test Library名称定义为TxtLibrary; 在pythin安装目录C:Python27Libsite-packages路径下新建TxtLibrary文件夹 2.新建txtfileimport.py文件,定义类TextFileImport,在类方法中按照实现思路进行处理; # -*- coding: utf-8 -*- class TxtFileImport(object): def ProcTxtStkItfFileData(self,itfId,trdDate): """ 文件解析函数,调用方法:ProcTxtStkItfFileData(‘ITF_SGT_HKEXZXJC‘,‘20181123‘); """ if(itfId==‘ITF_SGT_HKEXZXJC‘): """ 深交所最小价差文件hkexzxjc.txt解析 """ fileName="D:ITFhkexzxjc_"+trdDate+".txt" priceunitlist=[] #保存所有价差价位记录的列表 try: f = open(fileName,‘r‘) for line in f.readlines(): """ 分隔符为竖线,读取开头为R0403|01的一行 """ prefix=line[0:8] if(prefix==‘R0403|01‘): linestr=line.split(‘|‘) minprice=float(linestr[4]) count=int(linestr[5]) i=0 for i in range(count): item={} #保存一条价差价位记录的字典 #价格下限 item[‘startPrice‘]=minprice; #价格上限 item[‘endPrice‘]=float(linestr[6+3*i]) #价差价位 item[‘spread‘]=float(linestr[7+3*i]) #价格下限重新赋值 minprice=item[‘endPrice‘] priceunitlist.append(item) finally: f.close() return priceunitlist if __name__=="__main__": p=TxtFileImport(); list=p.ProcTxtStkItfFileData(‘ITF_SGT_HKEXZXJC‘,‘20181127‘); print(list)
3..新建__init__.py文件如下,类TxtLibrary继承上面的TxtFileImport,RobotFramework启动时会加载这个文件,从而调用类中定义的方法(关键字); from txtfileimport import TxtFileImport __version__ = ‘0.6‘ class TxtLibrary(TxtFileImport): ROBOT_LIBRARY_SCOPE=‘GLOBAL‘; 4.重启Robot Framework,按F5即可搜索到TxtLibrary的关键字。; ? ------------------------------------------------------------xml文件和dbf文件的解析在下一篇说明------------------------------------------------------------------ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |