python msp_MSP系统使用python语言实现接口自动化

该博客介绍了如何使用Python的unittest进行接口自动化测试,特别是针对MSP门诊系统的接口。主要内容包括封装数据请求函数,创建主表和明细表数据,整合业务数据格式,并通过unittest编写测试用例和测试集进行接口测试。
摘要由CSDN通过智能技术生成

参考文档:http://blog.csdn.net/xiaoxinyu316/article/details/53170463python利用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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值