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

ops/2025/2/22 16:28:05/

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

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

python">#!/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 datetimefrom com.connect_sqllite import DBlitedef find_int_convertible(lst):'''从 一个 字符串list中,找到可以转换成int的值有哪些'''def is_int_convertible(item):try:int(item)return Trueexcept ValueError:return Falsereturn 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_listelse: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_listdef 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_filesdef 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)

http://www.ppmy.cn/ops/160546.html

相关文章

鸿蒙-验证码输入框的几种实现方式-上

文章目录 效果图、优缺点多TextInput多 TextCanvas 绘制 多个 TextInput 拼接放置四个输入框焦点移动输入时向后移动输入完成回调删除时向前移动 防止点击总结 最近在做应用鸿蒙化,说白了就是把原来Android、iOS的代码重新用ArkTS写一遍,我负责基础建设和…

Linux自学day24-进程和线程2

一 进程结束 这段代码的主要功能是创建一个子进程,子进程休眠 10 秒后以退出状态码 10 结束,父进程等待子进程结束并回收其资源,同时根据子进程的退出状态输出相应的信息。 int main(int argc, const char **argv) {// 定义一个 pid_t 类…

回溯算法:非递减子序列子集,这题的去重并不是通解!!!!

一、题目 二、分析 这道题是有重复元素的,我们需要做到单层去重。可以参考以下链接 回溯算法:子集2-CSDN博客但是,以往的去重我们都是利用used数组和对输入的数组进行排序才做到的,这道题要求我们求子序列,我们是无法…

Mac OS JAVA_HOME设置

个人博客地址:Mac OS JAVA_HOME设置 | 一张假钞的真实世界 在MacOS上使用DMG文件安装了Jdk8 之后,在默认路径下找不到JDK的HOME路径: $ which java /usr/bin/java $ ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 12 6 2015 /usr/b…

工业大数据实验室解决方案

一、项目目的 建成产教深度融合的高水平专业化工业大数据实践实训基地; 培养技术扎实、工程实践能力强的工业大数据人才; 赋能院校建设“双师型”创新师资队伍; 校企深度合作,促进教育、人才、科技、产业等要素双向流动&#x…

巧用GitHub的CICD功能免费打包部署前端项目

近年来,随着前端技术的发展,前端项目的构建和打包过程变得越来越复杂,占用的资源也越来越多。我有一台云服务器,原本打算使用Docker进行部署,以简化操作流程。然而,只要执行sudo docker-compose -f deploy/…

纷析云开源版- Vue2-前端表格使用

table 数据超出文本省略 <TableItem title"响应参数"><template slot-scope"{data}"><TextEllipsis text-class"link" :text"data.responseParams" more"..." :height"20" use-tooltip/></…

工业级无人机手持地面站技术详解

工业级无人机手持地面站是无人机系统的核心组成部分&#xff0c;它集控制、通信、数据处理于一体&#xff0c;为无人机的安全飞行和任务执行提供全面支持。以下是对工业级无人机手持地面站技术的详细解析&#xff1a; 一、硬件构成 1. 处理器与操作系统&#xff1a; 工业级手…