3
3
4
4
import pytest
5
5
from pytz import UTC
6
+ import inspect
6
7
7
8
from faculty .clients .experiment import (
8
9
Experiment ,
18
19
Sort ,
19
20
SortBy ,
20
21
SortOrder ,
21
- Tag
22
+ Tag ,
22
23
)
23
24
24
25
from faculty .experiments import (
25
26
ExperimentRun as FacultyExperimentRun ,
26
- ExperimentRunQueryResult
27
+ ExperimentRunQueryResult ,
27
28
)
28
29
29
30
70
71
metrics = [METRIC ],
71
72
)
72
73
73
- PAGINATION = Pagination (
74
- start = 20 ,
75
- size = 10 ,
76
- previous = None ,
77
- next = None ,
78
- )
74
+ PAGINATION = Pagination (start = 20 , size = 10 , previous = None , next = None )
79
75
80
76
LIST_EXPERIMENT_RUNS_RESPONSE = ListExperimentRunsResponse (
81
77
runs = [EXPERIMENT_RUN ], pagination = PAGINATION
82
78
)
83
79
84
80
FILTER = SingleFilter (
85
- SingleFilterBy .EXPERIMENT_ID ,
86
- None ,
87
- SingleFilterOperator .EQUAL_TO ,
88
- "2"
81
+ SingleFilterBy .EXPERIMENT_ID , None , SingleFilterOperator .EQUAL_TO , "2"
89
82
)
90
83
91
84
SORT = [Sort (SortBy .METRIC , "metric_key" , SortOrder .ASC )]
94
87
def test_experiment_run_query (mocker ):
95
88
96
89
experiment_client_mock = mocker .MagicMock ()
97
- experiment_client_mock .query_runs .return_value = LIST_EXPERIMENT_RUNS_RESPONSE
98
- mocker .patch (
99
- "faculty.client" , return_value = experiment_client_mock
90
+ experiment_client_mock .query_runs .return_value = (
91
+ LIST_EXPERIMENT_RUNS_RESPONSE
100
92
)
93
+ mocker .patch ("faculty.client" , return_value = experiment_client_mock )
101
94
102
- expected_response = ExperimentRun (
95
+ expected_response = FacultyExperimentRun (
103
96
id = EXPERIMENT_RUN_ID ,
104
97
run_number = EXPERIMENT_RUN_NUMBER ,
105
98
name = EXPERIMENT_RUN_NAME ,
@@ -112,44 +105,30 @@ def test_experiment_run_query(mocker):
112
105
deleted_at = DELETED_AT ,
113
106
tags = [TAG ],
114
107
params = [PARAM ],
115
- metrics = [METRIC ]
108
+ metrics = [METRIC ],
116
109
)
117
110
118
111
response = FacultyExperimentRun .query (PROJECT_ID , FILTER , SORT )
119
112
120
113
assert isinstance (response , ExperimentRunQueryResult )
121
114
returned_run = list (response )[0 ]
122
-
123
-
124
- # assert all(i == j for i, j in list(zip([getattr(l, attr) for attr in dir(l)], [getattr(expected_response, attr) for attr in dir(expected_response)])))
125
-
126
- # response_schema_mock = mocker.patch(
127
- # "faculty.clients.experiment.ListExperimentRunsResponseSchema"
128
- # )
129
- # request_schema_mock = mocker.patch(
130
- # "faculty.clients.experiment.QueryRunsSchema"
131
- # )
132
- # dump_mock = request_schema_mock.return_value.dump
133
-
134
- # test_filter = SingleFilter(
135
- # SingleFilterBy.EXPERIMENT_ID, None, SingleFilterOperator.EQUAL_TO, "2"
136
- # )
137
- # test_sort = [Sort(SortBy.METRIC, "metric_key", SortOrder.ASC)]
138
-
139
- # client = ExperimentClient(mocker.Mock())
140
- # list_result = client.query_runs(
141
- # PROJECT_ID, filter=test_filter, sort=test_sort, start=20, limit=10
142
- # )
143
-
144
- # assert list_result == LIST_EXPERIMENT_RUNS_RESPONSE
145
-
146
- # request_schema_mock.assert_called_once_with()
147
- # dump_mock.assert_called_once_with(
148
- # QueryRuns(test_filter, test_sort, Page(20, 10))
149
- # )
150
- # response_schema_mock.assert_called_once_with()
151
- # ExperimentClient._post.assert_called_once_with(
152
- # "/project/{}/run/query".format(PROJECT_ID),
153
- # response_schema_mock.return_value,
154
- # json=dump_mock.return_value,
155
- # )
115
+ assert isinstance (returned_run , FacultyExperimentRun )
116
+ assert all (
117
+ list (
118
+ i == j
119
+ for i , j in (
120
+ list (
121
+ zip (
122
+ [
123
+ getattr (returned_run , attr )
124
+ for attr in returned_run .__dict__ .keys ()
125
+ ],
126
+ [
127
+ getattr (expected_response , attr )
128
+ for attr in expected_response .__dict__ .keys ()
129
+ ],
130
+ )
131
+ )
132
+ )
133
+ )
134
+ )
0 commit comments