首页 > 其他分享 >Pytest统计用例的个数并将测试结果群通知

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

时间:2023-05-04 09:34:51浏览次数:32  
标签:allure terminalreporter 通知 个数 用例 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分开始执行

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

 

标签:allure,terminalreporter,通知,个数,用例,Pytest,运行
From: https://www.cnblogs.com/roselearn/p/17370128.html

相关文章

  • 举一个数据库死锁的例子,MySQL 怎么解决死锁?
    转载:https://juejin.cn/post/7072000882128191518分析&回答在数据库中有两种基本的锁类型:排它锁(ExclusiveLocks,即X锁)和共享锁(ShareLocks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基......
  • 剑指 Offer II 020. 回文子字符串的个数
    题目链接:剑指OfferII020.回文子字符串的个数方法一:动态规划解题思路状态表示:\(dp[i][j]\)表示子字符串\(s[i,j]\)是否为回文串;状态计算:若\(s[i]\)!=\(s[j]\),显然不是;若\(s[i]\)==\(s[j]\),有以下几种可能:\(i\)==\(j\),只有一个字符,是回文串;\(i\)+\(1\)......
  • pytest常用断言
    如上官网所说,pytest使用python中的assert来比较实际值与预期值,实现断言功能1常用的断言方式assertxxxasserta==basserta!=basserta>basserta<bassertainbassertanotinbassertinstance(a,int)asserta>banda>c同时断言多个条件asserta>bo......
  • 12.石油储备(简单搜索 DFS/BFS 统计连通块个数)
    石油储备题目一片土地可以看作是一个\(n\)行\(m\)列的方格矩阵。其中一些方格藏有石油,用@表示,其余方格没有石油,用*表示。每个方格都与其上、下、左、右、左上、右上、左下、右下八个方格视为相邻。如果两个藏有石油的方格相邻,则它们被认为是处于同一片油田,否则它们被......
  • 入门3-Pytest测试用例运行方式(1)Main方法运行
    通过主函数main方式执行If__name__== ‘__main__’:  Pytest.main({“--vs”})一般run.py里用main()方法,里边可以加参数 ......
  • 2023-05-02:如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。 给你一
    2023-05-02:如果一个正整数每一个数位都是互不相同的,我们称它是特殊整数。给你一个正整数n,请你返回区间[1,n]之间特殊整数的数目。输入:n=20。输出:19。答案2023-05-02:可以通过数字组合和状态压缩的动态规划算法来解决。具体过程如下:1.对于给定的正整数n,求出其位数......
  • m基于matlab的AODV,leach自组网网络平台仿真,对比吞吐量,端到端时延,丢包率,剩余节点
    1.算法仿真效果matlab2022a仿真结果如下:     2.算法涉及理论知识概要       AODV是一种应用于无线网状网络的路由协议。它源节点需要发送数据时才进行路由发现。当没有数据发送请求时并不执行。在路由发现过程中首先检查路由表中是否存在从源节点到目的......
  • pytest的几种执行方式
    1pytestxxxx2python-mpytestxxxxpython-mpytest--html=./report/rep2.htmltest_env_pytest_ini.py这个与pytest几乎是相同的,官网是这样说的3pythonpytestxxx这与python-mxxx很像,对于pytest执行结果来说没有区别,python-mxx如上截图所说,它会将当前工作目录......
  • 算法3:质数的个数
    一、质数的定义质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。二、判断质数的方法1for(intj=2;j<i;j++){2if(i%j==0)3break;4if(i==j)5cout<<i<<"";6}三、完整代码1#include<bits/stdc......
  • pytest命令行选项
    一、pytest有很多命令行选项如-v输出详细信息-q简要输出-s打印输出-k"xxx"在filename、classname、functionname来匹配xxx规则,pytest只运行符合匹配结果的部分-mxx寻找具有xxmark的test来运行或不运行-x遇到失败即停止-nnum使用数量为nun的进程并行运行测试......