@@ -66,7 +66,7 @@ def plug_away(self):
6666
6767
6868@plugs .plug (my_plug = MyPlug , shameless_plug = ShamelessPlug )
69- @openhtf .measures ('test_measurement' , 'othr_measurement' )
69+ @openhtf .measures ('test_measurement' , 'othr_measurement' , 'numeric_measurement' )
7070@openhtf .measures ('passes' , validators = [validators .in_range (1 , 10 )])
7171@openhtf .measures ('fails' , validators = [validators .in_range (1 , 10 )])
7272@openhtf .measures ('unset_measurement' )
@@ -76,6 +76,7 @@ def test_phase(phase_data, my_plug, shameless_plug: ShamelessPlug):
7676 phase_data .logger .error ('in measurements %s' , id (phase_data .measurements ))
7777 phase_data .measurements .test_measurement = my_plug .do_stuff ('stuff_args' )
7878 phase_data .measurements .othr_measurement = 0xDEAD
79+ phase_data .measurements .numeric_measurement = 10.0
7980 phase_data .measurements .passes = 5
8081 phase_data .measurements .fails = 20
8182 phase_data .test_record .add_outcome_details (0xBED )
@@ -165,6 +166,12 @@ def _run_my_phase_in_test_asserts(self, mock_my_plug, test_record):
165166 self .assertMeasurementFail (test_record , 'fails' )
166167 with self .subTest (name = 'assert_measurement_fail_with_value' ):
167168 self .assertMeasurementFail (test_record , 'fails' , 20 )
169+ with self .subTest (name = 'assert_measurement_almost_equal' ):
170+ self .assertMeasuredAlmostEqual (test_record , 'numeric_measurement' , 10.0 )
171+ with self .subTest (name = 'assert_measurement_almost_equal_with_delta' ):
172+ self .assertMeasuredAlmostEqual (
173+ test_record , 'numeric_measurement' , 9.5 , delta = 1.0
174+ )
168175
169176 def test_execute_phase_or_test_test_with_patched_plugs (self ):
170177 self .auto_mock_plugs (MyPlug )
@@ -202,6 +209,7 @@ def test_patch_plugs_phase(self, mock_plug):
202209 self .assertMeasured (phase_record , 'othr_measurement' , 0xDEAD )
203210 self .assertMeasurementPass (phase_record , 'passes' )
204211 self .assertMeasurementFail (phase_record , 'fails' )
212+ self .assertMeasuredAlmostEqual (phase_record , 'numeric_measurement' , 10.0 )
205213
206214 @test .patch_plugs (mock_plug = '.' .join ((MyPlug .__module__ , MyPlug .__name__ )))
207215 def test_patch_plugs_test (self , mock_plug ):
@@ -222,6 +230,24 @@ def test_wrong_measured_value(self):
222230 test_rec = yield openhtf .Test (phase_retval (None ))
223231 self .assertMeasured (test_rec , 'test_measurement' , 0xBAD )
224232
233+ @unittest .expectedFailure
234+ @test .patch_plugs (mock_plug = '.' .join ((MyPlug .__module__ , MyPlug .__name__ )))
235+ def test_wrong_measured_almost_equal_value (self , mock_plug ):
236+ mock_plug .do_stuff .return_value = _DO_STUFF_RETVAL
237+
238+ test_record = yield openhtf .Test (phase_retval (None ), test_phase )
239+ self .assertMeasuredAlmostEqual (test_record , 'numeric_measurement' , 9.0 )
240+
241+ @unittest .expectedFailure
242+ @test .patch_plugs (mock_plug = '.' .join ((MyPlug .__module__ , MyPlug .__name__ )))
243+ def test_wrong_measured_almost_equal_value_with_delta (self , mock_plug ):
244+ mock_plug .do_stuff .return_value = _DO_STUFF_RETVAL
245+
246+ test_record = yield openhtf .Test (phase_retval (None ), test_phase )
247+ self .assertMeasuredAlmostEqual (
248+ test_record , 'numeric_measurement' , 9.5 , delta = 0.1
249+ )
250+
225251 @test .yields_phases
226252 def test_passing_test (self ):
227253 test_record = yield openhtf .Test (phase_retval (None ))
0 commit comments