1. 程式人生 > >python+requests+json 接口測試實戰

python+requests+json 接口測試實戰

簡介 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 接口測試實戰