我正在使用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'
解决方法:
Eve测试套件本身是using a test db,没有嘲笑任何东西.在每次运行时都会创建并删除测试数据库,以确保隔离(不是超级快,是的,但尽可能接近生产环境).当然,虽然您应该测试自己的代码,但是您可能不需要编写上面的test_access_public_token之类的测试,因为Eve套件已经涵盖了此类内容.您可能还需要检查Eve Mocker扩展名.
也要使自己熟悉Authentication and Authorization tutorials.看起来要让整个令牌运行的方式不太合适(您想对这种东西使用请求标头).