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。