小编tx8*_*802的帖子

在单元测试中将 JSON 发布到 Flask 端点时出现错误请求

我发现了很多关于人们试图将 JSON 发布到 Flask 应用程序的问题,但这些都不是我在这里遇到的问题。

我有一个简单的 REST API,使用 Flask 和 Flask-JWT 构建,它在浏览器中运行良好,但我的单元测试遇到了障碍。该应用程序是 App Engine 应用程序,可以在本地开发服务器和 App Engine 上正常运行。我正在运行我的单元测试python -m unittest <module>

我有一个使用简单工厂创建的基本 Flask 应用程序:

def create_app(name=__name__, cfg):
    app = Flask(name)
    app.config.update(cfg)

    CORS(app)
    JWT(app, auth_handler, identity_handler)

    @app.route('/api/v1/ping', methods=['GET'])
    def handle_ping():
        return jsonify({'message': 'pong'})

    # other routes ...
Run Code Online (Sandbox Code Playgroud)

在上面,JWT期望一个authentication_handler,我已经实现了:

def auth_handler(identity, secret):
    # validate identity and secret
    return User(...)
Run Code Online (Sandbox Code Playgroud)

我的客户端是 Angular.js,所以我将 JSON 发布到这个端点。这在浏览器或 curl 中都可以正常工作:

$ curl -H "content-type:application/json" -d '{"username":"jackripper@example.com","password":"crm114"}'   http://localhost:8080/api/v1/auth
Run Code Online (Sandbox Code Playgroud)

200 OK在响应中给我一个和一个访问令牌。

我的简单测试用例是这样的: …

python google-app-engine unit-testing flask flask-jwt

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

如何解释Objectify中的返回值save()

Objectify的save().entity(E entity).now()方法返回Key<E>已保存的entity,这在第一次保存新实体时很有用.到现在为止还挺好.

但是,保存已存在于数据存储区中的实体时,此方法返回的内容并不完全清楚,或者返回值是否可以告诉我该写入是否成功.根据这些javadoc,我能否认为它成功的,除非RuntimeException被抛出?如果是这样,无论写入是否在事务内,都是真的吗?

具体来说,我正在阅读,然后使用Objectify在XG事务中修改和保存两个实体.我正在检查第一次保存的返回值,然后保存第二次,如下所示:

if(ofy().save().entity(entA).now() != null) {
    ofy().save().entity(entB).now();
}
Run Code Online (Sandbox Code Playgroud)

首先,我想第一件事是我应该用一个ofy().save().entities(ent1, ent2).now()电话保存这些?

其次,检查ofy().save().entity().now()调用的返回值对我来说是否有意义:

  1. 曾经
  2. 在交易中?(例如,如果Objectify捕获了一个ConcurrentModificationException但是如果事务提交一直失败会发生什么,则会重试?)

感谢任何人都可以给予的澄清.

java google-app-engine objectify google-cloud-datastore

2
推荐指数
1
解决办法
1150
查看次数