python+requests+json 接口測試實戰
阿新 • • 發佈:2018-11-10
簡介 cte 索引 get family pass author .com 項目
實際項目中用python腳本實現接口測試的步驟:
1 發送請求,獲取響應 》》2 提取響應裏的數據,對數據進行必要的處理 》》3 斷言響應數據是否與預期一致
以豆瓣接口為例,做一個簡單的接口測試吧。使用到的知識涉及requests庫,json庫。
1 發送請求,獲取響應
#coding:utf-8 ‘‘‘ dinghanhua 2018-11-10 接口返回數據為json類型,提取數據實例 ‘‘‘ import requests import json q = ‘python‘ count = 3 url = ‘https://api.douban.com/v2/book/search?q={0}&count={1}‘.format(q,count) request = requests.get(url) #請求並獲取響應
2 json解析響應數據
jsonstr = json.loads(request.text) #json解析響應文本 ‘‘‘解析後的數據格式‘‘‘ print(‘響應解析後的類型:‘,type(jsonstr)) #dict print(‘響應解析後的鍵值對個數:‘,len(jsonstr)) #字典鍵值對個數 for key in jsonstr: #打印出所有的keys print(key ,end=‘ ‘)
3 提取數據及數據處理
‘‘‘取json串裏的值‘‘‘ books = jsonstr[‘books‘] #取books對應的值 # print(type(books)) #list 數組 print(‘books共有%d本書‘%len(books)) #數組元素個數 for book in books: #編輯books取每本書的信息 # print(type(book)) # book的類型 # for key in book: # book的keys # print(key) ‘‘‘取出所需的字段‘‘‘ index = books.index(book) #索引 NO = str(index+1) #第幾本書 average= book[‘rating‘][‘average‘] author = book[‘author‘] #author是數組,可能有多個作者 authors = ‘‘ for au in author: authors += au pubdate = book[‘pubdate‘] title = book[‘title‘] author_intro = book[‘author_intro‘] summary = book[‘summary‘] price = book[‘price‘] ‘‘‘格式化輸出‘‘‘ print(‘NO.{NO}\n書名:{title}\n出版日期:{pubdate}\n平均分:{average}\n定價:{price}\n‘ ‘作者:{author}\n{author_intro}\n內容簡介:{summary}‘.format(title = title, NO = NO, pubdate = pubdate, author = authors, author_intro = author_intro, average = average, price = price, summary = summary))
4 斷言
‘‘‘斷言‘‘‘ expectedtitle = [‘Python編程:從入門到實踐‘,‘利用Python進行數據分析‘,‘Python網絡數據采集‘] #預期結果 if title == expectedtitle[index]: print(‘test pass‘) else: print(‘test fail. The expected title is %s,but the actual title is: %s.‘%(expectedtitle[index],title))
好了,簡單的接口測試腳本完成。完整代碼:
#coding:utf-8 ‘‘‘ dinghanhua 2018-11-10 接口返回數據為json類型,提取數據實例 ‘‘‘ import requests import json q = ‘python‘ count = 3 url = ‘https://api.douban.com/v2/book/search?q={0}&count={1}‘.format(q,count) request = requests.get(url) #請求並獲取響應 jsonstr = json.loads(request.text) #json解析響應文本 ‘‘‘解析後的數據格式‘‘‘ print(‘響應解析後的類型:‘,type(jsonstr)) #dict print(‘響應解析後的鍵值對個數:‘,len(jsonstr)) #字典鍵值對個數 for key in jsonstr: #打印出所有的keys print(key ,end=‘ ‘) ‘‘‘取json串裏的值‘‘‘ books = jsonstr[‘books‘] #取books對應的值 # print(type(books)) #list 數組 print(‘books共有%d本書‘%len(books)) #數組元素個數 for book in books: #編輯books取每本書的信息 # print(type(book)) # book的類型 # for key in book: # book的keys # print(key) ‘‘‘取出所需的字段‘‘‘ index = books.index(book) #索引 NO = str(index+1) #第幾本書 average= book[‘rating‘][‘average‘] author = book[‘author‘] #author是數組,可能有多個作者 authors = ‘‘ for au in author: authors += au pubdate = book[‘pubdate‘] title = book[‘title‘] author_intro = book[‘author_intro‘] summary = book[‘summary‘] price = book[‘price‘] ‘‘‘格式化輸出‘‘‘ print(‘NO.{NO}\n書名:{title}\n出版日期:{pubdate}\n平均分:{average}\n定價:{price}\n‘ ‘作者:{author}\n{author_intro}\n內容簡介:{summary}‘.format(title = title, NO = NO, pubdate = pubdate, author = authors, author_intro = author_intro, average = average, price = price, summary = summary)) ‘‘‘斷言‘‘‘ expectedtitle = [‘Python編程:從入門到實踐‘,‘利用Python進行數據分析‘,‘Python網絡數據采集1‘] #預期結果 if title == expectedtitle[index]: print(‘test pass‘) else: print(‘test fail. The expected title is %s,but the actual title is: %s.‘%(expectedtitle[index],title))
the end!
python+requests+json 接口測試實戰