在Python中注册蓝图Flask unittest不起作用

时间:2017-10-16 02:21:51

标签: python python-3.x flask python-unittest

我可以确认我的unittest和api已经工作了但是在将我的东西移到蓝图后,我的unittest在api仍在工作时仍然失败。我很难过,正在寻找想法。

以下是相关代码:

# project/app/__init__.py

from flask_sqlalchemy import SQLAlchemy
from flask import request, jsonify, abort, Flask

from instance.config import app_config

db = SQLAlchemy()

def create_app(config_name):
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_object(app_config[config_name])
    app.config.from_pyfile('config.py')
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db.init_app(app)

    from app.api import api
    app.register_blueprint(api, url_prefix='/api')

    return app

蓝图文件

# project/app/api/__init__.py

from flask import Blueprint

api = Blueprint('api', __name__)

from app.api import campaigns

测试文件

# project/test_campaigns.py

import unittest
import json
from app import create_app, db
from flask import Flask, Blueprint
from instance.config import app_config

class CampaignsTestCase(unittest.TestCase):
    """Campaigns Test Case"""

    def setUp(self):
        """Define test varibles and initialize app."""
        self.app = create_app(config_name="testing")
        self.client = self.app.test_client
        self.campaigns = {'name': 'Test Campaign'}

        #binds the app to the current context
        with self.app.app_context():
            # create all tables
            db.create_all()


    def test_create_campaign(self):
        """Test API can create campaign (POST Request)"""
        res = self.client().post('/api/campaigns/', data=self.campaigns)
        self.assertEqual(res.status_code, 201)
        self.assertIn('Test', str(res.data))

    ### REST OF TEST ####

API路线文件。这是我使用'/ campaign'路线的地方,它将以'/ api'为前缀。

# project/app/api/campaigns.py

from app.api import api
from flask_sqlalchemy import SQLAlchemy
from flask import request, jsonify, abort, Flask

import os

@api.route('/campaigns/', methods=['POST'])
def create_campaign():
    if request.method == 'POST':
        name = request.form['name']
        if name:
            campaign = Campaign(name=name)
            campaign.save()
            response = jsonify({
                'id': campaign.id,
                'name': campaign.name,
                'date_created': campaign.date_created
            })
            response.status_code = 201
            return response

我的所有测试结果都变成了404

======================================================================
FAIL: test_create_campaign (__main__.CampaignsTestCase)
Test API can create campaign (POST Request)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_campaigns.py", line 25, in test_create_campaign
    self.assertEqual(res.status_code, 201)
AssertionError: 404 != 201

0 个答案:

没有答案
相关问题