python unittest 測試筆記(二):使用Requests


1. Requests 唯一的一個非轉基因的 Python HTTP 庫,人類可以安全享用。
[Python Requests快速入門 :]http://cn.python-requests.org/zh_CN/latest/

2. 沒有經過測試的東西都是不完整的。
[測試 Flask 應用]http://docs.jinkan.org/docs/flask/testing.html

3. Requests接口測試實例
(1)導入需要的模塊,並創建unittest.TestCase(這里默認安裝好了Requests, 如果沒有, pip install requests)

 1 # coding=utf-8
 2 import json
 3 import unittest
 4 
 5 import os
 6 from nose.tools import *
 7 from tests import helper
 8 from flask import create_app, db
 9 from flask.models import Warehouse, Provider, Category, \
10     Product, Stock, ShoppingCartGroup, shoppingcart, ShoppingCartItem, User, Order
11 from helper import generate_user, create_warehouse, create_stocks
12 from login_page import login
13 from forgery_py import name, address, currency, basic, lorem_ipsum
14 import random
15 
16 
17 class RESTfulAPITest(unittest.TestCase):
18     def setUp(self):
19         self.app = create_app('testing')
20         self.app_crx = self.app.app_context()
21         self.app_crx.push()
22         self.client = self.app.test_client()
23 
24         db.drop_all()
25         db.create_all()
26 
27         user = generate_user(self.app)
28         login(self, user.email, user.password)
29         self.user = user
30 
31         from data import seeds
32         seeds.all_(self.app)
33 
34     def tearDown(self):
35         self.app_crx.pop()

(2)利用Requests進行接口測試。

 1     def test_if_imoport_check_works(self):
 2         _url = '/'  #測試的接口
 3         _dir = './data/samples/orders/commons'  #預設的json文件
 4 
 5         def pass_extensions(_file):
 6             filename, file_extension = os.path.splitext(_file)
 7             if file_extension in ['.xlsx' '.cvs']:
 8                 data = {'file': open(os.path.join(root, file), 'rb')}
 9                 response = self.client.post(_url, data=data)
10                 actual_data = json.loads(response.data)
11 
12                 assert_equal(response.status_code, 200)
13                 assert_greater(len(actual_data), 0)
14                 assert_greater(len(actual_data.get('file')), 0)
15                 assert_is_none(actual_data.get('errors'))
16 
17         for root, dirs, files in os.walk(_dir):
18             [pass_extensions(file) for file in files]

 (3)測試網頁返回的狀態碼

 1     def test_order_list(self):   #定義order list() 方法的測試用例
 2         response = self.client.get('order/list.html')   
 3         assert_not_equal(response.status_code, 200) #判斷返回的狀態碼,確定html 是否可用。



test_order_list繼承自unittest.TestCase,是一個測試用例。

response=requests.get(self.base_url,params=self.list),get方法中兩個參數分別是URL和傳遞的參數。請求的url其實就是html 。后面加上個斷言,用戶判斷響應是否與預期一致,這里是響應狀態碼是否等於200。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM