Pytest统计用例的个数并将测试结果群通知
背景
完成了公司的接口自动化测试,现在需要将测试结果,包括总的用例数、成功用例数、失败用例数等通知到公司的teams群,并且可以查看allure报告
代码
需要在项目根目录下的conftest.py文件中编写,运行时会自动统计用例,代码如下
def pytest_terminal_summary(terminalreporter, exitstatus, config): total = terminalreporter._numcollected #这是所有的用例个数 passed = len(terminalreporter.stats.get('passed', [])) #这是运行成功的用例个数 failed = len(terminalreporter.stats.get('failed', [])) #这里运行失败的用例个数 skipped = len(terminalreporter.stats.get('skipped', [])) #这里是skip的运行个数 duration = time.time() - terminalreporter._sessionstarttime #这里是运行的时间 duration_time = round(duration, 2) url = "xxxx" #这里是触发teams机器人通知的url msg = f"Open Api Test Result: Total Cases:{total}; Passed:{passed}; Failed:{failed}; Skipped:{skipped}; Allure Report: http://xxxx/" body = { "groupId": "xxx", #这里是要通知的群的groupId "msg": msg #这里是要通知的内容 } requests.Session().post(url, json=body, verify=False) #调接口触发机器人通知
teams群通知如下
在服务器上设置每天定时执行
首先需要在服务器上安装代码运行的环境,使代码能在服务器上运行
然后安装git,使代码能够从git上拉下来
最后需要安装allure,需要能在服务器上打开allure报告
编写shell脚本
#在运行之前先将上一次的allure进程杀掉,否则端口会被占用,因为下面的端口是写死的 kill -9 `ps aux | grep allur | grep -v grep | awk '{print $2}'` #进入项目文件夹 cd /home/ec2-user/openapi/chimeapi #拉取最新的代码 git pull #pytest执行用例,配置失败重试5次,并生成allure报告 pytest -s --reruns 5 --alluredir ./report --clean-alluredir #启动allure服务,展示报告 allure serve ./report -h 这里是服务器的ip -p 1234
输入命令crontab -e 设置定时执行上面编写的脚本,如下图,设置的为每天8点10分开始执行
设置好之后,就会每天定时执行脚本运行用例了~