最近遇到 webservice 接口,想用 python 的第三方库实现测试。遇到如下问题,希望能有大神指导下。谢谢
在 soapui 上的报文截图: 查询接口:
认证查询接口:
自己写的 python 脚本(看到网上资料写的):
运行 python 脚本时,认证查询接口使用字典的方式传参可以成功运行。但是运行查询接口却报错,(查询接口 Entities 是可以同时传入多个的,进行批量查询),请问大神这种该怎么传参才能正常运行呢
报错如下:(其中圈出来的是接口参数名,报错的时候这个是不固定的,有可能是其他参数名)
自己先顶一下,大神快来啊,坐等大神
批量查询的那个接口,数据外面加个 [ ] 套住,它支持查多条数据,你应该要传列表而不是字典。
试过,还是会报一样的错
你意思是这样 也试了还是报一样的错误
是,看起来你的 IsForce 放错地方了,要在列表外面、或直接删掉(是可选参数吧?)
必填参数,在一个群里问了下,有人说是因为 suds 库是老版本的,要更新个新的。可以这样么
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 传参的格式对比:
谢谢,已经搞定,
是吧 我也踩过这个坑