zoukankan      html  css  js  c++  java
  • MSP系统使用python语言实现接口自动化

    参考文档:http://blog.csdn.net/xiaoxinyu316/article/details/53170463  python利用unittest进行测试用例执行的几种方式 

    总策略:python利用unittest  通过testsuite来执行测试用例

    总结构:

    第一个部分:  mspLibrary.py

    主要功能是:发送request请求,获取返回的状态码

    这次写的是MSP门诊部门的接口。门诊的接口data数据主要有2个部分组成:主表数据和明细表数据。data部分的数据,根据实际业务写函数来组成满足条件的data数据格式。

    #coding=utf-8
    import requests
    import json
    
    #封装数据
    def msp_getData(key, value, isEnd = False):
        if isEnd: #最后一个不需要加 ,
            data = '"' + key + '"' + ':' + '"' + value + '"'
        else:
            data = '"' + key + '"' + ':' + '"' + value + '"' + ','
        return data
    
    #发送request请求
    def msp_request(url,data,headers):
        result = []
        response = requests.post(url,data,headers = headers)
    
        result.append(response.status_code)
        if response.status_code == 200:
            result.append(response.text)
    
        return result
    
    def msp_getJsonValue(jsonData, key):  #key传入这个参数,利用传化成的字典 通过:字典名[key名]获取key的值
        text = json.loads(jsonData)   #利用json模块内的loads函数,将字符串转化成字典
        return text[key]
    
    #门诊报文 - 获取主表数据
    #将主表数据的每个属性设置成变量,给定一个初始值
    def mzbw_getMainTable(originalId="183011270",
           		 areaCode="520222",
           		 areaName="白银区",
           		 medicineCode="5202220905040021",
    		patientId="806953",
    		identifyId="520222197307203610",
    		name="liu0401",
    		sex="1",
    		age="25",
    		national="1",
    		newBornStatus="0",
    		height="178",
    		weight="65",
    		bornWeight="6.2",
    		pregStatus="0",
    		pregTime="0",
    		momChildBind="0",
    		insuredType="2",
    		clinicType="1",
    		allergyDrugs="null",
    		hospId="5100",
    		hospName="白银区人民医院",
    		hospLevel="3",
    		doctorId="123456",
    		doctorName="定",
    		diagnoseAreaCode="N71.101",
    		diagnoseArea="慢性子宫内膜炎",
    		diagnoseStdCode="",
    		diagnoseStd="",
    		isSingleDisease="3",
    		payType="1",
    		recipeDate="2017-07-13 00:00:00",
    		settleDate="2017-07-13 00:00:00",
    		totalCost="50000.0000",
    		medicalCost="2557.4000",
    		drugCost="2714.4000",
    		drugInsuredCost="2714.4000",
    		serCost="27.4000",
    		serInsuredCost="27.4000",
    		matCost="27.4000",
    		matInsuredCost="27.4000",
    		balanceCost="262527.4000",
    		startingLine="27.4000",
    		balanceCostSum="2577257.4000",
    		disableType="0",
    		uploadDate="2017-07-13 12:22:48",
    		uploadUnit="1",
    		indate="2017-07-13 12:22:48",
            clinicDep="内科"):
        data = ""
        data += msp_getData("originalId", originalId)
        data += msp_getData("areaCode", areaCode)
        data += msp_getData("areaName", areaName)
        data += msp_getData("medicineCode", medicineCode)
        data += msp_getData("patientId", patientId)
        data += msp_getData("identifyId", identifyId)
        data += msp_getData("name", name)
        data += msp_getData("sex", sex)
        data += msp_getData("age", age)
        data += msp_getData("national", national)
        data += msp_getData("newBornStatus", newBornStatus)
        data += msp_getData("height", height)
        data += msp_getData("weight", weight)
        data += msp_getData("bornWeight", bornWeight)
        data += msp_getData("pregStatus", pregStatus)
        data += msp_getData("pregTime", pregTime)
        data += msp_getData("momChildBind", momChildBind)
        data += msp_getData("insuredType", insuredType)
        data += msp_getData("clinicType", clinicType)
        data += msp_getData("allergyDrugs", allergyDrugs)
        data += msp_getData("hospId", hospId)
        data += msp_getData("hospName", hospName)
        data += msp_getData("hospLevel", hospLevel)
        data += msp_getData("doctorId", doctorId)
        data += msp_getData("doctorName", doctorName)
        data += msp_getData("diagnoseAreaCode", diagnoseAreaCode)
        data += msp_getData("diagnoseArea", diagnoseArea)
        data += msp_getData("diagnoseStdCode", diagnoseStdCode)
        data += msp_getData("diagnoseStd", diagnoseStd)
        data += msp_getData("isSingleDisease", isSingleDisease)
        data += msp_getData("payType", payType)
        data += msp_getData("recipeDate", recipeDate)
        data += msp_getData("settleDate", settleDate)
        data += msp_getData("totalCost", totalCost)
        data += msp_getData("medicalCost", medicalCost)
        data += msp_getData("drugCost", drugCost)
        data += msp_getData("drugInsuredCost", drugInsuredCost)
        data += msp_getData("serCost", serCost)
        data += msp_getData("serInsuredCost", serInsuredCost)
        data += msp_getData("matCost", matCost)
        data += msp_getData("matInsuredCost", matInsuredCost)
        data += msp_getData("balanceCost", balanceCost)
        data += msp_getData("startingLine", startingLine)
        data += msp_getData("balanceCostSum", balanceCostSum)
        data += msp_getData("disableType", disableType)
        data += msp_getData("uploadDate", uploadDate)
        data += msp_getData("uploadUnit", uploadUnit)
        data += msp_getData("indate", indate)
        data += msp_getData("clinicDep", clinicDep)
        return data
    
    #门诊报文 - 获取明细表
    #将每个明细表的属性设置为变量,给定一个初始值
    def msbw_getDetailTable(originalId="183022370",
                   			 clinicInfoId="",
                   			 areaCode="520222",
                    		hospItemCode= "Z0101050030a4",
    				hospItemName="蜜炼川贝枇杷膏",
    				areaItemCode="Z0101050030a4",
    				areaItemName="蜜炼川贝枇杷膏",
    				coreItemCode="",
    				coreItemName="",
    				goodsName="蜜炼川贝枇杷膏",
    				dosage="1",
    				spec="1",
    				countNum="1.5",
    				countUnit="克",
    				packNum="2",
    				packUnit="克",
    				saleUnit="克",
    				unit="30.0000",
    				count="2",
    				cost="50.0000",
    				drugRoute="1",
    				drugDoseSingle="1",
    				drugRate="1",
    				drugTime="饭前",
    				drugGoal="治疗",
    				groupNum="001",
    				type="0",
    				drugOrdersStart="2017-07-13",
    				drugOrdersEnd="2117-01-01",
    				exeDate="2017-07-13",
    				docterId="123456",
    				doctorName="meng",
    				doctorTitle="主治医师",
    				recipeDate="2017-07-13 00:00:00",
    				indate="2017-07-13 00:00:00",
    				drugType="1",
    				rate="0.2",
    				drugCatalog="0"):
        data = ''
        data += msp_getData("originalId", originalId)
        data += msp_getData("clinicInfoId", clinicInfoId)
        data += msp_getData("areaCode", areaCode)
        data += msp_getData("hospItemCode", hospItemCode)
        data += msp_getData("hospItemName", hospItemName)
        data += msp_getData("areaItemCode", areaItemCode)
        data += msp_getData("areaItemName", areaItemName)
        data += msp_getData("coreItemCode", coreItemCode)
        data += msp_getData("coreItemName", coreItemName)
        data += msp_getData("goodsName", goodsName)
        data += msp_getData("dosage", dosage)
        data += msp_getData("spec", spec)
        data += msp_getData("countNum", countNum)
        data += msp_getData("countUnit", countUnit)
        data += msp_getData("packNum", packNum)
        data += msp_getData("packUnit", packUnit)
        data += msp_getData("saleUnit", saleUnit)
        data += msp_getData("unit", unit)
        data += msp_getData("count", count)
        data += msp_getData("cost", cost)
        data += msp_getData("drugRoute", drugRoute)
        data += msp_getData("drugDoseSingle", drugDoseSingle)
        data += msp_getData("drugRate", drugRate)
        data += msp_getData("drugTime", drugTime)
        data += msp_getData("drugGoal", drugGoal)
        data += msp_getData("groupNum", groupNum)
        data += msp_getData("type", type)
        data += msp_getData("drugOrdersStart", drugOrdersStart)
        data += msp_getData("drugOrdersEnd", drugOrdersEnd)
        data += msp_getData("exeDate", exeDate)
        data += msp_getData("docterId", docterId)
        data += msp_getData("doctorName", doctorName)
        data += msp_getData("doctorTitle", doctorTitle)
        data += msp_getData("recipeDate", recipeDate)
        data += msp_getData("indate", indate)
        data += msp_getData("drugType", drugType)
        data += msp_getData("rate", rate)
        data += msp_getData("drugCatalog", drugCatalog, True)
    
        return data
    
    #将主表数据和明细表数据进行相加,整合,形成最终的data业务数据格式
    def msbw_getAllData(mainTable, detailTable): data = 'data={ "outpData": { ' data += mainTable data += '"cureDetailList": [{ ' data += detailTable data += ' }], },"finishType":"0" }' data += '&platformCode=mykjyxgs&timestamp=20161118111111&veritify=DV%2B/IYNDELLstC2awpOoJtaB7WReqRk5cU3YFhqCv34=' return data #本模块执行,会执行if判断下的操作,用于本模块的测试函数工作
    if __name__ == "__main__": mainTable = mzbw_getMainTable() detailTable = msbw_getDetailTable() data = msbw_getAllData(mainTable, detailTable) print data #mz_request(data1, data2)

      

    第二个部分:mspxx.py

    主要作用是:将发送request请求中的url,headers数据写入一个类,方便需要的地方进行调用

    #coding=utf-8
    
    import unittest
    
    class MSP(unittest.TestCase):   #继承,继承是继承类类型
      url = 'http://10.12.3.26/auditPort/port/uploadOutpData/1.do' headers = {'Accept-Encoding': 'gzip,deflate', 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'User-Agent': 'Jakarta Commons-HttpClient/3.1', 'Host': '10.12.3.26'}

      

    第三个部分:testcase_originalId.py

     创建测试用例,此部分用于填写测试数据,获取request请求的返回内容,通过设置断点对返回的内容进行判断。

    #coding=utf-8
    
    import unittest
    import sys
    import mspxx
    
    sys.path.append(r"../../lib") #执行本模块,使用的路径
    sys.path.append(r"../lib") #模块被调用时,使用的路径

    import mspLibrary class Test_originalId(mspxx.MSP): #继承一个类 导入这个包,包.类名 def testcase1(self): mainTable = mspLibrary.mzbw_getMainTable(originalId='183011303')
    detailTable = mspLibrary.msbw_getDetailTable(originalId='183022403') data = mspLibrary.msbw_getAllData(mainTable, detailTable) ret = mspLibrary.msp_request(self.url, data, self.headers) #获取继承的类的值,用 self. 的格式
    self.assertEqual(ret[0],200) #设置断点,判断执行返回的状态码值是否等于200 rst = mspLibrary.msp_getJsonValue(ret[1], 'rst') self.assertEqual(rst, '0') #设置断点,判断返回ret的值是否等于0 print ret if __name__ == '__main__': unittest.main()

      

    第四个部分:testsuite_originalId.py

    创建测试集,先获取一个对象,用对象对调相应的函数,将测试用例进行添加,形成测试集合

    #coding=utf-8
    
    import sys
    
    sys.path.append(r'../testcase')   #执行本模块使用的路径
    sys.path.append(r'testcase')   #当模块被调用时使用的路径
    
    import testcase_originalId
    import unittest
    
    def suite1():
        #获取一个suite对象
        suite = unittest.TestSuite()
        #添加测试用例
        suite.addTest(testcase_originalId.Test_originalId('testcase1'))
    
        return suite
    

      

    第五个部分:run.py

    执行测试集

    #coding=utf-8
    
    from testsuite import testsuite_originalId
    import unittest
    
    def run():
        #获取一个runner的对象
        runner = unittest.TextTestRunner()
        #获取一个suite
        suite = testsuite_originalId.suite1()
        #执行
        runner.run(suite)
    
    run()
    

      

  • 相关阅读:
    executable binary cannot run on android marshmallow (android 6.0)
    Android std and stl support
    Android std and stl support
    (OK) static linked & dynamically linked
    (OK)(OK) cross compile quagga-0.99.21mr2.2 for android-x86 in Fedora23
    linux和STL 常用头文件及说明
    Firefox 新增容器标签:可同时登录多个用户
    Android —— API Level
    Android added new permission model for Android 6.0 (Marshmallow).
    (OK) Android adb连接VirtualBox方式
  • 原文地址:https://www.cnblogs.com/liuhuanv/p/8005351.html
Copyright © 2011-2022 走看看