Flask-Mixer

Flask SQLAlchemy model object generation
Download

Flask-Mixer Ranking & Summary

Advertisement

  • Rating:
  • License:
  • LGPL
  • Price:
  • FREE
  • Publisher Name:
  • Kirill Klenov
  • Publisher web site:
  • http://github.com/klen/

Flask-Mixer Tags


Flask-Mixer Description

Flask-Mixer is simple Flask application for generate instances of SQLAlchemy models. It's useful for testing. Fast and convenient test-data generation.InstallationFlask-Mixer should be installed using pip:pip install Flask-MixerUsageExample:from flask import Flaskfrom flask.ext.mixer import Mixerfrom flask.ext.sqlalchemy import SQLAlchemyfrom datetime import datetimeapp = Flask(__name__)app.config = 'sqlite:///:memory:'db = SQLAlchemy()db.init_app(app)class User(db.Model): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) score = db.Column(db.Integer, default=50, nullable=False) created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) username = db.Column(db.String(20), nullable=False)class Role(db.Model): __tablename__ = 'role' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), nullable=False) user_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=False) user = db.relation(User)class Profile(db.Model): __tablename__ = 'profile' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), nullable=False) user = db.relationship("User", uselist=False, backref="profile")mixer = Mixer(app, session_commit=True)with app.test_request_context(): db.create_all() # Simple model generation user1 = mixer.blend(User) assert user1.id and user1.username and user1.created_at assert user1.score == 50 assert user.profile.user == user # Generate model with some values user2 = mixer.blend(User, username='test') assert user2.username == 'test' # Model would be defined as string role1 = mixer.blend('app.models.Role') assert role1.user assert role1.user_id == role1.user.id # Generate model with reference role1 = mixer.blend(Role, user__username='test2') assert role2.user.username == 'test2' # Set related values from db by random profiles = Profile.query.all() user = mixer.blend(User, profile=mixer.random) assert user.profile in profiles # By default, column with defvalue will be to init as them # but you can still force set it to random value user = mixer.blend(User, score=mixer.random) assert user.score != 50 # Value can be callable user = mixer.blend(User, username=lambda:'callable_value') assert user.username == 'callable_value'Bug trackerIf you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/Flask-Mixer/issuesContributingDevelopment of adrest happens at github: https://github.com/klen/Flask-MixerProduct's homepage


Flask-Mixer Related Software