Skip to content

Make Delphi-Epidata tests Pytest compatible. #371

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jan 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions docs/epidata_development.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,15 @@ The final line of output should be similar to the following:
All 48 tests passed! 68% (490/711) coverage.
```

You can also run tests using pytest like this:
```
docker run --rm delphi_python pytest repos/delphi/delphi-epidata/tests/
```
and with pdb enabled like this:
```
docker run -it --rm delphi_python pytest repos/delphi/delphi-epidata/tests/ --pdb
```

## manual tests

You can test your changes manually by:
Expand Down Expand Up @@ -284,6 +293,15 @@ More concretely, you can run Epidata API integration tests like this:
✔ All 3 tests passed! [coverage unavailable]
```

You can also run tests using pytest like this:
```
docker run --network delphi-net --rm delphi_python pytest repos/delphi/delphi-epidata/integrations/
```
and with pdb enabled like this:
```
docker run --network delphi-net -it --rm delphi_python pytest repos/delphi/delphi-epidata/integrations/ --pdb
```

5. Bring down the servers, for example with the `docker stop` command.

# rapid iteration
Expand Down
17 changes: 17 additions & 0 deletions docs/new_endpoint_tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,15 @@ If all succeeds, output should look like this:
✔ All 48 tests passed! 69% (486/704) coverage.
```

You can also run tests using pytest like this:
```
docker run --rm delphi_python pytest repos/delphi/delphi-epidata/tests/
```
and with pdb enabled like this:
```
docker run -it --rm delphi_python pytest repos/delphi/delphi-epidata/tests/ --pdb
```

## integration

Integration tests require more effort and take longer to set up and run.
Expand Down Expand Up @@ -317,6 +326,14 @@ delphi.delphi-epidata.integrations.server.test_fluview_meta.FluviewMetaTests.tes

✔ All 16 tests passed! 48% (180/372) coverage.
```
You can also run tests using pytest like this:
```
docker run --network delphi-net --rm delphi_python pytest repos/delphi/delphi-epidata/integrations/
```
and with pdb enabled like this:
```
docker run --network delphi-net -it --rm delphi_python pytest repos/delphi/delphi-epidata/integrations/ --pdb
```

# code review and submission

Expand Down
4 changes: 4 additions & 0 deletions integrations/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
4 changes: 4 additions & 0 deletions integrations/acquisition/covid_hosp/facility/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from delphi.epidata.acquisition.covid_hosp.common.database import Database
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
from delphi.epidata.client.delphi_epidata import Epidata
from delphi.epidata.acquisition.covid_hosp.facility.update import Update
import delphi.operations.secrets as secrets

# py3tester coverage target (equivalent to `import *`)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from delphi.epidata.acquisition.covid_hosp.common.database import Database
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
from delphi.epidata.client.delphi_epidata import Epidata
from delphi.epidata.acquisition.covid_hosp.state_timeseries.update import Update
import delphi.operations.secrets as secrets

# py3tester coverage target (equivalent to `import *`)
Expand Down
4 changes: 4 additions & 0 deletions integrations/acquisition/covidcast/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from delphi.epidata.client.delphi_epidata import Epidata
import delphi.operations.secrets as secrets
import delphi.epidata.acquisition.covidcast.database as live
from delphi.epidata.acquisition.covidcast.covidcast_meta_cache_updater import main

# py3tester coverage target (equivalent to `import *`)
__test_target__ = (
Expand Down
1 change: 1 addition & 0 deletions integrations/acquisition/covidcast/test_csv_uploading.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

# first party
from delphi.epidata.client.delphi_epidata import Epidata
from delphi.epidata.acquisition.covidcast.csv_to_database import main
import delphi.operations.secrets as secrets

# py3tester coverage target (equivalent to `import *`)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

# first party
from delphi.epidata.client.delphi_epidata import Epidata
from delphi.epidata.acquisition.covidcast.fill_is_latest_issue import main
import delphi.operations.secrets as secrets

# py3tester coverage target (equivalent to `import *`)
Expand Down
4 changes: 4 additions & 0 deletions integrations/acquisition/covidcast_nowcast/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
4 changes: 4 additions & 0 deletions integrations/client/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
4 changes: 4 additions & 0 deletions integrations/server/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
4 changes: 4 additions & 0 deletions tests/acquisition/covid_hosp/common/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
2 changes: 2 additions & 0 deletions tests/acquisition/covid_hosp/common/test_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
# third party
import pandas as pd

from delphi.epidata.acquisition.covid_hosp.common.database import Database

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.common.database'

Expand Down
2 changes: 2 additions & 0 deletions tests/acquisition/covid_hosp/common/test_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from unittest.mock import MagicMock
from unittest.mock import sentinel

from delphi.epidata.acquisition.covid_hosp.common.network import Network

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.common.network'

Expand Down
1 change: 1 addition & 0 deletions tests/acquisition/covid_hosp/common/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

# first party
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
from delphi.epidata.acquisition.covid_hosp.common.utils import Utils, CovidHospException

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.common.utils'
Expand Down
4 changes: 4 additions & 0 deletions tests/acquisition/covid_hosp/facility/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
1 change: 1 addition & 0 deletions tests/acquisition/covid_hosp/facility/test_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

# first party
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
from delphi.epidata.acquisition.covid_hosp.facility.database import Database

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.facility.database'
Expand Down
2 changes: 2 additions & 0 deletions tests/acquisition/covid_hosp/facility/test_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from unittest.mock import patch
from unittest.mock import sentinel

from delphi.epidata.acquisition.covid_hosp.facility.network import Network

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.facility.network'

Expand Down
1 change: 1 addition & 0 deletions tests/acquisition/covid_hosp/facility/test_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

# first party
from delphi.epidata.acquisition.covid_hosp.common.utils import Utils
from delphi.epidata.acquisition.covid_hosp.facility.update import Update

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.facility.update'
Expand Down
4 changes: 4 additions & 0 deletions tests/acquisition/covid_hosp/state_timeseries/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

# first party
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
from delphi.epidata.acquisition.covid_hosp.state_timeseries.database import Database

# py3tester coverage target
__test_target__ = \
Expand Down
3 changes: 3 additions & 0 deletions tests/acquisition/covid_hosp/state_timeseries/test_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
from unittest.mock import patch
from unittest.mock import sentinel

from delphi.epidata.acquisition.covid_hosp.state_timeseries.network import Network


# py3tester coverage target
__test_target__ = \
'delphi.epidata.acquisition.covid_hosp.state_timeseries.network'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

# first party
from delphi.epidata.acquisition.covid_hosp.common.utils import Utils
from delphi.epidata.acquisition.covid_hosp.state_timeseries.update import Update

# py3tester coverage target
__test_target__ = \
Expand Down
4 changes: 4 additions & 0 deletions tests/acquisition/covidcast/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
# third party
import pandas

from delphi.epidata.acquisition.covidcast.covidcast_meta_cache_updater import get_argument_parser, \
main
# py3tester coverage target
__test_target__ = (
'delphi.epidata.acquisition.covidcast.'
Expand Down
5 changes: 5 additions & 0 deletions tests/acquisition/covidcast/test_csv_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
# standard library
import unittest
from unittest.mock import MagicMock
from datetime import date

# third party
import pandas
import epiweeks as epi

from delphi.epidata.acquisition.covidcast.csv_importer import CsvImporter
from delphi.utils.epiweek import delta_epiweeks

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covidcast.csv_importer'
Expand Down
3 changes: 3 additions & 0 deletions tests/acquisition/covidcast/test_csv_to_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
import unittest
from unittest.mock import MagicMock

from delphi.epidata.acquisition.covidcast.csv_to_database import get_argument_parser, main, \
collect_files, upload_archive, make_handlers

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covidcast.csv_to_database'

Expand Down
2 changes: 2 additions & 0 deletions tests/acquisition/covidcast/test_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import unittest
from unittest.mock import MagicMock

from delphi.epidata.acquisition.covidcast.database import Database

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covidcast.database'

Expand Down
2 changes: 2 additions & 0 deletions tests/acquisition/covidcast/test_file_archiver.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import unittest
from unittest.mock import MagicMock

from delphi.epidata.acquisition.covidcast.file_archiver import FileArchiver

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.covidcast.file_archiver'

Expand Down
4 changes: 4 additions & 0 deletions tests/acquisition/covidcast_nowcast/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
4 changes: 4 additions & 0 deletions tests/acquisition/flusurv/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
2 changes: 2 additions & 0 deletions tests/acquisition/flusurv/test_flusurv.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
from unittest.mock import MagicMock
from unittest.mock import sentinel

from delphi.epidata.acquisition.flusurv.flusurv import fetch_json

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.flusurv.flusurv'

Expand Down
4 changes: 4 additions & 0 deletions tests/acquisition/fluview/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
20 changes: 11 additions & 9 deletions tests/acquisition/fluview/test_impute_missing_values.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

# first party
from delphi.utils.geo.locations import Locations
from delphi.epidata.acquisition.fluview.impute_missing_values import get_argument_parser, \
get_lag_and_ili, impute_missing_values, StatespaceException

# py3tester coverage target
__test_target__ = 'delphi.epidata.acquisition.fluview.impute_missing_values'
Expand All @@ -29,7 +31,7 @@ def test_get_lag_and_ili(self):
for args, expected in samples:
with self.subTest(args=args):
actual = get_lag_and_ili(*args)
self.assertEquals(actual, expected)
self.assertEqual(actual, expected)

def test_impute_missing_values(self):
"""Atoms are imputed and stored."""
Expand All @@ -48,23 +50,23 @@ def test_impute_missing_values(self):

impute_missing_values(db, test_mode=True)

self.assertEquals(db.connect.call_count, 1)
self.assertEqual(db.connect.call_count, 1)
self.assertTrue(db.count_rows.call_count >= 1)
self.assertTrue(db.find_missing_rows.call_count >= 1)
self.assertEquals(db.add_imputed_values.call_count, 1)
self.assertEquals(db.close.call_count, 1)
self.assertEqual(db.add_imputed_values.call_count, 1)
self.assertEqual(db.close.call_count, 1)
self.assertFalse(db.close.call_args[0][0])

imputed = db.add_imputed_values.call_args[0][-1]
self.assertTrue(unknown_set <= set(imputed.keys()))
for loc, (lag, n_ili, n_pat, n_prov, ili) in imputed.items():
with self.subTest(loc=loc):
num = len(Locations.region_map[loc])
self.assertEquals(lag, 0)
self.assertEquals(n_ili, num)
self.assertEquals(n_pat, num)
self.assertEquals(n_prov, num)
self.assertEquals(ili, 100)
self.assertEqual(lag, 0)
self.assertEqual(n_ili, num)
self.assertEqual(n_pat, num)
self.assertEqual(n_prov, num)
self.assertEqual(ili, 100)

def test_impute_missing_values_vipr(self):
"""PR and VI are imputed only when appropriate."""
Expand Down
4 changes: 4 additions & 0 deletions tests/client/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())
4 changes: 4 additions & 0 deletions tests/server/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import sys
import os

sys.path.append(os.getcwd())