Pytest统计用例的个数并将测试结果群通知

发布时间 2023-05-04 09:26:44作者: dongzs

背景

完成了公司的接口自动化测试,现在需要将测试结果,包括总的用例数、成功用例数、失败用例数等通知到公司的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分开始执行

设置好之后,就会每天定时执行脚本运行用例了~