2017-08-29 2 views
6

Ich versuche, PyTest für die folgenden async zu schreiben, warten Methoden, aber ich komme nirgendwohin.Python Pytest Fälle für async und warten Methode

class UserDb(object): 
    async def add_user_info(self,userInfo): 
     return await self.post_route(route='users',json=userInfo) 

    async def post_route(self,route=None,json=None,params=None): 
     uri = self.uri + route if route else self.uri  
     async with self.client.post(uri,json=json,params=params) as resp:    
     assert resp.status == 200 
     return await resp.json() 

Kann mir jemand dabei helfen?

TIA
+0

verwenden Sie aiohttp? – Juggernaut

+0

@Juggernaut: Ja, ich benutze aiohttp. –

Antwort

6

pip install pytest-aiohttp, dann erstellen Sie eine Halterung wie diese

from pytest import fixture 

def make_app(): 
    app = Application() 
    # Config your app here 
    return app 

@fixture 
def test_fixture(loop, test_client): 
    """Test fixture to be used in test cases""" 
    app = make_app() 
    return loop.run_until_complete(test_client(app)) 

Schreiben Sie jetzt Ihre Tests

f = test_fixture 

async def test_add_user_info(f): 
    resp = await f.get('/') 
    assert resp.status == 200 
    assert await resp.json() == {'some_key': 'some_value'} 

Auch bemerkte ich Ihre add_user_info Koroutine nichts zurückkehrt. Weitere Informationen ist here

+0

Ich bin ein Anfänger zu pytest. Kannst du mir mehr Informationen zum Konfigurieren der App und zum Testen von Geräten geben? –

+1

Konfiguration ist optional. Es besteht aus dem Hinzufügen von Middleware wie Session Management oder Db Configuration Management. Erstellen Sie einfach Ihre Testfälle und verwenden Sie test_fixture als Argument für Ihren Testfall. wie der, den ich in die Antwort geschrieben habe. und führen Sie 'py.test test_module.py' in Ihrem Terminal aus. – Juggernaut

+1

haben es geschafft. Ich danke dir sehr :) –