最近在写接口测试时,需要报文内容为xml格式的,在网上没有搜索到相关的博客内容。
经过自己的摸索终于能够使用httprunner实现了,下面提供了两种实现方式供大家选择(主要维护yml格式)。
方案1:将报文写在用例中
首先通过postman进行接口测试,并使用抓包工具(fiddler、charle)进行抓包。
抓包之后导出为.har文件格式。
然后通过命令,转化为yaml格式
```bash
命令:har2case sssss.har -2y
(venv) D:\work\wy_only\CtIntfDemo>har2case ./har/sssss.har -2y
2020-11-05 10:02:14.441 | INFO | httprunner.ext.har2case.core:gen_testcase:356 - Start to generate testcase from D:\work\wy_only\CtIntfDemo\.\har\sssss.har
2020-11-05 10:02:14.448 | INFO | httprunner.ext.har2case.core:_make_testcase:347 - Extract info from HAR file and prepare for testcase.
2020-11-05 10:02:14.520 | INFO | httprunner.ext.har2case.utils:dump_yaml:108 - dump testcase to YAML format.
2020-11-05 10:02:14.545 | INFO | httprunner.ext.har2case.utils:dump_yaml:115 - Generate YAML testcase successfully: D:\work\wy_only\CtIntfDemo\.\har\sssss.yml
2020-11-05 10:02:14.551 | INFO | httprunner.ext.har2case.core:gen_testcase:377 - generated testcase: D:\work\wy_only\CtIntfDemo\.\har\sssss.yml
Sentry is attempting to send 0 pending error messages
Waiting up to 2 seconds
Press Ctrl-Break to quit
转化后的yml内容如下:
需要将带有转义字符进行格式转换:
譬如:\r ->\\r
如果有报文中有汉字,需要将汉字转化为了acsii码或英文
然后运行yml
命令:hrun ./har/sssss.yml
执行成功。
方案2,将报文内容写在文档中,用例中只需要调用即可
来啦来啦,来第二波,为了实现参数化,真的杀死了自己好多脑细胞,不过还是被我搞出来了,服了自己!!!!
先来一波代码分享:
config:
name: "batch user order sync interface"
base_url: "https://192.152.135.59:8080"
verify: False
teststeps:
-
name: BatchOperatorNotify
variables:
file_path: "batchOrderSync.xml"
m_encoder: ${get_file_std($file_path)}
request:
method: POST
url: /Sync/OperatorNotify/User
headers:
Content-Type: application/xml
data: $m_encoder
validate:
- eq: ["status_code", 200]
将报文内容保存在batchOrderSync.xml中,使用get_file_std()方法将文件内容读取被返回给m_encoder变量;
最后将变量m_encoder付给data关键字。
def get_file_std(path):
with open(path, "r+", encoding='utf8') as f:
return f.read()
batchOrderSync.xml文件内容:
最终运行成功,后续会将batchOrderSync.xml作为模块进行参数。