当前位置: 首页 > news >正文

【python】解析自动化脚本文件并按照=测试周期=存储记录

【python】连接Jira获取token以及jira对象
【python】解析自动化脚本文件并按照=测试周期=存储记录
【python】向Jira推送自动化用例执行成功
【python】向Jira测试计划下,附件中增加html测试报告

将已编写的自动化测试用例按照jira号解析出来,并按照测试计划,测试周期,存储到pytest_ready表中,方便接下来调用使用

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2025-02-12 8:45
# @Author  : duxiaowei
# @File    : save_case_name_db.py
# @Software:  将编写的pytest自动测试用例,中所有用例路径名,存储到pytest_ready表中


import os
from datetime import datetime

from com.connect_sqllite import DBlite


def find_int_convertible(lst):
    '''从 一个 字符串list中,找到可以转换成int的值有哪些'''

    def is_int_convertible(item):
        try:
            int(item)
            return True
        except ValueError:
            return False

    return list(map(int, filter(is_int_convertible, lst)))


def parse_filename(filename):
    """
    解析pytest文件名,中的jira号
    """
    name_list = filename.split('&')
    # print(name_list)
    jira_num_list = []
    if len(name_list) == 1:
        l_list = name_list[0].split("_")
        f_list = find_int_convertible(l_list)
        jira_num_list.append(str(f_list[0]))
        return jira_num_list
    else:
        first = name_list[0].split("_")[-1]
        jira_num_list.append(first)
        # 再对最后一个处理
        last = name_list[-1].split("_")[0]
        jira_num_list.append(last)
        # 删除第一个跟最后一个元素,重新拼接
        name_list.pop(0)
        name_list.pop()
        jira_num_list.extend(name_list)
        return jira_num_list


def get_test_files(current_dir):
    """ 获取所有用例名称,"""
    matching_files = []
    # 遍历当前目录下的所有文件和文件夹
    for root, dirs, files in os.walk(current_dir):
        for file in files:
            # 检查文件是否以 .py 结尾,并且以 test_ 开头或以 _test 结尾
            if file.endswith('.py') and (file.startswith('test_') or file.endswith('_test.py')):
                # 文件名
                path = os.path.join(root, file).replace(current_dir, "")
                # print(path)
                name_list = parse_filename(path)
                for i in name_list:
                    p_list = []
                    p_list.append(path)
                    p_list.append(i)
                    matching_files.append(p_list)

    return matching_files


def insert_pytest_ready(cycle_id, plan_id):
    '''将本项目中,所有用例【所有人,已经编写的自动化测试用例】名称存到表pytest_ready表'''
    folder_path = os.path.abspath('..')
    test_files = get_test_files(folder_path)
    for jira in test_files:
        # 先查询是否有记录
        sql_select = "select count(1) from pytest_ready where filename = ? and jira_num= ? and cycle_id=? and plan_num=?"
        arg = (jira[0], jira[1], cycle_id, plan_id)
        result = DBlite().select(sql_select, arg)
        if result[0][0] == 0:
            current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            sql_insert = "insert into pytest_ready(filename, jira_num, createtime, cycle_id, plan_num) values (?,?,?,?,?)"
            arg = (jira[0], jira[1], current_time, cycle_id, plan_id)
            DBlite().change(sql_insert, arg)
        else:
            current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            sql_update = "update pytest_ready set updatetime=? where filename=? and jira_num= ? and cycle_id=? and plan_num=?"
            arg = (current_time, jira[0], jira[1], cycle_id, plan_id)
            DBlite().change(sql_update, arg)

相关文章:

  • react hook useReducer
  • 如何解决服务器被黑客爬虫攻击:全面防护与优化策略
  • Android TabLayout 实现随意控制item之间的间距
  • rk3588/3576板端编译程序无法运行视频推理
  • vue-element-admin 打包部署到SpringBoot
  • Linux Python 调试/堵塞/性能分析与定位工具
  • 【Cesium学习(十三)】Cesium学习主要优秀资源资料总结
  • python用 PythonNet 从 Python 调用 WPF 类库 UI 用XAML
  • 支持向量机 (Support Vector Machine, SVM)
  • ProfiNet转EtherNet/IP罗克韦尔PLC与监控系统通讯案例
  • hydra docker版本
  • 云原生监控体系建设:Kubernetes架构下的全面监控策略
  • DeepSeek R1本地Linux服务器Docker部署<实现网页访问/本地终端访问>完整教程
  • vxe-grid 通过配置式给单元格字段格式化树结构数据,转换树结构节点
  • CentOS7设置静态IP
  • 细分数字货币钱包的不同种类
  • CSS文本属性
  • 网工项目实践2.4 北京公司安全加固、服务需求分析及方案制定
  • CSS基础(浮动、相对定位、绝对定位、固定定位、粘性定位、版心、重置默认样式)
  • 22爬虫:使用Drission Page的两个案例
  • 广东信宜一座在建桥梁暴雨中垮塌,镇政府:未造成人员伤亡
  • 多图|多款先进预警机亮相雷达展,专家:中国预警机已达世界先进水平
  • 雅典卫城上空现“巨鞋”形状无人机群,希腊下令彻查
  • 湖南慈利一村干部用AI生成通知并擅自发布,乡纪委立案
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元
  • 中国恒大披露清盘进展:要求债权人提交债权证明表