После записи завершения автоматизации интерфейса pytest отправьте отчет о тестировании в группу DingTalk. Первый шаг: конечно, добавить в группу специального робота DingTalk.
Наиболее важные вещи, которые следует добавить при добавлении, — это адрес веб-перехватчика (запрос информации о ссылке для отправки сообщений) и пользовательские ключевые слова (содержимое сообщения должно содержать ключевые слова, прежде чем его можно будет отправить).
Для получения подробной информации вы можете просмотреть официальный вводный документ https://open.dingtalk.com/document/robots/custom-robot-access/.
Шаг 2. Добавьте в код запрос на отправку сообщений DingTalk. Перейдите непосредственно к коду. Это очень просто. Поскольку платформа тестирования интерфейса интегрирована с Jenkins, отчет каждого теста сохраняется в папке с именем BUILD_TAG.
def send_dingtalk_message(BUILD_TAG):
'''
:param BUILD_TAG:
:return:
'''
#Получаем имя проекта Jenkins
JOB_NAME = basedir2.split("/")[-1]
#Получить токен Webhook
dingtalk_Webhook = ReadConfig().get_config(file_name=Get_project_path('test_case_config'), section='ENV', option='dingtalk_Webhook')
logger.write_msg(INFO, «Начать отправку отчета о тестировании в DingTalk»)
Ссылка на HTML-отчет #testResults
html_report=f'http://jks.qa.xxx.com/job/xxx/view/All/job/{JOB_NAME}/ws/report/{BUILD_TAG}/report.html'
#readtest копия результатов
path = basedir2 + '/report/result.txt'
if os.path.exists(path):
pass
else:
print(" %s Файл не существует" % path)
exit(0)
with open(file=path,encoding='utf-8',mode='r') as fp:
result = fp.read()
#Отправляемый контент должен содержать ключевые слова, заданные роботом
cont = "автоматизация интерфейса завершена, просмотрите результаты\n"+result+"\n"+f"ссылка на отчет о тестировании:{html_report}" # При добавлении робота сюда должны быть включены ключевые слова в «Настройках безопасности», вот «автоматизациятест».
dates = {
"msgtype": "text",
"text": {
"content": cont
}
}
url = f"https://oapi.dingtalk.com/robot/send?access_token={dingtalk_Webhook}" # Введите адрес вебхука, сгенерированный выше.
headers = {
'Content-Type': 'application/json'
}
#Отправить запрос
res = requests.post(url=url,data=json.dumps(dates),headers=headers)
logger.write_msg(INFO,res.json())
Для отправки сообщений DingTalk вы используете функцию-перехватчик pytest_terminal_summary. После сбора результатов теста отправьте их напрямую.
def pytest_terminal_summary(terminalreporter):
"""
Собирайте результаты
"""
metadata = terminalreporter._session
logger.write_msg(INFO, metadata.config._metadata)
if 'BUILD_TAG' in metadata.config._metadata.keys():
logger.write_msg(INFO, f"build_tag={metadata.config._metadata['BUILD_TAG']}")
BUILD_TAG = metadata.config._metadata['BUILD_TAG']
send_dingtalk_message(BUILD_TAG)
Шаг 3. Убедитесь, что отчет, отправленный DingTalk, точен.