小编Max*_*Max的帖子

命令karma-jasmine在第一次失败后停止单元测试

有什么命令可以让karma-jasmine单元测试在遇到第一次测试失败时停止测试.例如,在python中,命令如下:

py.test -x             # stop after first failure
py.test --maxfail=2    # stop after two failures
Run Code Online (Sandbox Code Playgroud)

目前我正在使用node_modules/karma/bin/karma start它运行所有测试并且只在执行完所有操作后停止

unit-testing karma-jasmine

15
推荐指数
1
解决办法
2300
查看次数

使用alembic升级表时设置列的值

我正在使用PostgreSQL和Alembic进行迁移.当我向User表添加新列时,Alembic使用以下脚本生成了迁移:

revision = '4824acf75bf3'
down_revision = '2f0fbdd56de1'

from alembic import op
import sqlalchemy as sa

def upgrade():
    op.add_column(
        'user', 
        sa.Column(
            'username', 
            sa.Unicode(length=255), 
            nullable=False
        )
    )

def downgrade():
    op.drop_column('user', 'username')
Run Code Online (Sandbox Code Playgroud)

我真正想要做的是在升级生产版本时自动生成用户名的值.换句话说,我的生产版本中有很多用户,如果我在其上运行上述升级,则会出现错误,指出用户名不能为NULL,因此我必须删除所有用户,升级用户表和再次添加用户后,这很痛苦.因此,我想用以下内容更改上述脚本:

revision = '4824acf75bf3'
down_revision = '2f0fbdd56de1'

from alembic import op
import sqlalchemy as sa

def upgrade():
    op.add_column(
        'user', 
        sa.Column(
            'username', 
            sa.Unicode(length=255)
        )
    )
    op.execute(
        'UPDATE "user" set username = <email address with no '@' 
         and everything comes after '@' sign should be removed> 
         WHERE email is not null'
    )
    <only …
Run Code Online (Sandbox Code Playgroud)

database postgresql upgrade auto-generate alembic

12
推荐指数
1
解决办法
4590
查看次数

AttributeError:'EditForm'对象没有属性'validate_on_submit'

我有一个小编辑应用程序,下面有文件.当我提交tbe表单时,它会向我显示AttributeError:'EditForm'对象没有属性'validate_on_submit'任何人都可以告诉我这是什么问题?

forms.py

from flask.ext.wtf import Form
from wtforms import Form, TextField, BooleanField, PasswordField, TextAreaField, validators
from wtforms.validators import Required

class EditForm(Form):
    """edit user Profile EditForm"""
    username = TextField('username', [validators.Length(min=3, max=50), validators.Required()])
    email = TextField('email', [validators.Length(min=5, max=100), validators.Email, validators.Required()])
    password = PasswordField('password', [validators.Required()])
    age = TextField('age', [validators.Length(min=1, max=3), validators.Required()])
    about_user = TextAreaField('about_user', [validators.Length(max=500)])
    img_url = TextField('img_url')
Run Code Online (Sandbox Code Playgroud)

views.py

from flask import render_template, url_for, flash, g, redirect, session, request
from flask.ext.login import login_user, logout_user, current_user, login_required
from forms import LoginForm, RegisterForm, …
Run Code Online (Sandbox Code Playgroud)

python forms flask

8
推荐指数
1
解决办法
8424
查看次数

在webpack中使用moment-timezone

我有react/ redux运行应用webpack,并想使用moment-timezone图书馆.我已经检查了如何在webpack中使用moment-timezone?在SO中发布此问题并json-loader按照问题中的描述进行安装.但仍然需要moment-timezone在我的申请中:

const momentTz = require('moment-timezone'); 
Run Code Online (Sandbox Code Playgroud)

它引发了一个错误:

ERROR in ./~/moment-timezone/index.js
Module not found: Error: Cannot resolve 'file' or 'directory' /path-to-the-project/node_modules/moment-timezone
 @ ./~/moment-timezone/index.js 2:15-51
Run Code Online (Sandbox Code Playgroud)

在哪里@ ./~/moment-timezone/index.js 2:15-51:

moment.tz.load(require('./data/packed/latest.json'));
Run Code Online (Sandbox Code Playgroud)

但是,当我从build文件夹中包含缩小版本时,它正常工作,如下所示:

const momentTz = require('moment-timezone/builds/moment-timezone-with-data.min');
Run Code Online (Sandbox Code Playgroud)

更新:

webpack配置:

let jsonLoader = require('json-loader');
loaders: [
  {
    include: /\.json$/,
    loaders: [jsonLoader]
  }
]
Run Code Online (Sandbox Code Playgroud)

timezone node.js momentjs webpack

7
推荐指数
1
解决办法
6101
查看次数

无法在Flask中导入LoginManager()

我在我的应用程序中使用Flask BluePrint并且必须使用主要部分:1.Admin和2. Public.当我尝试将loginManager导入到我的views.py文件时,我收到错误ImportError:无法导入名称lm
我的文件夹结构如下:

~/LargeApplication
    |-- run.py
    |-- config.py
    |__ /env             # Virtual Environment
    |__ /app             # Application Module
         |-- __init__.py
         |-- models.py
         |-- /admin
             |-- __init__.py
             |-- views.py                
         |__ /templates
             |-- ..
    |__ ..
    |__ .
Run Code Online (Sandbox Code Playgroud)

我在__ init__ .py文件/ app/__ init__ .py中初始化LoginManager()

from flask.ext.login import LoginManager
lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'
Run Code Online (Sandbox Code Playgroud)

当我尝试在/app/admin/views.py中导入lm

from app import lm
Run Code Online (Sandbox Code Playgroud)

它引发了ImportError.

ImportError: cannot import name lm
Run Code Online (Sandbox Code Playgroud)

你能告诉我这可能是什么问题吗?

python login flask

5
推荐指数
1
解决办法
5804
查看次数

AttributeError:'_Option'对象在烧瓶中没有属性'_sa_instance_state'

我正在为我的应用程序使用Flask并得到AttributeError:'_Option'对象没有属性'_sa_instance_state'错误。不知道它是关于什么的。我用谷歌搜索,看来这是一个SQL炼金术问题。你能帮我吗?

这是我的models.py:

#current table is used to make navigation hierarchy. eg. menu/submenu
#eg. About Us (History, Mission, Vision)
menu_hierarchy = db.Table('menu_hierarchy',
        db.Column('parent_id', db.Integer, db.ForeignKey('menu.id')),
        db.Column('child_id', db.Integer, db.ForeignKey('menu.id'))
    )

class Menu(db.Model):
    """Menu is used for websites navigation titles.
    eg. Home/About Us/Blog/Contacts/and etc""" 

    id          = db.Column(db.Integer, primary_key = True)
    title       = db.Column(db.String(255))
    title_eng   = db.Column(db.String(255))
    alias       = db.Column(db.String(255))
    menu_type   = db.Column(db.String(10))
    ordering    = db.Column(db.SmallInteger, default = '1')
    check_out_time = db.Column(db.DateTime)
    access      = db.Column(db.String(30))
    published   = db.Column(db.SmallInteger, default = '1')
    parent_id …
Run Code Online (Sandbox Code Playgroud)

sqlalchemy flask flask-sqlalchemy

5
推荐指数
1
解决办法
1万
查看次数

使用andCallThrough()后,在每个测试用例后重置broadcast()

$broadcast在每个测试用例之后使用下面的代码重置,但它似乎$rootScope.$broadcast.reset();无法正常工作,因为测试波纹管应该返回1,但它返回6.

似乎原因是andCallThrough(),因为在我使用它之前没有andCallThrough()函数,但是在一些重构之后它给了我一个错误TypeError: Cannot read property 'defaultPrevented' of undefined,所以我不得不用来防止这个错误.

问题是我如何重置broadcast使用时间andCallThrough或是否有另一种更精确的方法?

beforeEach(function() {
   spyOn($http, 'post');
   spyOn($rootScope, '$broadcast').andCallThrough();
});

afterEach(function() {
   $http.post.reset();
   $rootScope.$broadcast.reset();
});

it('should make a POST request to API endpoint', function() {
   $http.post.andCallThrough();
   var response = { id: '123', role: 'employee', email: 'user@email.com', username: 'someUsername' };
   $httpBackend.expectPOST(apiUrl + 'login').respond(response);
   service.login();
   $httpBackend.flush();
   $timeout.flush();
   expect($rootScope.$broadcast.callCount).toBe(1);
   expect($rootScope.$broadcast).toHaveBeenCalledWith(AUTH_EVENTS.loginSuccess, response);
});
Run Code Online (Sandbox Code Playgroud)

unit-testing angularjs karma-jasmine

5
推荐指数
1
解决办法
919
查看次数

Flask self.errors.append() - AttributeError:'tuple'对象没有属性'append'

当我尝试用户验证提交的数据并检查输入的电子邮件是否存在时,我的小注册应用程序给出错误.

这是我的文件:
表格:

from flask.ext.wtf import Form
from wtforms import TextField, BooleanField, PasswordField, TextAreaField, validators
from wtforms.validators import Required
from app import models

class RegisterForm(Form):
"""RegisterForm class needed for retrieving data from user"""
username = TextField('username', [validators.Length(min=3, max=50), validators.Required()])
email = TextField('email', [validators.Length(min=3, max=100), validators.Required()])
password = PasswordField('password', [validators.Required()])
age = TextField('age', [validators.Length(min=1, max=3), validators.Required()])
about_user = TextAreaField('about_user', [validators.Length(max=500)])
img_url = TextField('img_url')


def email_unique(self, email):
    if models.User.query.filter_by(email = email).first() != None:
        self.email.errors.append('This E-mail address is already in use. Please choose …
Run Code Online (Sandbox Code Playgroud)

python django flask flask-wtforms

4
推荐指数
2
解决办法
3万
查看次数

SQLAlchemy的.TypeError:filter_by()只取1个参数(给定2个)

我将sqlalchemy从0.7升级到0.9.6.升级后,我收到以下错误:

TypeError
TypeError: filter_by() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)

在没有任何问题的情况下工作之前.我该如何处理这个问题?

python sqlalchemy upgrade

3
推荐指数
1
解决办法
5090
查看次数

为量角器安装特定的chromedriver

我遇到了在CircleCi上运行的chrome驱动程序的问题.问题是运行时:

./node_modules/.bin/webdriver-manager update
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令检查chromedriver和selenium的版本:

ls -lt node_modules/protractor/selenium
Run Code Online (Sandbox Code Playgroud)

它显示了最新版本:

selenium-server-standalone-2.45.0.jar
chromedriver
chromedriver_2.15.zip
Run Code Online (Sandbox Code Playgroud)

根据npm.taobao.org的说明, ChromeDriver 2.15版支持Chrome v40-43.但是CicleCi 文档说它使用Chrome版本38.0.因此,我需要使用与Chrome v38.0兼容的ChromeDriver v2.13.我的问题是,如何强制webdriver-manager使用ChromeDriver v2.13而不是最新版本.

selenium google-chrome selenium-chromedriver protractor

3
推荐指数
1
解决办法
3932
查看次数