最近遇到 webservice 接口,想用 python 的第三方库实现测试。遇到如下问题,希望能有大神指导下。谢谢
在 soapui 上的报文截图:
查询接口:
认证查询接口:
自己写的 python 脚本(看到网上资料写的):
运行 python 脚本时,认证查询接口使用字典的方式传参可以成功运行。但是运行查询接口却报错,(查询接口 Entities 是可以同时传入多个的,进行批量查询),请问大神这种该怎么传参才能正常运行呢
报错如下:(其中圈出来的是接口参数名,报错的时候这个是不固定的,有可能是其他参数名)
自己先顶一下,大神快来啊,坐等大神
批量查询的那个接口,数据外面加个 [ ] 套住,它支持查多条数据,你应该要传列表而不是字典。
是,看起来你的 IsForce 放错地方了,要在列表外面、或直接删掉(是可选参数吧?)
IsForce 移到列表外,这个试了么?
确实参数是你说的那样,isforce 是单独出来的一个参数不能写到一起。所以我这么写了
首先最外面的{}表示用字典传整个参数,然后 [] 表示一个实体(多个 [] 就是多个实体),[] 中的{}表示实体内的参数,最后 isforce 这个参数再单独写在{}里。但是这么写会报错 invalid syntax(无效的语法);应该是格式哪里错了,
按照下面的方法试一下呢?
InvoiceQuerydata = {
"IsForce": False,
"Entities": {
"AccountAmount": "",
"AuthenticationAmount": "",
"CheckDigit": "183613",
"InvoiceCode": "012001700111",
"InvoiceNumber": "40287711",
"InvoiceType": "002",
"PrintDate": "2017-11-02",
"TotalAmount": "63.22"
}
}
query = client.service.InvoiceQuery(**InvoiceQuerydata)
截个 SoapUI 写了参数的图,和你的 python 写的参数对比一下看看是哪里不同。怀疑还是你传参数的格式不对
非常感谢大大家帮忙,已经搞定了,确实是格式没写对,下面发一个 soapui 和 python 传参的格式对比: