【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 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.mzph.cn/diannao/70526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动开发之音频驱动与基础应用编程

目录 CODEC芯片 音频编码 I2S总线接口 数字音频接口(DAI) 设备树配置 ALSA 音频相关概念 应用程序编写 运行测试 CODEC芯片 音频若想被CPU“听到”,就必须转换为CPU能够“听懂”的语言,即二进制数据的0和1。在信号处理领域,声音是模…

在 Java 中解析 JSON 数据

例子解析以下JSON数据 {"code":0,"msg":"成功","data": [{ "host":"1068222.com", "port":"", "m_token":"490e20e70e7de5f21a24b14c12a393f6", "categ…

python——集合(一)

文章目录 集合 set创建集合访问集合项in关键字添加集合元素删除集合元素复制集合使用操作符对集合进行交集、并集、差集、对称差集使用方法对集合进行交集、并集、差集、对称差集子集和超集 frozenset 冻结集合? 不可变集合! 集合 set 什么是集合&#…

DeepSeek 与网络安全:AI 在网络安全领域的应用与挑战

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 在当今数字化时代,网络安全已成为国家、企业和个人面临的重要挑战。从传统的病毒、木马攻击,到高…

【Blender】二、建模篇--05,阵列修改器与晶格形变

阵列修改器是bender里面一个比较常用的修改器,所以我们单独开口来讲,我们会先从几片树叶出发,然后我们用阵列修改器把这几片树叶变成这样的造型和这样的造型。这两个造型分别就代表着阵列修改器最常用的两种偏移方法,我们现在就开始我们先来做几个树叶。 1.树叶建模 首先…

【Python 专题】数据结构 树

LeetCode 题目104. 二叉树的最大深度(gif 图解)方法一:后序遍历(DFS)方法二:层序遍历(BFS)872. 叶子相似的树(DFS 遍历)1448. 统计二叉树中好节点的数目(DFS 遍历)437. 路径总和 III(前缀和 + DFS 回溯)1372. 二叉树中的最长交错路径(DFS)236. 二叉树的最近公共…

Linux下基本指令(4)

Linux权限的概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户…

ubuntu部署小笔记-采坑

ubuntu部署小笔记 搭建前端控制端后端前端nginx反向代理使用ubuntu部署nextjs项目问题一 如何访问端口号配置后台运行该进程pm2 问题二 包体过大生产环境下所需文件 问题三 部署在vercel时出现的问题需要魔法访问后端api时,必须使用https协议电脑端访问正常&#xf…

【联盛德 W803-Pico 试用】简介、工程测试

【联盛德 W803-Pico 试用】简介、工程测试 本文介绍了联盛德微电子 W803-Pico 开发板的基本信息、环境搭建、工程测试等内容。简介包含开发板功能、主控参数及特点、开发板原理图等信息,工程测试包括 Blink、串口打印等方案的演示。 活动详情:联盛德问答…

cursor使用记录

一、如何查看自己登录的是哪个账号 操作路径:Cursor -- 首选项 -- Cursor Setting (有快捷键) 二、状态修改为竖排(默认是横排) 默认如图展示,想要像vscode、idea等等在左侧竖着展示 操作路径&#xff1…

gitlab 解决双重认证无法登录remote: HTTP Basic: Access denied.

问题:gitlab开启了双因素认证 如进行了 OAuth configuration 在进行git操作时如下提示 remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead o…

C语言基础学习指南:从零入门到实战应用——适合零基础学习者与进阶巩固

目录 一、C语言概述与开发环境搭建 二、核心语法与数据类型 三、控制结构与运算符 四、函数与模块化编程 五、指针与内存管理 六、实践建议与资源推荐 结语 一、C语言概述与开发环境搭建 C语言是一种高效、灵活的通用编程语言,广泛应用于系统开发、嵌入式系…

C# 委托——lambda

lambda表达式不简化写起来和匿名函数很像,而匿名函数通常赋值给委托,通过委托进行调用。以下我们对lambda和委托的基本规则与使用进行整理,同时为了加深理解和记忆,我们整理了委托是如何一步步演化到lambda。 1. 委托 委托是一个…

【每日论文】TESS 2: A Large-Scale Generalist Diffusion Language Model

下载PDF或阅读论文,请点击:LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 我们推出了TESS 2,这是一种通用的指令跟随扩散语言模型,其性能优于当代的指令调整扩散模型,有…

conda 配置源

无论是Anaconda vs Miniconda vs Miniforge 中的哪个,只要使用conda就涉及源,换源的目的是为了加速包的获取 修改配置文件 通过修改用户目录下的 .condarc 文件来使用 不同系统下的 .condarc 目录如下: Linux: ${HOME}/.condarcmacOS: ${…

AI大模型发展对语音直播交友系统源码开发搭建的影响

近年来,AI大模型技术突飞猛进,为语音直播交友系统的源码开发搭建带来了深远影响。本文将从技术发展层面,探讨AI大模型如何赋能语音直播交友系统,并分析其对开发流程、功能实现和用户体验等方面带来的变革。 一、技术赋能&#xff…

C++面试题,TCP和UDP方面(1)

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言TCP和UDP的区别UDP如何实现可靠TCP滑动窗口原理TCP流量控制TCP超时重传总结 前言 这是个人总结的C方向的面试题,TCP和UDP方面&#xff0…

Huatuo热更新--如何使用

在安装完huatuo热更新插件后就要开始学习如何使用了。 1.创建主框渐Main 新建文件夹Main(可自定义),然后按下图创建文件,注意名称与文件夹名称保持一致 然后新建场景(Init场景),添加3个空物体…

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot项目搭建 可以集成在自己的项目里,也可以到 spring.io 生成一个项目 生成的话,如下…

如何在 macOS 上配置 MySQL 环境变量

如何在 macOS 上配置 MySQL 环境变量 步骤 1: 查找 MySQL 安装路径 打开终端,使用以下命令查找 mysql 的可执行文件路径: which mysql如果该命令没有返回结果,可以使用 find 命令: sudo find / -name "mysql" 2>/de…