From 6a7a86d6f6957915df1b796a5ceb98c9c6e52deb Mon Sep 17 00:00:00 2001 From: "sweep-nightly[bot]" <131841235+sweep-nightly[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 21:55:34 +0000 Subject: [PATCH 1/6] feat: add tests using mocker to main.py --- src/test_main.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/test_main.py diff --git a/src/test_main.py b/src/test_main.py new file mode 100644 index 0000000..d6a94ff --- /dev/null +++ b/src/test_main.py @@ -0,0 +1,33 @@ +import pytest +from pytest_mock import MockerFixture +from main import Net, transform +from api import app +from fastapi.testclient import TestClient +from PIL import Image +import torch +import torch.nn as nn +import io + +def test_net_init(mocker: MockerFixture): + mock_super_init = mocker.patch('torch.nn.Module.__init__') + net = Net() + mock_super_init.assert_called_once() + +def test_net_forward(mocker: MockerFixture): + mock_input = mocker.patch('torch.Tensor') + mock_relu = mocker.patch('torch.nn.functional.relu') + mock_log_softmax = mocker.patch('torch.nn.functional.log_softmax') + net = Net() + net.forward(mock_input) + mock_relu.assert_any_call(net.fc1(mock_input.view(-1, 28 * 28))) + mock_relu.assert_any_call(net.fc2(mock_relu.return_value)) + mock_log_softmax.assert_called_once_with(net.fc3(mock_relu.return_value), dim=1) + +def test_predict(mocker: MockerFixture): + mock_file = mocker.patch('fastapi.UploadFile') + mock_image_open = mocker.patch('PIL.Image.open') + mock_image_open.return_value.convert.return_value = Image.new('L', (28, 28)) + client = TestClient(app) + response = client.post("/predict/", files={"file": ("filename", io.BytesIO(), "image/png")}) + assert response.status_code == 200 + assert 'prediction' in response.json() From e29cf2f223699ace0dfffcc4246fd411c1657830 Mon Sep 17 00:00:00 2001 From: "sweep-nightly[bot]" <131841235+sweep-nightly[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 21:59:40 +0000 Subject: [PATCH 2/6] feat: Updated src/test_main.py --- src/test_main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test_main.py b/src/test_main.py index d6a94ff..de395a7 100644 --- a/src/test_main.py +++ b/src/test_main.py @@ -29,5 +29,5 @@ def test_predict(mocker: MockerFixture): mock_image_open.return_value.convert.return_value = Image.new('L', (28, 28)) client = TestClient(app) response = client.post("/predict/", files={"file": ("filename", io.BytesIO(), "image/png")}) - assert response.status_code == 200 - assert 'prediction' in response.json() + assert response.status_code == 200, "Expected status code 200" + assert 'prediction' in response.json(), "Expected 'prediction' in response" From ada9719471402d763c0d2398fe35328db0e886f1 Mon Sep 17 00:00:00 2001 From: "sweep-nightly[bot]" <131841235+sweep-nightly[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 22:09:22 +0000 Subject: [PATCH 3/6] feat: Updated src/test_main.py --- src/test_main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test_main.py b/src/test_main.py index de395a7..74a5e58 100644 --- a/src/test_main.py +++ b/src/test_main.py @@ -11,7 +11,7 @@ def test_net_init(mocker: MockerFixture): mock_super_init = mocker.patch('torch.nn.Module.__init__') net = Net() - mock_super_init.assert_called_once() + pytest.assert mock_super_init.assert_called_once() def test_net_forward(mocker: MockerFixture): mock_input = mocker.patch('torch.Tensor') @@ -29,5 +29,5 @@ def test_predict(mocker: MockerFixture): mock_image_open.return_value.convert.return_value = Image.new('L', (28, 28)) client = TestClient(app) response = client.post("/predict/", files={"file": ("filename", io.BytesIO(), "image/png")}) - assert response.status_code == 200, "Expected status code 200" - assert 'prediction' in response.json(), "Expected 'prediction' in response" + pytest.assert response.status_code == 200, "Expected status code 200" + pytest.assert 'prediction' in response.json(), "Expected 'prediction' in response" From c4c96823cc5f45f4e8a989dba291b0d3f19d4e05 Mon Sep 17 00:00:00 2001 From: "sweep-nightly[bot]" <131841235+sweep-nightly[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 22:12:03 +0000 Subject: [PATCH 4/6] feat: Updated src/test_main.py --- src/test_main.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test_main.py b/src/test_main.py index 74a5e58..ae90433 100644 --- a/src/test_main.py +++ b/src/test_main.py @@ -11,7 +11,7 @@ def test_net_init(mocker: MockerFixture): mock_super_init = mocker.patch('torch.nn.Module.__init__') net = Net() - pytest.assert mock_super_init.assert_called_once() + assert mock_super_init.assert_called_once(), 'Expected super init to be called once' def test_net_forward(mocker: MockerFixture): mock_input = mocker.patch('torch.Tensor') @@ -19,9 +19,9 @@ def test_net_forward(mocker: MockerFixture): mock_log_softmax = mocker.patch('torch.nn.functional.log_softmax') net = Net() net.forward(mock_input) - mock_relu.assert_any_call(net.fc1(mock_input.view(-1, 28 * 28))) - mock_relu.assert_any_call(net.fc2(mock_relu.return_value)) - mock_log_softmax.assert_called_once_with(net.fc3(mock_relu.return_value), dim=1) + assert mock_relu.assert_any_call(net.fc1(mock_input.view(-1, 28 * 28))), 'Expected relu to be called with fc1 output' + assert mock_relu.assert_any_call(net.fc2(mock_relu.return_value)), 'Expected relu to be called with fc2 output' + assert mock_log_softmax.assert_called_once_with(net.fc3(mock_relu.return_value), dim=1), 'Expected log softmax to be called with fc3 output' def test_predict(mocker: MockerFixture): mock_file = mocker.patch('fastapi.UploadFile') @@ -29,5 +29,5 @@ def test_predict(mocker: MockerFixture): mock_image_open.return_value.convert.return_value = Image.new('L', (28, 28)) client = TestClient(app) response = client.post("/predict/", files={"file": ("filename", io.BytesIO(), "image/png")}) - pytest.assert response.status_code == 200, "Expected status code 200" - pytest.assert 'prediction' in response.json(), "Expected 'prediction' in response" + assert response.status_code == 200, 'Expected status code 200' + assert 'prediction' in response.json(), 'Expected prediction in response' From b92a59369812f26881d50697a345abfa0387cb8f Mon Sep 17 00:00:00 2001 From: "sweep-nightly[bot]" <131841235+sweep-nightly[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 22:15:26 +0000 Subject: [PATCH 5/6] feat: Updated src/test_main.py --- src/test_main.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test_main.py b/src/test_main.py index ae90433..d6a94ff 100644 --- a/src/test_main.py +++ b/src/test_main.py @@ -11,7 +11,7 @@ def test_net_init(mocker: MockerFixture): mock_super_init = mocker.patch('torch.nn.Module.__init__') net = Net() - assert mock_super_init.assert_called_once(), 'Expected super init to be called once' + mock_super_init.assert_called_once() def test_net_forward(mocker: MockerFixture): mock_input = mocker.patch('torch.Tensor') @@ -19,9 +19,9 @@ def test_net_forward(mocker: MockerFixture): mock_log_softmax = mocker.patch('torch.nn.functional.log_softmax') net = Net() net.forward(mock_input) - assert mock_relu.assert_any_call(net.fc1(mock_input.view(-1, 28 * 28))), 'Expected relu to be called with fc1 output' - assert mock_relu.assert_any_call(net.fc2(mock_relu.return_value)), 'Expected relu to be called with fc2 output' - assert mock_log_softmax.assert_called_once_with(net.fc3(mock_relu.return_value), dim=1), 'Expected log softmax to be called with fc3 output' + mock_relu.assert_any_call(net.fc1(mock_input.view(-1, 28 * 28))) + mock_relu.assert_any_call(net.fc2(mock_relu.return_value)) + mock_log_softmax.assert_called_once_with(net.fc3(mock_relu.return_value), dim=1) def test_predict(mocker: MockerFixture): mock_file = mocker.patch('fastapi.UploadFile') @@ -29,5 +29,5 @@ def test_predict(mocker: MockerFixture): mock_image_open.return_value.convert.return_value = Image.new('L', (28, 28)) client = TestClient(app) response = client.post("/predict/", files={"file": ("filename", io.BytesIO(), "image/png")}) - assert response.status_code == 200, 'Expected status code 200' - assert 'prediction' in response.json(), 'Expected prediction in response' + assert response.status_code == 200 + assert 'prediction' in response.json() From e8d72c4d673c46b9aef2429cf24be9f1c028cd31 Mon Sep 17 00:00:00 2001 From: "sweep-nightly[bot]" <131841235+sweep-nightly[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 22:19:14 +0000 Subject: [PATCH 6/6] feat: Updated src/test_main.py --- src/test_main.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test_main.py b/src/test_main.py index d6a94ff..10b0be9 100644 --- a/src/test_main.py +++ b/src/test_main.py @@ -11,7 +11,7 @@ def test_net_init(mocker: MockerFixture): mock_super_init = mocker.patch('torch.nn.Module.__init__') net = Net() - mock_super_init.assert_called_once() + assert mock_super_init.assert_called_once() def test_net_forward(mocker: MockerFixture): mock_input = mocker.patch('torch.Tensor') @@ -19,9 +19,9 @@ def test_net_forward(mocker: MockerFixture): mock_log_softmax = mocker.patch('torch.nn.functional.log_softmax') net = Net() net.forward(mock_input) - mock_relu.assert_any_call(net.fc1(mock_input.view(-1, 28 * 28))) - mock_relu.assert_any_call(net.fc2(mock_relu.return_value)) - mock_log_softmax.assert_called_once_with(net.fc3(mock_relu.return_value), dim=1) + assert mock_relu.assert_any_call(net.fc1(mock_input.view(-1, 28 * 28))) + assert mock_relu.assert_any_call(net.fc2(mock_relu.return_value)) + assert mock_log_softmax.assert_called_once_with(net.fc3(mock_relu.return_value), dim=1) def test_predict(mocker: MockerFixture): mock_file = mocker.patch('fastapi.UploadFile') @@ -29,5 +29,5 @@ def test_predict(mocker: MockerFixture): mock_image_open.return_value.convert.return_value = Image.new('L', (28, 28)) client = TestClient(app) response = client.post("/predict/", files={"file": ("filename", io.BytesIO(), "image/png")}) - assert response.status_code == 200 - assert 'prediction' in response.json() + assert response.status_code == 200, "Expected status code 200" + assert 'prediction' in response.json(), "Expected 'prediction' in response"