def T_02_powerTest_A(product): u"功率测试-测试功率值是否达标,并记录功率值" manulCheck(u"操作提示", u"请将阅读器天线接口连接到频谱仪上,点击OK开始测试", "ok") sa = __getSpecAnlzr() sa.resetForRead() rd201 = __getReader() rd201.setting = True start_new_thread(__asynInven, (rd201, )) time.sleep(0.5) power = sa.readPowerValue() rd201.setting = False res = {u"阅读器发射功率": power} product.addBindingCode(u"发射功率", power) if not (SP("hr.reader.power.low", 34) <= power <= SP( "hr.reader.power.high", 35)): raise TestItemFailException(failWeight=10, message=u'发射功率值不合格', output=res) sa.setForIdleRead() time.sleep(0.5) idlePower = sa.readPowerValue() uiLog(u"空闲时功率:%f" % idlePower) if idlePower > 0: raise TestItemFailException(failWeight=10, message=u'空闲状态依然有功率值:%f' % idlePower, output=res) return res
def T_02_updateMac_A(product): u'''更新MAC地址-获取新的MAC地址并BSL写入''' manulCheck(u"操作提示", u"请连接整机和工装板的U口线,然后点击确定", "ok") if SESSION["testor"] != u"单机": obuid = serialCode("mac") else: obuid = "" while re.match("^([0-9]|[A-F]|[a-f]){8}$", obuid) is None: obuid = askForSomething(u"MAC地址", u"请输入MAC地址", autoCommit=False, defaultValue="24") uiLog(u"分配测试产品标识:" + obuid) sc = __askForPlateDeviceCom() product.setTestingProductIdCode(obuid) try: sc.startBslWriting(passwordFile) uiLog(u"开始写入MAC地址") sc.save_obu_id(__toBytesarray(obuid)) finally: sc.finishBslWritten() time.sleep(1) sc.clearSerialBuffer()
def T_01_readObuId_A(product): u'''读取OBU内部标识-通过发卡器读取OBUID并与镭雕条码进行绑定''' manulCheck(u"操作提示", u"请将整机放置在发卡器上,待绿灯闪烁后确定", "ok") sc = __askForTrader() mac, contractSerial = readNember(sc) print "mac:", mac print "合同序列号:", contractSerial newMac = checkExcel(PARAM["excelPath"].decode('utf-8'), PARAM["excelSheet"], contractSerial) try: uiLog(u"切换至NuLink模式") nul = __getNuLink() infos = nul.readInfo() infos00 = infos[:8] + newMac + infos[16:32] infos40 = infos[128:154] nul.writeToInfo(infos00, infos40) except: raise TestItemFailException(failWeight=10, message=u'写入新的mac失败') manulCheck(u"操作提示", u"请将整机放置在发卡器上,待绿灯闪烁后确定", "ok") for i in range(3): nul.resetChip() time.sleep(1) checkMac, readContractSerial = readNember(sc) if checkMac == newMac: return {u"写入新Mac": u"成功"}
def T_02_downloadNewVersion_A(product): u'''下载新版本-自动下载新版本''' manulCheck(u"操作提示",u"请连接整机和工装板的U口线,然后点击确定","ok") sc = __askForPlateDeviceCom() try: sc.downloadVersion(version_file = os.path.dirname(os.path.abspath(__file__))+os.sep+"versions\\"+SESSION["versionFileName"]) except Exception,e: raise e
def xT_04_etcTradeWithPsam_A(product): u'''有PSAM卡交易测试-有PSAM卡交易测试''' manulCheck(u"操作提示", u"请将OBU插【国标卡】后放置在发卡器上,待OBU绿灯闪烁后确定", "ok") try: usbTestor.test_EtcTradeWithPsam() except Exception, e: raise TestItemFailException(failWeight=10, message=u'有PSAM卡交易测试失败!' + str(e))
def T_02_businessRSSITest_A(product): u"整机交易测试-交易过程中包括读取RSSI值测试" manulCheck(u'提示', u'请将RSU放置到指定位置,然后点击确定按钮开始整机交易测试', check="ok") manulResult = tradeTest() if manulResult > int(PARAM["tradeRSSILow"]) and manulResult < int( PARAM["tradeRSSIHigh"]): return {u"交易测试RSSI": u"%d" % manulResult} raise TestItemFailException(failWeight=10, message=u"交易测试失败")
def T_10_miReadCardID_A(product): u"复合卡ID读取测试-读取复合卡ID测试" global usbTestor manulCheck(u"操作提示", u"请将复合卡放置在发卡器上,然后点击确定", "ok") try: usbTestor.setUp() usbTestor.test_MIreadCardId() except Exception, e: raise TestItemFailException(failWeight=10, message=u'MI卡ID读取测试失败!' + str(e))
def T_08_cpuCardTest_A(product): u"CPU卡测试-读取CPU卡测试" global usbTestor manulCheck(u"操作提示", u"请将CPU卡放置在发卡器上,然后点击确定", "ok") try: usbTestor.setUp() usbTestor.test_CpuCard() except Exception, e: raise TestItemFailException(failWeight=10, message=u'CPU卡测试失败!' + str(e))
def T_07_etcTradeWithoutPsam_A(product): u'''无PSAM卡交易测试-无PSAM卡交易测试''' global usbTestor manulCheck(u"操作提示", u"请将OBU插【华虹卡】后放置在发卡器上,待OBU绿灯闪烁后确定", "ok") try: usbTestor.setUp() usbTestor.test_EtcTradeWithoutPsam() except Exception, e: raise TestItemFailException(failWeight=10, message=u'无PSAM卡交易测试失败!' + str(e))
def T_15_m1CardTest_A(product): u"M1卡测试-读取M1卡测试" manulCheck(u"操作提示", u"请将M1卡放置在发卡器上,然后点击确定", "ok") global usbTestor try: usbTestor.setUp() usbTestor.test_M1Card() except Exception, e: raise TestItemFailException(failWeight=10, message=u'M1卡测试失败!' + str(e))
def T_02_port4Test_A(product): u"端口4测试-测试端口4的S11/S22/S21的值" manulCheck(u"操作提示",u"请确认功分器单板公共端(7)连接矢网仪1端口,1-6口与工装板连接正确,点击OK开始测试","ok") res = __T_portTest_A(product,4) # 加判S11 s11 = res[u"端口4-S11回损"] product.addBindingCode(u"端口7-S11回损",s11) if not ( SP("hr.divider.port7.S11.low",0) < s11 < SP("hr.divider.port7.S11.high",0)): raise TestItemFailException(failWeight = 10,message = u'端口7-S11回损值不合格',output=res) return res
def T_03_marker1_A(product): u"Marker1测试-频率12.8M" manulCheck(u"操作提示", u"请确认天线单板与矢网仪连接正确,点击OK开始测试", "ok") vna = __getVNA() s, d2, freq = vna.readMarkerAntFreq(1, 12800000) res = __T_markerJudge(product, s, freq, 1) if not (SP("hr.antenna.marker1.s.low", 0) < s < SP( "hr.antenna.marker1.s.high", 0)): raise TestItemFailException(failWeight=10, message=u'频点1-S值不合格', output=res) return res
def T_06_deepStaticCurrent_A(product): u'''深度静态电流测试-判断深度静态电流值是否在正常范围内''' manulCheck(u"操作提示",u"请按住防拆下电按钮,使其下电","ok") sc = __askForPlateDeviceCom() sc.assertSynComm(request ='CloseObuUart',response = 'CloseObuUartOK') time.sleep(2) try: v = sc.testDeepStaticCurrent() resultMap = {u"深度静态电流":v} if v < SP('gs10.deepStaticCurrent.low',0) or v > SP('gs10.deepStaticCurrent.high',3): raise TestItemFailException(failWeight = 10,message = u'深度静态电流测试不通过,正常阈值0-3',output=resultMap) return resultMap except TestItemFailException,e: raise e
def T_06_lightTest_M(protduct): u"面板灯接口测试-RSDB0单板连接RSIB0单板进行单板面板灯接口测试" LightDict = {"系统PWR": "长亮", "系统RUN": "闪烁", "系统SAM": "长亮"} alist = [] for alight in LightDict: lightResult = manulCheck(u"面板灯接口测试", u"请观察%s灯是否%s" % (alight, LightDict[alight])) if lightResult: continue alist.append(alight) # proxy = __askForRD50CLight() proxy = DeviceProxy(PARAM["defaultNetOneIp"]) try: epld_addr = int(str("da"), 16) epld_value = int(str("0"), 16) proxy._write_epld(epld_addr, epld_value) redlightResult = manulCheck(u"系统报警灯", u"请观察系统ALM灯是否闪烁,点击正常后ALM灯将会关闭") if redlightResult: epld_addr1 = int(str("da"), 16) epld_value1 = int(str("1"), 16) proxy._write_epld(epld_addr1, epld_value1) else: alist.append("系统ALM") epld_addr1 = int(str("da"), 16) epld_value1 = int(str("1"), 16) proxy._write_epld(epld_addr1, epld_value1) time.sleep(0.5) epld_addr1 = int(str("17c"), 16) epld_value1 = int(str("00"), 16) proxy._write_epld(epld_addr1, epld_value1) sixlightResult = manulCheck(u"led灯亮起提示", u"led灯ANT1-ANT6是否亮起,判断后会关闭led灯") if sixlightResult: epld_addr1 = int(str("17c"), 16) epld_value1 = int(str("3f"), 16) proxy._write_epld(epld_addr1, epld_value1) else: alist.append("ANT1-ANT6灯") epld_addr1 = int(str("17c"), 16) epld_value1 = int(str("3f"), 16) proxy._write_epld(epld_addr1, epld_value1) finally: proxy.close() if alist: cir = ",".join(alist) PARAM["failNum"] = "1" raise TestItemFailException(failWeight=1, message=u"%s测试不正常" % cir) return
def T_02_downloadNet1_A(product): u'单板网口测试-RSDB0单板网口通信功能及APP版本下载测试' retry = "" t = 0 while True: t += 1 powerResult = manulCheck(u'复位', u'%s请在点击确定按钮后,按下单板上的复位按键S1' % retry, check="ok") if powerResult: downNet = __downloadVersion() if downNet == "OK": return elif downNet == "loginfail": retry = "登录超时,请重新操作," if t == 2: raise TestItemFailException(failWeight=10, message=u'串口无打印') elif downNet == "TFTPfail": # retry = "TFTP开启失败,请重新操作," # continue raise TestItemFailException(failWeight=10, message=u'APP版本下载失败, 可能是没有打开TFTP') else: raise TestItemFailException(failWeight=10, message=u'BOOT下载失败,未知异常')
def T_09_beep_M(product): u'''蜂鸣器检测-自动判定蜂鸣器是否响起''' sc = __askForPlateDeviceCom() sc.asynSend("TestBeepPara 1000") mcr = manulCheck(u"声光指示测试", u"请确认蜂鸣器响声正常。") sc.asynReceiveAndAssert("TestBeepParaOK") if not mcr:raise TestItemFailException(failWeight = 10,message = u'蜂鸣器测试人工判断不通过!')
def T_07_carDetection_A(protduct): u"车检串口-车检串口" proxy = DeviceProxy(PARAM["defaultNetOneIp"]) try: epld_addr = int(str("d4"), 16) epld_value = int(str("7"), 16) proxy._write_epld(epld_addr, epld_value) pullOutResult = manulCheck(u"提示", u"请再车检插口的工装接口插拔之后,点击确定") if pullOutResult: read_epld_addr = int(str("90"), 16) readResult = proxy._read_epld(read_epld_addr) readResult = hex(readResult)[2:] print readResult if readResult != "c0": proxy.close() PARAM["failNum"] = "1" raise TestItemFailException(failWeight=1, message=u"车检口测试失败,错误码%s" % readResult) epld_addr1 = int(str("d2"), 16) epld_value1 = int(str("1"), 16) epld_value2 = int(str("0"), 16) proxy._write_epld(epld_addr1, epld_value1) time.sleep(0.5) proxy._write_epld(epld_addr1, epld_value2) finally: proxy.close()
def T_08_greenLight_M(product): u'''绿色LED灯检测-自动判定绿LED灯是否正常亮起''' sc = __askForPlateDeviceCom() sc.asynSend("TestGreenLedPara 1000") mcr = manulCheck(u"声光指示测试", u"请确认绿色指示灯显示是否正常。") sc.asynReceiveAndAssert("TestGreenLedParaOK") if not mcr:raise TestItemFailException(failWeight = 10,message = u'绿色指示灯测试人工判断不通过!')
def T_02_readObuId_A(product): u'''读取OBU内部标识-通过发卡器读取OBUID并与镭雕条码进行绑定''' manulCheck(u"操作提示", u"请将整机放置在发卡器上,待绿灯闪烁后确定", "ok") sc = trading.__askForTrader() for i in range(5): try: mac, contractSerial = sc.readObuId() uiLog(u'测试产品标识:' + mac) product.setTestingProductIdCode(mac) product.addBindingCode(u"合同序列号", contractSerial) uiLog(u'绑定合同序列号:' + contractSerial) product.param["contractSerial"] = contractSerial break except Exception, e: print e time.sleep(0.1)
def T_11_oled_M(product): u'''OLED屏幕测试-人工判断OLED屏幕是否全白''' sc = __askForPlateDeviceCom() sc.asynSend('TestOLED') if not manulCheck(u"OLED屏幕测试", u"请确认屏幕全白。"): raise TestItemFailException(failWeight=10, message=u'OLED屏幕测试人工判断不通过!') sc.asynReceiveAndAssert('TestOLEDOK')
def T_10_oled_M(product): u'''OLED屏幕测试-手动判定OLED屏幕显示''' sc = __askForPlateDeviceCom() sc.asynSend("TestOLED") mcr = manulCheck(u"OLED测试", u"请确认OLED屏幕显示12345678") sc.asynReceiveAndAssert("TestOLEDOK") if not mcr:raise TestItemFailException(failWeight = 10,message = u'OLED屏幕测试人工判断不通过!')
def T_10_soundLight_M(product): u'''声光指示测试-人工判断指示灯显示、蜂鸣器响声是否正常''' sc = __askForPlateDeviceCom() sc.assertSynComm(request='TestLedLight', response='TestLedLightOK') mcr = manulCheck(u"声光指示测试", u"请确认指示灯显示正常,蜂鸣器响声正常。") if not mcr: raise TestItemFailException(failWeight=10, message=u'声光指示测试人工判断不通过!')
def T_03_soundLight_M(product): u'''声光指示测试-指示灯显示正常,蜂鸣器响声正常。人工确认后才停止显示和响''' time.sleep(1) from hhplt.testengine.manul import manulCheck if manulCheck(u"声光指示测试", u"请确认这破玩意是正常亮了吗?"): return {"随便写的返回值": 300} else: raise TestItemFailException(failWeight=10, message=u'声光测试失败')
def T_04_testBeep_M(product): u'''蜂鸣器测试-人工判定蜂鸣器是否响起''' global usbTestor usbTestor.setUp() usbTestor.test_Beep() mcr = manulCheck(u"蜂鸣器测试", u"请确认听到蜂鸣器的声音。") if not mcr: raise TestItemFailException(failWeight=10, message=u'蜂鸣器人工检测不通过!')
def T_10_oled_M(product): u'''OLED屏幕测试-自动判断OLED屏幕是否全黑''' sc = board_digital.__askForPlateDeviceCom() sc.asynSend("TestOLED") mcr = manulCheck(u"OLED测试", u"请确认OLED屏幕显示全黑。") sc.asynReceiveAndAssert("TestOLEDOK") if not mcr: raise TestItemFailException(failWeight=10, message=u'OLED屏幕测试人工判断不通过!')
def T_07_redLight_M(product): u'''红色LED灯检测-自动判定红LED灯是否正常亮起''' sc = board_digital.__askForPlateDeviceCom() sc.asynSend("TestRedLedPara 1000") mcr = manulCheck(u"声光指示测试", u"请确认红色指示灯显示是否正常。") sc.asynReceiveAndAssert("TestRedLedParaOK") if not mcr: raise TestItemFailException(failWeight=10, message=u'红色指示灯测试人工判断不通过!')
def T_04_RecvRSSITest222_A(product): u"无连接测试-计算RSRB4单板接收射频信号的RSSI值测试" manulCheck(u'提示', u'请断开信号源', check="ok") try: proxy.open(PARAM["defaultNetOneIp"]) fpga_pll.config() proxy._write_fpga_reg(0x5a, 0x01) rx_pll.config(5722) proxy._write_fpga_reg(0x59, 0x00) proxy._write_fpga_reg(0x50, 0x01) proxy._write_fpga_reg(0x51, 0x02) proxy._write_fpga_reg(0x58, 0x01) proxy._write_fpga_reg(0x56, 0x00) proxy._write_fpga_reg(0x57, 0x00) proxy._write_fpga_reg(0x57, 0x01) proxy._write_fpga_reg(0x57, 0x00) proxy._write_fpga_reg(0x52, 0x00) proxy._write_fpga_reg(0x95, 0x03) proxy._write_fpga_reg(0x96, 0x01) proxy._write_fpga_reg(0x9b, 0x01) proxy._write_fpga_reg(0x90, 0x01) time.sleep(0.5) # 工装发射单音 proxy._write_fpga_reg(0x52, 0x7f) fpga_addr = "3f" fpga_addr = int(str(fpga_addr), 16) fpga_value = proxy._read_fpga_reg(fpga_addr) print hex(fpga_value)[2:] proxy._write_fpga_reg(0x5a, 0x1) proxy._write_fpga_reg(0x46, 0x1) proxy._write_fpga_reg(0x58, 0x0) proxy._write_fpga_reg(0x5a, 0x0) print "关闭接收" except Exception as e: raise AbortTestException(message=e) finally: proxy.close() if fpga_value > int(PARAM["recvNothingLow"]) and fpga_value < int(PARAM["recvNothingHigh"]): return {u"无输入接收RSSI值为:": fpga_value} else: PARAM["failNum"] = "1" raise TestItemFailException(failWeight=1, message=u"无输入接收RSSI测试失败,值:%d:" % fpga_value)
def T_13_greenLight_M(product): u'''绿色LED灯检测-人工判定绿LED灯是否正常亮起''' sc = __askForPlateDeviceCom() sc.assertSynComm(request='TestGreenLedPara 1000', response='TestGreenLedParaOK') mcr = manulCheck(u"声光指示测试", u"请确认绿色指示灯正常亮起,蜂鸣器响声正常。") if not mcr: raise TestItemFailException(failWeight=10, message=u'绿色LED指示测试人工判断不通过!')
def T_02_readObuId_A(product): u'''读取OBU内部标识-通过发卡器读取OBUID并与镭雕条码进行绑定''' manulCheck(u"操作提示",u"请将整机放置在发卡器上,待绿灯闪烁后确定","ok") sc = __askForTrader() for i in range(5): try: mac,contractSerial = sc.readObuId() uiLog(u'测试产品标识:'+mac) product.setTestingProductIdCode(mac) product.addBindingCode(u"合同序列号",contractSerial) uiLog(u'绑定合同序列号:'+contractSerial) esamVersion = sc.getEsamVersion() uiLog(u'ESAM版本:'+esamVersion) __writeToLocalRecord(mac,product.getTestingSuiteBarCode(),contractSerial) #记录到本地文件 break except Exception,e: print e time.sleep(0.1)
def T_03_inventory_A(product): u"清点测试-检测是否可能完整清点所有数量的标签" manulCheck(u"操作提示", u"请确认阅读器单板串口、电源、天线连接完好,点击OK开始测试", "ok") rd201 = __getReader() continueCount = 0 for i in range(1, 11): count = len(rd201.inventoryTags()) if count >= PARAM["RD201TargetTagCount"]: continueCount += 1 else: continueCount = 0 uiLog(u"第%d次清点到标签数量:%d" % (i, count)) if continueCount >= PARAM["continuesTagCount"]: return {u"测试清点数量": count} raise TestItemFailException(failWeight=10, message=u'读取标签数量测试不通过,数量不够', output={u"测试清点数量": count})