测试框架HttpRunner—4.常见问题

常见接口工具对比:

postman:不适合自动化,强行做也可以搞,不是最优解

jmeter:用例管理是针对性能设计的,管理case不方便,jmeter+junit完善后可以解决,不推荐

requests:推荐

httprunner:基于requests封装的国内做的比较好的接口测试框架,推荐

HttpRunner_问题1:yml转pytest用例?

解决:

hmake xx.yml

HttpRunner_问题2:如何解决多模块的函数封装?

原理:

httprunner运行用例,会对用例里面所调用的函数进行正则匹配,然后加载debugtalk.py中对应的函数。所以,只要保证函数能入dbugtalk.py即可。

解决:

(1)新建libs目录;
(2)不同的模块需要封装的函数,放在不同的文件中;
(3)在debugtalk.py中导入该模块。

HttpRunner_问题3:如何解决登录后产生十几个接口?

背景:

登录后各种重定向,最终产生了16个接口,将特性界面的接口cookie、token进行分析后,发现从登录用例里面传递出了3个cookies参数,加上token是4个,开启分析登录接口模式,接口间各种传参、重定向,传的我欲仙欲死,最终搞定。这几天在技术群听到说httprunner是登录后,后面的接口步骤都是基于登录产生的临时session,这样的话岂不是解决了我这十几个接口的问题,省去了每次调用接口都要跑十几个接口,跑完200多个用例,日志文件20M,我凑!
解决:
(1)直接写了登录的post接口,不进行跨脚本传参,其中的某参数是登录的get接口从返回的html文件中动态获取的,
(2)用例里面,调用登录接口,
(3)调用获取token的接口(刚进入界面的时候会出发这个接口)
(4)调用你要测的接口,其中.header()里面只需要传入token这个变量即可,cookies是自动继承上面登录的临时会话session中的cookies,

HttpRunner_问题4:如何在debugtalk.py中提取.env文件里的值?

场景1:用pathlib模块提取.env文件中某个变量的值

 

场景2:httprunner提取.env文件中某个变量的值
若还需对读取的环境变量做进一步处理,则可以在 debugtalk.py 通过 Python 内置的函数 os.environ 对环境变量进行引用,然后再实现处理逻辑。

 

HttpRunner_问题5:大量的异常场景,如何进行参数化处理?

解决:

在参数化文件中,将校验参数和对应的入参相关联即可。

 

HttpRunner_问题6:因登录重定向产生的JSON()报错?

因登录后重定向,产生了太多的接口,在用session处理,获取各种token时,发现返回的数据无法.json()处理,报错:json.decoder.JSONDecodeError:Expecting value: line1 colunm 1 (char())

 

HttpRunner_问题7:下载文件的接口报错505?

(1)排查入参,初步判定是入参哪里的问题
(2)通过比较:har2case 转换其他下载文件的脚本,对比后发现是with_data()这里写成了with_json()。

 

HttpRunner_问题8:在多边形配置页面点击导出多边形,可在‘异步报告导出界面’下载导出的文件,下载导出的文件返回200,body为空?

(1)返回200,初步判定入参没问题,
(2)body为空,是因为导出接口和下载文件的接口,没有做等待设置,
(3)解决办法:下载文件的接口前添加测试前置:setup_hook(“hook_sleep(5)”)。

HttpRunner_问题9:跑导出多边形导出性能测试用例失败,报错:not found testcases?

跑接口性能脚本注意事项:
(1)执行命令:locusts -f testcases/xxx/xxxtest.py【必须从testcases目录出发,文件以test结尾】
(2)脚本不能使用parameters做初始的参数化

HttpRunner_问题10:调测接口经常报错,针对不同响应码如何排查?

302:接口重定向,意思就是访问了该接口后,没有返回200,直接又去访问当前接口里的refer的参数。这个参数是个新的地址。
400:请求的语法错误 >>> body题哪里错了 >>> 开发悄悄改了参数
404:url错了 >>> 少复制了字母,空格等
409:cookie传递错误 >>> 查询cookie的整个传递过程
505:body哪里错了,1个单词1个单词的排查 >>> 多复制少复制了内容,多写了个{ 等。
 

HttpRunner_问题11:如何利用pytest创建测试套(用于升级环境准备测试数据的测试套)?

1、pytest.ini配置文件中,添加标签markers = data

 

2、在写好的httprunner用例里面,class前面直接添加

 

3、suiit.py文件执行,这里会自动执行所有标记为data的测试用例:

 

………………………………..后续有遇到新的问题补充………………………………………………

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值