Skip to content

Commit 8cd3d5a

Browse files
authored
Merge pull request #371 from chinandrew/pytest
Make Delphi-Epidata tests Pytest compatible.
2 parents 3c7fbd8 + 6ba6c78 commit 8cd3d5a

39 files changed

+145
-9
lines changed

docs/epidata_development.md

+18
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,15 @@ The final line of output should be similar to the following:
143143
All 48 tests passed! 68% (490/711) coverage.
144144
```
145145

146+
You can also run tests using pytest like this:
147+
```
148+
docker run --rm delphi_python pytest repos/delphi/delphi-epidata/tests/
149+
```
150+
and with pdb enabled like this:
151+
```
152+
docker run -it --rm delphi_python pytest repos/delphi/delphi-epidata/tests/ --pdb
153+
```
154+
146155
## manual tests
147156

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

296+
You can also run tests using pytest like this:
297+
```
298+
docker run --network delphi-net --rm delphi_python pytest repos/delphi/delphi-epidata/integrations/
299+
```
300+
and with pdb enabled like this:
301+
```
302+
docker run --network delphi-net -it --rm delphi_python pytest repos/delphi/delphi-epidata/integrations/ --pdb
303+
```
304+
287305
5. Bring down the servers, for example with the `docker stop` command.
288306

289307
# rapid iteration

docs/new_endpoint_tutorial.md

+17
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,15 @@ If all succeeds, output should look like this:
267267
✔ All 48 tests passed! 69% (486/704) coverage.
268268
```
269269

270+
You can also run tests using pytest like this:
271+
```
272+
docker run --rm delphi_python pytest repos/delphi/delphi-epidata/tests/
273+
```
274+
and with pdb enabled like this:
275+
```
276+
docker run -it --rm delphi_python pytest repos/delphi/delphi-epidata/tests/ --pdb
277+
```
278+
270279
## integration
271280

272281
Integration tests require more effort and take longer to set up and run.
@@ -317,6 +326,14 @@ delphi.delphi-epidata.integrations.server.test_fluview_meta.FluviewMetaTests.tes
317326
318327
✔ All 16 tests passed! 48% (180/372) coverage.
319328
```
329+
You can also run tests using pytest like this:
330+
```
331+
docker run --network delphi-net --rm delphi_python pytest repos/delphi/delphi-epidata/integrations/
332+
```
333+
and with pdb enabled like this:
334+
```
335+
docker run --network delphi-net -it --rm delphi_python pytest repos/delphi/delphi-epidata/integrations/ --pdb
336+
```
320337

321338
# code review and submission
322339

integrations/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

integrations/acquisition/covid_hosp/facility/test_scenarios.py

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from delphi.epidata.acquisition.covid_hosp.common.database import Database
99
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
1010
from delphi.epidata.client.delphi_epidata import Epidata
11+
from delphi.epidata.acquisition.covid_hosp.facility.update import Update
1112
import delphi.operations.secrets as secrets
1213

1314
# py3tester coverage target (equivalent to `import *`)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

integrations/acquisition/covid_hosp/state_timeseries/test_scenarios.py

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from delphi.epidata.acquisition.covid_hosp.common.database import Database
99
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
1010
from delphi.epidata.client.delphi_epidata import Epidata
11+
from delphi.epidata.acquisition.covid_hosp.state_timeseries.update import Update
1112
import delphi.operations.secrets as secrets
1213

1314
# py3tester coverage target (equivalent to `import *`)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

integrations/acquisition/covidcast/test_covidcast_meta_caching.py

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from delphi.epidata.client.delphi_epidata import Epidata
1313
import delphi.operations.secrets as secrets
1414
import delphi.epidata.acquisition.covidcast.database as live
15+
from delphi.epidata.acquisition.covidcast.covidcast_meta_cache_updater import main
1516

1617
# py3tester coverage target (equivalent to `import *`)
1718
__test_target__ = (

integrations/acquisition/covidcast/test_csv_uploading.py

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
# first party
1313
from delphi.epidata.client.delphi_epidata import Epidata
14+
from delphi.epidata.acquisition.covidcast.csv_to_database import main
1415
import delphi.operations.secrets as secrets
1516

1617
# py3tester coverage target (equivalent to `import *`)

integrations/acquisition/covidcast/test_fill_is_latest_issue.py

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
# first party
1010
from delphi.epidata.client.delphi_epidata import Epidata
11+
from delphi.epidata.acquisition.covidcast.fill_is_latest_issue import main
1112
import delphi.operations.secrets as secrets
1213

1314
# py3tester coverage target (equivalent to `import *`)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

integrations/client/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

integrations/server/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

tests/acquisition/covid_hosp/common/test_database.py

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
# third party
1010
import pandas as pd
1111

12+
from delphi.epidata.acquisition.covid_hosp.common.database import Database
13+
1214
# py3tester coverage target
1315
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.common.database'
1416

tests/acquisition/covid_hosp/common/test_network.py

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from unittest.mock import MagicMock
66
from unittest.mock import sentinel
77

8+
from delphi.epidata.acquisition.covid_hosp.common.network import Network
9+
810
# py3tester coverage target
911
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.common.network'
1012

tests/acquisition/covid_hosp/common/test_utils.py

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
# first party
99
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
10+
from delphi.epidata.acquisition.covid_hosp.common.utils import Utils, CovidHospException
1011

1112
# py3tester coverage target
1213
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.common.utils'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

tests/acquisition/covid_hosp/facility/test_database.py

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
# first party
99
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
10+
from delphi.epidata.acquisition.covid_hosp.facility.database import Database
1011

1112
# py3tester coverage target
1213
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.facility.database'

tests/acquisition/covid_hosp/facility/test_network.py

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from unittest.mock import patch
66
from unittest.mock import sentinel
77

8+
from delphi.epidata.acquisition.covid_hosp.facility.network import Network
9+
810
# py3tester coverage target
911
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.facility.network'
1012

tests/acquisition/covid_hosp/facility/test_update.py

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
# first party
99
from delphi.epidata.acquisition.covid_hosp.common.utils import Utils
10+
from delphi.epidata.acquisition.covid_hosp.facility.update import Update
1011

1112
# py3tester coverage target
1213
__test_target__ = 'delphi.epidata.acquisition.covid_hosp.facility.update'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

tests/acquisition/covid_hosp/state_timeseries/test_database.py

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
# first party
99
from delphi.epidata.acquisition.covid_hosp.common.test_utils import TestUtils
10+
from delphi.epidata.acquisition.covid_hosp.state_timeseries.database import Database
1011

1112
# py3tester coverage target
1213
__test_target__ = \

tests/acquisition/covid_hosp/state_timeseries/test_network.py

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
from unittest.mock import patch
66
from unittest.mock import sentinel
77

8+
from delphi.epidata.acquisition.covid_hosp.state_timeseries.network import Network
9+
10+
811
# py3tester coverage target
912
__test_target__ = \
1013
'delphi.epidata.acquisition.covid_hosp.state_timeseries.network'

tests/acquisition/covid_hosp/state_timeseries/test_update.py

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
# first party
99
from delphi.epidata.acquisition.covid_hosp.common.utils import Utils
10+
from delphi.epidata.acquisition.covid_hosp.state_timeseries.update import Update
1011

1112
# py3tester coverage target
1213
__test_target__ = \
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

tests/acquisition/covidcast/test_covidcast_meta_cache_updater.py

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
# third party
99
import pandas
1010

11+
from delphi.epidata.acquisition.covidcast.covidcast_meta_cache_updater import get_argument_parser, \
12+
main
1113
# py3tester coverage target
1214
__test_target__ = (
1315
'delphi.epidata.acquisition.covidcast.'

tests/acquisition/covidcast/test_csv_importer.py

+5
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,14 @@
33
# standard library
44
import unittest
55
from unittest.mock import MagicMock
6+
from datetime import date
67

78
# third party
89
import pandas
10+
import epiweeks as epi
11+
12+
from delphi.epidata.acquisition.covidcast.csv_importer import CsvImporter
13+
from delphi.utils.epiweek import delta_epiweeks
914

1015
# py3tester coverage target
1116
__test_target__ = 'delphi.epidata.acquisition.covidcast.csv_importer'

tests/acquisition/covidcast/test_csv_to_database.py

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import unittest
66
from unittest.mock import MagicMock
77

8+
from delphi.epidata.acquisition.covidcast.csv_to_database import get_argument_parser, main, \
9+
collect_files, upload_archive, make_handlers
10+
811
# py3tester coverage target
912
__test_target__ = 'delphi.epidata.acquisition.covidcast.csv_to_database'
1013

tests/acquisition/covidcast/test_database.py

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import unittest
55
from unittest.mock import MagicMock
66

7+
from delphi.epidata.acquisition.covidcast.database import Database
8+
79
# py3tester coverage target
810
__test_target__ = 'delphi.epidata.acquisition.covidcast.database'
911

tests/acquisition/covidcast/test_file_archiver.py

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import unittest
66
from unittest.mock import MagicMock
77

8+
from delphi.epidata.acquisition.covidcast.file_archiver import FileArchiver
9+
810
# py3tester coverage target
911
__test_target__ = 'delphi.epidata.acquisition.covidcast.file_archiver'
1012

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

tests/acquisition/flusurv/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

tests/acquisition/flusurv/test_flusurv.py

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from unittest.mock import MagicMock
66
from unittest.mock import sentinel
77

8+
from delphi.epidata.acquisition.flusurv.flusurv import fetch_json
9+
810
# py3tester coverage target
911
__test_target__ = 'delphi.epidata.acquisition.flusurv.flusurv'
1012

tests/acquisition/fluview/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

tests/acquisition/fluview/test_impute_missing_values.py

+11-9
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
# first party
99
from delphi.utils.geo.locations import Locations
10+
from delphi.epidata.acquisition.fluview.impute_missing_values import get_argument_parser, \
11+
get_lag_and_ili, impute_missing_values, StatespaceException
1012

1113
# py3tester coverage target
1214
__test_target__ = 'delphi.epidata.acquisition.fluview.impute_missing_values'
@@ -29,7 +31,7 @@ def test_get_lag_and_ili(self):
2931
for args, expected in samples:
3032
with self.subTest(args=args):
3133
actual = get_lag_and_ili(*args)
32-
self.assertEquals(actual, expected)
34+
self.assertEqual(actual, expected)
3335

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

4951
impute_missing_values(db, test_mode=True)
5052

51-
self.assertEquals(db.connect.call_count, 1)
53+
self.assertEqual(db.connect.call_count, 1)
5254
self.assertTrue(db.count_rows.call_count >= 1)
5355
self.assertTrue(db.find_missing_rows.call_count >= 1)
54-
self.assertEquals(db.add_imputed_values.call_count, 1)
55-
self.assertEquals(db.close.call_count, 1)
56+
self.assertEqual(db.add_imputed_values.call_count, 1)
57+
self.assertEqual(db.close.call_count, 1)
5658
self.assertFalse(db.close.call_args[0][0])
5759

5860
imputed = db.add_imputed_values.call_args[0][-1]
5961
self.assertTrue(unknown_set <= set(imputed.keys()))
6062
for loc, (lag, n_ili, n_pat, n_prov, ili) in imputed.items():
6163
with self.subTest(loc=loc):
6264
num = len(Locations.region_map[loc])
63-
self.assertEquals(lag, 0)
64-
self.assertEquals(n_ili, num)
65-
self.assertEquals(n_pat, num)
66-
self.assertEquals(n_prov, num)
67-
self.assertEquals(ili, 100)
65+
self.assertEqual(lag, 0)
66+
self.assertEqual(n_ili, num)
67+
self.assertEqual(n_pat, num)
68+
self.assertEqual(n_prov, num)
69+
self.assertEqual(ili, 100)
6870

6971
def test_impute_missing_values_vipr(self):
7072
"""PR and VI are imputed only when appropriate."""

tests/client/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

tests/server/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import sys
2+
import os
3+
4+
sys.path.append(os.getcwd())

0 commit comments

Comments
 (0)