1、获取企业微信群的机器人webhook
2、获取pytest的用例执行结果,并按指定格式组织内容。
编写case_counts.py,定义一个Count类来记录不同状态的测试用例。
case_counts.py
class Count: all_cases = 0 success_cases = 0 failed_cases = 0 error_cases = 0 skip_cases = 0
conftest.py文件
import time import requests import pytest from case_counts import Count @pytest.hookimpl(hookwrapper=True, tryfirst=True) def pytest_runtest_makereport(item, call): """获取测试结果、生成测试报告""" print('------------------------------------') out = yield report = out.get_result() if report.when =='call': # print(f"测试报告:{report}") # print(f"步骤:{report.when}") print(f"用例id:{report.nodeid}") print(f"用例描述:{str(item.function.__doc__)}") print(f"运行结果:{report.outcome}") Count.all_cases += 1 if report.outcome =="passed": Count.success_cases += 1 elif report.outcome =="failed": Count.failed_cases += 1 elif report.outcome =="error": Count.error_cases += 1 elif report.outcome =="skipped": Count.skip_cases += 1 def pytest_terminal_summary(terminalreporter, exitstatus, config): """汇总测试结果、并发送给企业微信群机器人通知""" run_time = round((time.time() - terminalreporter._sessionstarttime), 2) passrate = (Count.success_cases / Count.all_cases) * 100 print("******用例执行结果统计******") print(f"总用例数:{Count.all_cases}条") print(f"通过:{Count.success_cases}条") print(f"失败:{Count.failed_cases}条") print(f"跳过:{Count.skip_cases}条") print(f"报错:{Count.error_cases}条") print(f"用例通过率:{passrate}%") print(f"用时:{run_time}s") desc =""" 本次执行情况如下: 总用例数为:{} 通过用例数:<font color=\\"info\\">{}条</font> 失败用例数:<font color=\\"warning\\">{}条</font> 错误用例数:{} 跳过用例数:{} 通过率为:{} % 用时:{}s """.format(Count.all_cases, Count.success_cases, Count.failed_cases, Count.error_cases, Count.skip_cases, passrate, run_time) # 发送企业微信通知 - markdown格式 **requests.request("post", url="<https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=37bdd3d1-a885-4ab9-94e1-58b57f37117e>", json={"msgtype":"markdown", "markdown":{"content": desc}})**
3、调用企业微信webhook地址,发送组织好的内容。
企业微信开发者接口文档 :
参考此文件中,调用接口发送请求。
欢迎来到testingpai.com!
注册 关于