当前位置:文档之家› python实现接口测试

python实现接口测试

刚进一个新公司,可能要做接口测试,没有用过工具,抄了几行代码,根据自己的理解整理一下,供自己以后学习备用
贴上源码,也希望感兴趣的朋友一起讨论,mail: lnbcc0727@
使用说明:1.XML可以根据需要,组织测试案例,
2.EXCEL除了预期结果列要写上预期之外,其它列不用填写
3.源码实现执行XML案例,然后与EXCEL中预期做对比,最后将测试结果写入
EXCEL中(执行案例时不要打开EXCEL,以免影响写入操作)
一、XML案例源码(casedata.xml)
<?xml version="1.0" encoding="utf-8" ?>
<Services project_name="系统名称">
<servrice name="1" detail="name写相要测的服务名称">
<Operation id="TEST1" name=""
detail="每一个operation是一种接口,可增加Operation 在一个脚本中执行多个接口测试"
url="https:///" action="post">
<case id="idInputLine" detail="正确可通过的一组输入的参数">
<Parameter name="name" value="deng032ke@"/>
<Parameter name="pwd" value="mypassword"/>
</case>
<case id="idInputLine" detail="失败案例">
<Parameter name="idInputLine" value="deng032ke@"/>
<Parameter name="pwdInput" value="mypasswordk"/>
</case>
<case>
......
</case>
......
</Operation>
........
<Operation>
</Operation>
</servrice>>
</Services>
二、保存结果的EXCEL(WebServiceCases.xlsx)
三、python源码:
import requests
from xml.dom.minidom import parse
from openpyxl.reader.excel import load_workbook
# 读取XML案例和存有结果的excel
AUTO_RESULT=u"WebServiceCases.xlsx"
case_file=open(u"casedata.xml","rb")
tree=parse(file=case_file)
collection=tree.documentElement
operation_list=collection.getElementsByTagName("Operation")
print(operation_list)
book=load_workbook(AUTO_RESULT)
print(book)
sheet_names=book.get_sheet_names()
print(sheet_names)
working_sheet=book.get_sheet_by_name(sheet_names[0])
print (working_sheet)
start_index=2
for operation in operation_list:
uri=operation.getAttribute('url')
action_type=operation.getAttribute('action')
function_name=operation.getAttribute('name')
case_list=operation.getElementsByTagName('case')
print(action_type)
print(function_name)
print(case_file)
# 获得一次测试中所用到的参数的个数,定义保留参数的字典
for case in case_list:
parameter_list=case.getElementsByTagName('Parameter')
length=len(parameter_list)
print (length)
json_data={}
# 生成一个字典,字典中保留了所用到参数及所对应的测试数据
for index in range(length):
print ("index is:"+str(index))
name=parameter_list[index].getAttribute('name')
value=parameter_list[index].getAttribute('value')
json_data[name]=value
if action_type=="post":
print (json_data)
# 输入参数后系统响应
response=requests.post(uri,data=json_data)
case_id_locator='A'+str(start_index)
working_sheet.cell(case_id_locator).value=start_index book.save(AUTO_RESULT)
#将测试中所用到的URL写到测试结果中
service_url_locator='B'+str(start_index)
working_sheet.cell(service_url_locator).value=uri
book.save(AUTO_RESULT)
# 将XML文件中保存的所要测试的方法保存在结果表中。

function_name_locator='C'+str(start_index)
working_sheet.cell(function_name_locator).value=function_name
book.save(AUTO_RESULT)
# G列保存系统响应的内容
actual_result_locator='G'+str(start_index)
working_sheet.cell(actual_result_locator).value=response.content
book.save(AUTO_RESULT)
# 预期结果事先写在E列,脚本读取预期结果
expect_resutl_locator='E'+str(start_index)
expect_content=working_sheet.cell(expect_resutl_locator).value
run_result_locator='H'+str(start_index)
# 保存结果
# 如果预期的内容(expect_content)和响应的内容一致,刚通过,否则案例失败if expect_content == response.content:
print ("true")
working_sheet.cell(run_result_locator).value='PASS'
else:
print("false")
working_sheet.cell(run_result_locator).value='FAIL'
book.save(AUTO_RESULT)
# get方法响应内容
elif action_type=="get":
response=requests.get(uri,data=json_data)
print(response)
print("get the webserveric:"+ str(start_index))
start_index+=1。

相关主题