3

我正在使用 Python-eve 开发我的 API 服务器,并且想知道如何测试 API 端点。我想专门测试的几件事:

  • POST/PATCH 请求的验证
  • 不同端点的认证
  • before_ 和 after_ 挂钩工作属性
  • 返回正确的 JSON 响应

目前我正在针对真正的 MongoDB 测试该应用程序,我可以想象,一旦我运行了数百或数千个测试,测试将需要很长时间才能运行。模拟东西是另一种方法,但我找不到工具可以让我在保持测试尽可能真实的同时做到这一点。我想知道是否有推荐的方法来测试 eve 应用程序。谢谢!

这是我现在所拥有的:

from pymongo import MongoClient
from myModule import create_app
import unittest, json

class ClientAppsTests(unittest.TestCase):
  def setUp(self):
    app = create_app()
    app.config['TESTING'] = True
    self.app = app.test_client()

    # Insert some fake data
    client = MongoClient(app.config['MONGO_HOST'], app.config['MONGO_PORT'])
    self.db = client[app.config['MONGO_DBNAME']]
    new_app = {
      'client_id'     : 'test',
      'client_secret' : 'secret',
      'token'         : 'token'
    }
    self.db.client_apps.insert(new_app)

  def tearDown(self):
    self.db.client_apps.remove()

  def test_access_public_token(self):
    res = self.app.get('/token')
    assert res.status_code == 200

  def test_get_token(self):
    query = { 'client_id': 'test', 'client_secret': 'secret' }
    res = self.app.get('/token', query_string=query)
    res_obj = json.loads(res.get_data())
    assert res_obj['token'] == 'token'
4

1 回答 1

4

Eve 测试套件本身正在使用测试数据库,而不是模拟任何东西。每次运行时都会创建并删除测试数据库以确保隔离(不是超级快,是的,但尽可能接近生产环境)。当然,您应该测试自己的代码,但您可能不需要像test_access_public_token上面那样编写测试,因为 Eve 套件已经涵盖了类似的东西。您可能还想检查Eve Mocker扩展。

还要让自己熟悉身份验证和授权教程。看起来你要让整个令牌事情发生的方式并不合适(你想对那种东西使用请求标头)。

于 2014-05-21T06:53:42.960 回答