接口定时测试+钉钉通知+Python自动化测试+HTMLTestRunner生成测试报告

一、基本介绍

Python+unittest+钉钉+crontab,定时测试API,并发送测试结果到钉钉群,第一时间掌握API状况

二、项目目录结构

2.1 functions.py

该py用于存放项目所需的一些函数,比如钉钉机器人发送消息

def DingDingalert(msg):
    """
    send alert info by DingDing
    :param msg:要发送的内容
    :return:
    """
    data = {
        'msgtype': 'text',
        'text': {
            "content": msg
        },
    }
    try:
        return requests.post(DINGDING_URL_WEBHOOK, json=data)
    except:
        traceback.print_exc()
#DINGDING_URL_WEBHOOK就是钉钉群添加机器人,设置里的webhook地址,不懂的可以百度 钉钉群机器人发送消息
def getMessage(filepath):
	#读取文件内容
    message = ""
    for line in open(filepath):
        message = message + line
    # print(message)
    return message

2.2 settings.py

用于存放项目的一些全局变量,比如host,api url

2.3 run_all_cases.py

主函数,项目执行该文件即可

# -*- coding:utf-8 -*-
#服务器一般默认是Python2,所以第一句申明最好加上
import os
import unittest
from functions import *

def all_case():
    case_dir = os.path.join(os.getcwd(), "case")#也可以用绝对目录存放测试用例的目录,定时任务时钉钉消息可能不会发,改成绝对目录就好了
    print(case_dir)
    testcase = unittest.TestSuite()#初始化一个测试套件用来装测试用例
    discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py", top_level_dir=None)#寻找case_dir下所有test开头的测试用例
    testcase.addTests(discover)
    print(testcase)
    return testcase


if __name__ == "__main__":
    # runner = unittest.TextTestRunner()
    # runner.run(all_case())

    # test report 为了方便发送消息,把测试结果保存到TXT文档里,也可以用HTML报告形式
    with open('APITextReport.txt', 'w') as f:
        runner = unittest.TextTestRunner(stream=f, verbosity=2)
        runner.run(all_case())
    # send report to dingding
    msg = getMessage("APITextReport.txt")#读取文件内容保存到变量用于钉钉消息发送
    print("**************************")
    print(msg)
    DingDingalert(msg)#调用Dingding函数发消息
    
    #以下是生成测试报告的写法,不需要则注释
    import time
	import HTMLTestRunner#需下载HTMLTestRunner.py放在Python目录site-packages下
	#下载链接:https://download.csdn.net/download/weixin_42166361/15543401
    # 获取当前时间
    now = time.strftime("%Y-%m-%d %H_%M_%S")
    # 定制报告名称
    filename = now + '_result.html'
    # 向报告写入测试结果数据
    fp = open(filename, 'wb')
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
                                          title='接口自动化测试报告',
                                          description='运行环境:环境:windows 10 浏览器:chrome 语言: Python3')
    # 运行测试集
    runner.run(all_case())
    # 关闭报告文件
    fp.close()

2.4 case目录

分了两个目录APP和web,用于区别不同的api 类型,也可以不用
简单举个例子吧
目录下新增py,比如test_getbaidu.py,所有用例命名前缀一定要统一,方便程序收集所有用例,哪个不想执行可以改掉前缀
代码如下

# -*- coding:utf-8 -*-
import json
import unittest
import time
from settings import *
from functions import *


class Test(unittest.TestCase):
    def setUp(self):
        print("start!")

    def test_getbaidu(self):
        """
        打开百度
        """
        print("执行测试用例:打开百度")
        url_baidu = "https://www.baidu.com"
        res = requests.post(url_baidu)#这个比较简单,一般接口还有body,header
        result = res.text
        assert res.status_code == 200
    def tearDown(self):
        time.sleep(1)
        print("end!")
if __name__ == "__main__":
    unittest.main()
        

三、服务器定时任务crontab

3.1 编辑crontab

输入命令crontab -e
编辑内容如
每5分钟执行一次
*/5 * * * * python /root/apipatrolinspection/run_all_cases.py

每天2点十分执行
10 2 * * * python /root/apipatrolinspection/run_all_cases.py
其他定时规则可百度crontab规则,以上路径最好用绝对路径包括Python

查看日志文件:
tail -f /var/log/cron.log

四、结束

有问题可以留言

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值