nteract / testbook

🧪 📗 Unit test your Jupyter Notebooks the right way
https://testbook.readthedocs.io
BSD 3-Clause "New" or "Revised" License
416 stars 37 forks source link

support `async` function calls #139

Open BugDiver opened 2 years ago

BugDiver commented 2 years ago

Currently I'm having issues testing my async methods in notebook. Exmaple: Notebook:

import httpx

async make_api_call(client, url, headers, body)
    res = await client.post(url, headers=headers, json=body)
    if res.status_code == 200:
        return res.json()
    else:
        print(res)

if __name__ == '__main__'
    with httpx.AsyncClient() as client:
        await make_api_call(cleint, url,... ..)

TestCase:

import unittest
from unittest.mock import MagicMock

class TestAPI(unittest.IsolatedAsyncioTestCase):
    async def test_api_call(self):
        with testbook(notebook_path, execute=True) as nb:
            make_api_call = nb.ref('make_api_call')
            cleint = MagicMock()
            await make_api_call(client,url, ...)
            client.post.assert_called()

Is there any way to test async function calls?