2022-05-12 04:10:50 +08:00
|
|
|
import asyncio
|
2022-03-29 23:45:24 +08:00
|
|
|
import random
|
2022-05-12 04:10:50 +08:00
|
|
|
import time
|
2022-03-30 00:12:01 +08:00
|
|
|
import unittest
|
2022-03-30 20:34:08 +08:00
|
|
|
|
2022-05-12 04:10:50 +08:00
|
|
|
import pytest
|
|
|
|
|
2022-03-30 01:38:49 +08:00
|
|
|
import gradio as gr
|
2022-05-12 04:10:50 +08:00
|
|
|
from gradio.routes import PredictBody
|
2022-04-06 20:55:51 +08:00
|
|
|
from gradio.test_data.blocks_configs import XRAY_CONFIG
|
2022-03-30 01:38:49 +08:00
|
|
|
|
2022-05-12 04:10:50 +08:00
|
|
|
pytest_plugins = ("pytest_asyncio",)
|
|
|
|
|
2022-03-29 23:45:24 +08:00
|
|
|
|
2022-03-30 00:12:01 +08:00
|
|
|
class TestBlocks(unittest.TestCase):
|
2022-03-29 23:45:24 +08:00
|
|
|
def test_xray(self):
|
2022-04-09 01:54:59 +08:00
|
|
|
def fake_func():
|
|
|
|
return "Hello There"
|
|
|
|
|
2022-03-29 23:46:42 +08:00
|
|
|
xray_model = lambda diseases, img: {
|
|
|
|
disease: random.random() for disease in diseases
|
|
|
|
}
|
2022-03-29 23:45:24 +08:00
|
|
|
ct_model = lambda diseases, img: {disease: 0.1 for disease in diseases}
|
|
|
|
|
2022-04-09 01:54:59 +08:00
|
|
|
with gr.Blocks() as demo:
|
2022-03-29 23:45:24 +08:00
|
|
|
gr.components.Markdown(
|
|
|
|
"""
|
|
|
|
# Detect Disease From Scan
|
|
|
|
With this model you can lorem ipsum
|
|
|
|
- ipsum 1
|
|
|
|
- ipsum 2
|
|
|
|
"""
|
|
|
|
)
|
|
|
|
disease = gr.components.CheckboxGroup(
|
|
|
|
choices=["Covid", "Malaria", "Lung Cancer"], label="Disease to Scan For"
|
|
|
|
)
|
|
|
|
|
|
|
|
with gr.Tabs():
|
|
|
|
with gr.TabItem("X-ray"):
|
|
|
|
with gr.Row():
|
|
|
|
xray_scan = gr.components.Image()
|
|
|
|
xray_results = gr.components.JSON()
|
2022-05-19 06:14:53 +08:00
|
|
|
xray_run = gr.Button("Run")
|
2022-03-29 23:45:24 +08:00
|
|
|
xray_run.click(
|
|
|
|
xray_model, inputs=[disease, xray_scan], outputs=xray_results
|
|
|
|
)
|
|
|
|
|
|
|
|
with gr.TabItem("CT Scan"):
|
|
|
|
with gr.Row():
|
|
|
|
ct_scan = gr.components.Image()
|
|
|
|
ct_results = gr.components.JSON()
|
|
|
|
ct_run = gr.Button("Run")
|
2022-03-29 23:46:42 +08:00
|
|
|
ct_run.click(
|
|
|
|
ct_model, inputs=[disease, ct_scan], outputs=ct_results
|
|
|
|
)
|
2022-04-09 01:54:59 +08:00
|
|
|
textbox = gr.components.Textbox()
|
|
|
|
demo.load(fake_func, [], [textbox])
|
|
|
|
self.assertEqual(XRAY_CONFIG, demo.get_config_file())
|
2022-03-30 00:12:01 +08:00
|
|
|
|
2022-05-12 04:10:50 +08:00
|
|
|
@pytest.mark.asyncio
|
|
|
|
async def test_async_function(self):
|
|
|
|
async def wait():
|
|
|
|
await asyncio.sleep(0.01)
|
|
|
|
return True
|
|
|
|
|
|
|
|
with gr.Blocks() as demo:
|
|
|
|
text = gr.components.Textbox()
|
|
|
|
button = gr.components.Button()
|
|
|
|
button.click(wait, [text], [text])
|
|
|
|
|
|
|
|
body = PredictBody(data=1, fn_index=0)
|
|
|
|
start = time.time()
|
|
|
|
result = await demo.process_api(body)
|
|
|
|
end = time.time()
|
|
|
|
difference = end - start
|
|
|
|
assert difference >= 0.01
|
|
|
|
assert result
|
|
|
|
|
2022-03-30 00:12:01 +08:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
unittest.main()
|