接口测试 接口测试:httpclient 接口测试,返回是 html 页面,如何验证返回结果正确

· 2016年07月20日 · 最后由 丧尸没有牙齿 回复于 2018年08月10日 · 3597 次阅读

进行接口测试的时候,返回的结果是 html 页面,想不好怎么验证该结果的正确性,我本来是想:

  1. 通过验证返回页面里的跳转链接是否正确,页面上的元素的值是否一致,操作了之后再获取页面,值是否还是一致来校验正确性,但是总觉得这样的验证方法不是最好的,大家是怎么验证的?
共收到 14 条回复 时间 点赞
#16 · 2016年07月20日 Author

我个人觉得返回的 html 页面,最重要的就是要保证页面上的链接都能正常跳转,显示的元素值是正确的,就 ok 了

文字匹配不行吗?

#3 · 2016年07月20日 Author

#2 楼 @pacerron 怎么匹配,整个页面的内容做比较?

#13 · 2016年07月20日 Author

#2 楼 @pacerron 本地存一个文本,然后两个比对,是这个意思么?

是的

建议检查标准重要标签
检查页面所有链接有效就可以了
实际的交互 ,功能性测试就可以

7楼 已删除
9楼 已删除

基本思路,先把期望结果保存成文件,把返回的结果跟跟期望结果对比,如果返回的 html 比较简单,直接当成一个字符串对比就好了,次次可能会变化的部分想办法用正则表达式去除。如果 html 比较复杂,比如包含大量 js 或者 css 代码,可以用一些开源的操作 dom 的库只把有用的节点取出来校验。我用 node 做有两个经常用到的库 cheerio 和 jsdom,其他语言去 Github 搜一下。又或者使用 XML 的一些方法比如 xpath 取有用的节点校验。

#7 · 2016年07月22日 Author

好的,谢谢

引用
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
然后转换
Document doc = Jsoup.parse(rtnHtml)
再解析
String destId = doc.select("a[class=cancelProp]").get(0).attr("destid");
String timePriceId=doc.select("input#timePriceId").attr("value");

接口返回的格式好像没有 html 吧,你们没有做前后端分离吧

顶 11 楼的,用 jsoup 直接就可以解决了,.attr 的方法可以取到你想要的元素的各种属性
btw,jsoup 也是爬虫利器

#14 · 2016年07月25日 Author

#13 楼 @hjhjhghghg
#11 楼 @success
我就是这么干的,我只是再想,怎么样去校验比较好,算这个页面是正常的,关键是校验正确性,检查哪几项比较好,嘻嘻

最近刚遇到这个 python 的框架下用 lxml 和 xpath 轻松解决

—— 来自 TesterHome 官方 安卓客户端

gmike 回复

求解怎么解决的,我这边想校验 html 中的一些关键字和图片是否正确

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册