接口测试工作心得记录一

最近测试公司新的app,首页帖子列表逻辑是基于用户行为帖子会发生排序变化的需求,越来越发现还是通过接口测试会很方便的,比如说该帖子打上标签之后会排到后面,这个你通过前端功能去找这个帖子难度太高了,毕竟好多测试环境数据帖子都是从别的库里面同步过来的,这样的话可以通过请求接口遍历response的postid来计算该帖子在第几页,还能测试帖子分页的时候加载是否会有重复等等,这几天边测试也边写了一些还学到一下新东西还是高兴地,记录出来看看谁会用到。

先说说接口返回response的数据结构吧

{

"code":200,

"data":{

"list":[{

"title":"",

"post_id":"",

"publist_id":"",

 },{

"title":"",

"post_id":"",

"publist_id":"",

}...  ]

 }

"last_page":"",

"current_page":""

 }

这是典型一个帖子列表的结构展示response['data']['list']是一个列表,每一个元素又是字典格式key对应展示字段,value就是对应数据库的值。

我们把这个接口定义为postlist,想测试这样一个case:用户点击一个职位选择不感兴趣后,该职位一天内就不会返回给用户。

rd做法是,客户端就记录该postid在每次上传的时候都会在request['disable_id']通过列表的形式上传给postlist接口,

我的思路:既然有分页那么request['page']这个参数就要记录你要请求第几页,首先我会请求postlist接口,page=1,动态的拿到resposne['lastpage']的值,这样我才能知道我要请求多少次接口,然后取出来postid进行比对

url=self.url+"postlist"

page=1

#表示不感兴趣的职位id

disable_id=2331311

params={"latlng":"40,116,116.30485",

        "city_id":"12",

        "tag_id":["27","26","20","1"],

        "disable_id":[str(disable_id),],

        "page":1

        }

#第一次请求接口

request=self.request.post(url=url,params=params)

response=request.json()

#当page小于最大值是就循环

while page<response['data']['last_page']+1:

            params={"latlng":"40,116,116.30485",

                "city_id":"12",

                "tag_id":["27","26","20","1"],

                "disable_id":[str(disable_id),],

                "page":page

                }

            request1=self.request.post(url=url,params=params)

            response2=request1.json()

#遍历resposne['data']['list']的列表

            for list_value in response2['data']['list']:

                print "list_vlaue:",list_value['post_id'],type(list_value['post_id'])

#取出post_id和disable_id进行比对

                if list_value['post_id']==disable_id:

                    print "current_page=",page

                    #通过json.dumps()可以打印出正常json()格式的数据,方便查看,要不然打印的都还是一行,太丑了

print json.dumps(list_value, sort_keys=True, indent=2)

                    raise Exception("已经找到")

                else:

                    continue

            page=page+1

因为写的着急就没有封装,这里面牵扯到一个知识点就是python在多层循环的时候使用break只能跳出break该层的循环python不支持多层跳出,我这里面省事就直接抛出异常了,其实这个太粗暴了,我下一个例子里面修改了一下,当时写的时候没有想到,后来想到了怎么出去了,很简单只要把while里面的判断条件page的值置成不符合判断条件即可,刚开始还想怎么一层一层的跳出去...。也可以在while前面加一个for循环多次遍历看看返回结果,根据不同的测试点吧。

测试点2:一般情况职位列表页接口都会分页后返回给客户端,客户端通过request['page']参数来控制,这样就有测试点,接口response中postid是否会重复的问题,这个问题一般服务端都会出现重复的问题(新浪微博貌似是一直都有),这里面就有一个验证的问题了

思路:我的想法呢把每一页的postid都取出来,通过append加到列表里面,遍历列表通过list.count(value)这个方法来判断postid是否有重复。

url=self.url+"postlist"

        page=1

        postId=[]

        params={"latlng":,

                "city_id":"",

                "tag_id":"",

                "page":1

                }

        request=self.request.post(url=url,params=params)

        response=request.json()

        

        while page<response['data']['last_page']+1:

            params={"latlng":"40,116,116.30485",

                "city_id":"12",

                "tag_id":["27","26","20","1"],

                "page":page

                }

            request1=self.request.post(url=url,params=params)

            response2=request1.json()

            for list_value in response2['data']['list']:

                print "list_value:",list_value

                postId.append(list_value["post_id"])

            page=page+1

            print "page:",page

        

        print "len_postid:",len(postId)

        print "postid:",postId

        

        for value in postId:

            if postId.count(value)!=1:

                print "有重复数据,数据为:",value

                print "出现的次数",postId.count(value)

                print "出现的索引位置",postId.index(value)

                print "页数:",postId.index(value)/17

                break

主要都差不多,还是熟练的掌握python 列表和字典的常用方法,还是很好用的。这个玩法还是很多的,可以根据不同的测试点完去弄,大概就这些吧,还要去学点别的东西。









猜你喜欢

转载自blog.csdn.net/gogoboi_jin/article/details/77247119
今日推荐