之前写接口测试用的时 JAVA,现在 selenium 进行 UI 测试,需要对比后端返回的数据和页面显示的数据,请问这个情况下如何请求接口呢?
我尝试了 requests,可是需要 header,header 的获取不知道该怎么办呢?
下面是更新的一个具体的问题:
搜索的测试用例包括空搜索,包括特殊搜索,包括按条件搜索……
我如何知道搜索的结果是否正确? 是否要去数据库或者接口取得数据?
如果是从接口取数据,应该如何取?
看了你上面的附言,感觉你这就是接口测试啊,你如果想知道数据是否正确,直接使用接口测试测试接口啊。你这用 ui 测试,用接口进行验证本身就是重复的啊,开发写的代码也是在调用后台接口,你也是在调用后台接口,如果参数都一样,返回也是一样的,起不到任何验证的作用。只能通过数据库查询来验证。
实际上 ui 自动化侧重于功能是否可用,而不在于验证数据是否可靠上面,数据是否正确应该放在接口测试上。
你在 web 端发起一个请求,里面的 headers 传什么你就传什么
当我在 web 端发起请求,header 需要鉴权信息时,我如何知道鉴权信息是多少呢?【前提,正处于 ui 自动化测试中】
你后端返回的数据和你自己请求的接口返回的数据对比?难道后端不是请求的同一个接口吗?为啥还需要对比?
你可以在 html 代码上看下,可能会有记录到 token,或者是登录成功之后会响应信息中会带一个 token,如果你实在找不到你问下你们开发他是怎么拿到的
那现在就姑且人为后台接口是没问题的。你需要验证的点是后台返回的数据前端是否正常显示。基于这个目的,你只要拿到前端请求后台的接口数据做对比就好了。监控接口请求可以使用抓包工具......,刚好我今天提交了一次自动抓包的工具,希望你能用得上。https://gitee.com/guojongg/api2har
我知道,会在 F12 的 network 的 request header 可以拿到,但是我希望在 ui 自动化测试中拿到
抓包是:比如我点击搜索,抓取到这个操作的那个包吗,那这样数据肯定是对的呀,这样做是否无意义?
其实我也在考虑从接口获取数据然后验证 ui 上的数据是否正确是否有合适的方法。
比如现在搜索功能,selenium 自动搜索空,点击搜索,出来的是全部的数据,我如何验证这个全部数据是正确的呢?
UI 测试过程中需要抓包建议使用抓包工具来获取接口返回的 token,推荐使用 mitmproxy。也可以做模拟的接口返回数据进行 UI 测试
。。。无语了,你好像不是很理解我的话,打个比方,假如你请求的时候的 token 是来自于你登录之后的响应内容,那么你就要先请求一下登录接口,然后在他的响应内容中拿到这个 token 然后存起来,到你发起获取页面信息的请求的之前,在请求的 headers 中再加上之前拿的这个 token
这个问题可以分为两个部分:
如果 1OK 了,那么 2 可以使用造数据或者 Mock.
如果 1 不 OK,那么 2 可以使用 Mock.
感觉不理解你到底想测什么了,你如果只是想验证搜索结果是否正确应该直接在 selenium 代码中写断言啊,跟接口测试有什么关系呢?
看了你上面的附言,感觉你这就是接口测试啊,你如果想知道数据是否正确,直接使用接口测试测试接口啊。你这用 ui 测试,用接口进行验证本身就是重复的啊,开发写的代码也是在调用后台接口,你也是在调用后台接口,如果参数都一样,返回也是一样的,起不到任何验证的作用。只能通过数据库查询来验证。
实际上 ui 自动化侧重于功能是否可用,而不在于验证数据是否可靠上面,数据是否正确应该放在接口测试上。
如果要获取 token 的话,可以试下用 JS 获取;
token = driver.execute_script('return localStorage.getItem("token");')
不过你要 F12 看一下,是 localStorage 还是 SessionStorage