Open ivictbor opened 4 years ago
Seams like applying this fixes problem https://github.com/python-gino/gino/issues/539#issuecomment-584426048 and main issue is in using separate event loops, but message is very strange
Also still have a feeling that doing something wrong here if I need such workarounds... Seams to be pretty common task to wrap Gino calls in unittests, is there any other points in documentation about it?
Hey thanks for trying GINO out and sorry for the late reply! Let me take a look at this one.
Here's a modified self-contained version of your example that works with pytest-aiohttp:
import pytest
from aiohttp import web
from gino.ext.aiohttp import Gino
DSN = "postgresql:///t713"
db = Gino()
app = web.Application(middlewares=[db])
db.init_app(app, dict(dsn=DSN))
class User(db.Model):
__tablename__ = "users"
email = db.Column(db.String)
async def register(request):
existing_user = await User.query.where(User.email == "1").gino.first()
return web.Response(text="Hello, world")
app.add_routes([web.get("/users/", register)])
if __name__ == "__main__":
import asyncio
asyncio.get_event_loop().run_until_complete(db.set_bind(DSN))
asyncio.get_event_loop().run_until_complete(db.gino.create_all())
asyncio.get_event_loop().run_until_complete(db.pop_bind().close())
web.run_app(app)
@pytest.fixture
def cli(loop, aiohttp_client):
return loop.run_until_complete(aiohttp_client(app))
async def test_hello(cli):
resp = await cli.get("/users/")
assert resp.status == 200
text = await resp.text()
assert "Hello, world" in text
And I think the tests in gino-aiohttp examples are also working.
Description
Hi Guys, thanks for hardwork, we were dreaming about async ORM for a while, were using sqla TPEs and other workaround, and now it is here! But from first day we faced with issue which seams to be very unclear.
I have 1 REST endpoint on aiohttp
If I do
In side pytest file on root level it is ok. But once I call it from pytest function I got:
I am even not trying to perfrom another operation. If we add print to register method - it called once