@@ -291,6 +291,43 @@ async def test_telemetry_returns_answer(self):
291
291
self .assertEqual (expected_answer , results [0 ].answer [0 ])
292
292
self .assertEqual ('Editorial' , results [0 ].source )
293
293
294
+ async def test_telemetry_returns_answer_when_no_answer_found_in_kb (self ):
295
+ # Arrange
296
+ question : str = 'gibberish question'
297
+ response_json = QnaApplicationTest ._get_json_for_file ('NoAnswerFoundInKb.json' )
298
+ telemetry_client = unittest .mock .create_autospec (BotTelemetryClient )
299
+ qna = QnAMaker (QnaApplicationTest .tests_endpoint , telemetry_client = telemetry_client , log_personal_information = True )
300
+ context = QnaApplicationTest ._get_context (question , TestAdapter ())
301
+
302
+ # Act
303
+ with patch ('aiohttp.ClientSession.post' , return_value = aiounittest .futurized (response_json )):
304
+ results = await qna .get_answers (context )
305
+
306
+ telemetry_args = telemetry_client .track_event .call_args_list [0 ][1 ]
307
+ telemetry_properties = telemetry_args ['properties' ]
308
+ number_of_args = len (telemetry_args )
309
+ first_answer = telemetry_args ['properties' ][QnATelemetryConstants .answer_property ]
310
+ expected_answer = 'No Qna Answer matched'
311
+ expected_matched_question = 'No Qna Question matched'
312
+
313
+ # Assert - Check Telemetry logged.
314
+ self .assertEqual (1 , telemetry_client .track_event .call_count )
315
+ self .assertEqual (3 , number_of_args )
316
+ self .assertEqual ('QnaMessage' , telemetry_args ['name' ])
317
+ self .assertTrue ('answer' in telemetry_properties )
318
+ self .assertTrue ('knowledgeBaseId' in telemetry_properties )
319
+ self .assertTrue ('matchedQuestion' in telemetry_properties )
320
+ self .assertEqual (expected_matched_question , telemetry_properties [QnATelemetryConstants .matched_question_property ])
321
+ self .assertTrue ('question' in telemetry_properties )
322
+ self .assertTrue ('questionId' in telemetry_properties )
323
+ self .assertTrue ('articleFound' in telemetry_properties )
324
+ self .assertEqual (expected_answer , first_answer )
325
+
326
+ # Assert - Validate we didn't break QnA functionality.
327
+ self .assertIsNotNone (results )
328
+ self .assertEqual (0 , len (results ))
329
+
330
+
294
331
async def test_telemetry_pii (self ):
295
332
# Arrange
296
333
question : str = 'how do I clean the stove?'
0 commit comments