前面讲到xml格式的接口测试,我将报文内容xml保存到文件中,通过读取文件进行报文发送。
但是因报文内容可能会根据业务变化而发生改变,所以需要将文件中部分数据进行参数化,涉及到模板渲染,我使用的是jinja2库。
先上代码如下:
from jinja2 import Environment
from jinja2 import FileSystemLoader
def replace_content(filename, custid):
"""
读取文件并将参数进行替换模板内容
:param
:return:组装好的返回报文内容
"""
env = Environment(loader=FileSystemLoader("data", 'utf-8'))
template = env.get_template(filename)
soap_body = template.render(cust_id=custid)
print(soap_body)
return soap_body
将data文件夹下的的filename文件中cust_id变量实例化为custid
形参定义格式为:{{cust_id}}
httprunner接口代码:
variables:
#file_path: "data\\batchOrderSync.xml" #直接读取文件
#m_encoder: ${get_file_std($file_path)} #直接读取文件
custid: 311000004397000 #将文件模板内容参数实例化
filepath: batchOrderSync.xml #将文件模板内容参数实例化
m_encoder: ${replace_content($filepath,$custid)} #将文件模板内容参数实例化
#retbody: ${str_bytes($xmlinfo)}
request:
method: POST
url: /Sync/BatchNotify/User
headers:
Content-Type: application/xml
data: $m_encoder
最终运行时,将cust_id替换成为311000004397000