首页 > 编程语言 >Python的click库做命令行工作

Python的click库做命令行工作

时间:2024-04-10 10:00:52浏览次数:19  
标签:case Python self id plan 命令行 sql test click

  • 需求是MeterSphere测试计划状态是已完成/已结束,测试进度不是100%。
  • 排查发现是test_plan_test_case表中已取消关联的用例算在了测试用例总数导致的
  • 所以做了一个命令行工具方便其他人处理该问题

python click库常用函数详解_click函数-CSDN博客

python Click库知识点汇总_python click.choice-CSDN博客

from pprint import pprint

import click
import pymysql


class PostgresContext:
    def __init__(self):
        self.conn = pymysql.connect(host='',
                                    port=3307,
                                    user='root',
                                    password='',
                                    database='metersphere')
        # 防止报 UnicodeDecodeError 错误
        self.cursor = self.conn.cursor()

    def __enter__(self):
        return self.cursor, self.conn

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.cursor.close()
        self.conn.close()


class Options:
    def __int__(self):
        pass

    def execute_sql(self, sql):
        with PostgresContext() as pc:
            cursor, conn = pc
            print(sql)
            cursor.execute(sql)
            conn.commit()

    def select_sql(self, sql):
        with PostgresContext() as pc:
            cursor, conn = pc
            print(sql)
            cursor.execute(sql)
            return cursor.fetchall()

    def find_prepare_case(self, test_plan_name):
        sql = f"select num, name from test_case where id in (select case_id from test_plan_test_case where plan_id = (select id from test_plan where name = '{test_plan_name}') and status = 'Prepare')"
        pprint(self.select_sql(sql))

    def delete_prepare_case_by_id(self, test_plan_name, case_num):
        try:
            sql = f"delete from test_plan_test_case where plan_id = (select id from test_plan where name = '{test_plan_name}') and status = 'Prepare' and case_id = (select id from test_case where num = '{case_num}')"
            self.execute_sql(sql)
            print('删除成功')
        except Exception as e:
            print(e)

    def delete_prepare_case_all(self, test_plan_name):
        try:
            sql = f"delete from test_plan_test_case where plan_id = (select id from test_plan where name = '{test_plan_name}') and status = 'Prepare'"
            self.execute_sql(sql)
            print('删除成功')
        except Exception as e:
            print(e)


@click.command()
@click.option('-p', default='default', help='输入测试计划名称,显示测试计划里所有状态是Prepare的用例')
@click.option('-o', default='one', help='根据测试用例id删除测试计划里状态是Prepare的用例')
@click.option('-a', default='two', help='删除测试计划里所有状态是Prepare的用例')
def test_plan_case(p, o, a):
    option = Options()
    if p != 'default' and o == 'one' and a == 'two':
        option.find_prepare_case(p)
    if p != 'default' and o != 'one':
        option.delete_prepare_case_by_id(p, o)
    if p != 'default' and a != 'two':
        option.delete_prepare_case_all(p)


# yes parameters


def abort_if_false(ctx, param, value):
    if not value:
        ctx.abort()


if __name__ == '__main__':
    test_plan_case()
  • 打包 pyinstaller.exe .\test_plan_case.py 会生成_internal文件夹,需要的一些库和文件会放在这个文件夹里
  • pyinstaller.exe --onefile .\test_plan_case.py 所以用这个命令

标签:case,Python,self,id,plan,命令行,sql,test,click
From: https://www.cnblogs.com/daizichuan/p/18125403

相关文章

  • 肖sir__接口测试之python+rquest+unittest分层自动化框架
    接口测试之接口po框架一、新建一个项目  接口自动化框架设计实战:第一包:config  案例:#登录接口dl_url='http://cms.duoceshi.cn/cms/manage/loginJump.do'dl_d={'userAccount':'admin','loginPwd':'123456'}dl_h="Content-Type:applic......
  • python web 开发 - 基于flask框架的 Hello World 示例
    pythonweb开发-基于flask框架的HelloWorld示例文章目录pythonweb开发-基于flask框架的HelloWorld示例1、主要步骤2、flask安装3、创建程序4、运行程序5、通过浏览器访问1、主要步骤(1)安裝flask:pip3installflask(2)編寫並......
  • 【Python系列】Jupyter Notebook 中执行 Shell 脚本的方法
    ......
  • Day:004(3) | Python爬虫:高效数据抓取的编程技术(数据解析)
    BS4实战-人民网人民网_网上的人民日报(people.com.cn)http://www.people.com.cn/importrequestsfromfake_useragentimportUserAgentfrombs4importBeautifulSoupurl='http://www.people.com.cn/'headers={'User-Agent':UserAgent().chrome}#发送请求res......
  • Windows 中的 REG 命令是用于在命令行界面下直接操作 Windows 注册表的工具。注册表是
    Windows中的REG命令是用于在命令行界面下直接操作Windows注册表的工具。注册表是Windows系统中存储配置信息、应用程序设置以及系统参数的数据库,通过修改注册表可以影响系统的行为和配置。REG命令允许用户通过命令行界面来查询、修改和删除注册表中的键值。它的主要作用......
  • 了解python的装饰器特性
    装饰器相当于一个装饰,不修改函数原本内容,只是增添内容defmy_decorator(func):defwarpper():print("有函数要执行了")func()print("有函数执行完毕")returnwarpper@my_decoratordefsay_hello():print("hello")say_hello()......
  • Python 0基础_变现_38岁_day 5
    '''-------------------元组----------------------------元组于列表类似,不同之处在于元组的元素不可以修改删除,元组使用()定义;注意:当元组中一个元素的时候,后面也要写一个逗号,否则就会被识别为一个普通元素,而不是元组如果要将元组中的元素进行修改或者删除,可以将元组转化为列......
  • Python基础--python数据结构(字符串、列表和元组)
    前言!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战数据结构1.字符串类型str1.1定义上个文件找1.2独有功能大写upper......
  • python调用opencv提示“Rebuild the library with Windows, GTK+ 2.x or Cocoa suppor
    windows下python调用opencv,提示以下问题:cv2.error:OpenCV(4.9.0)D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1272:error:(-2:Unspecified error)Thefunctionisnotimplemented.RebuildthelibrarywithWindows,GTK+2.xorCocoa......
  • Python爬虫+认识html网页文本文件,使用beautifulSoup获取信息
    认识HTMLHTML参考手册:https://www.w3cschool.cn/htmltags/tag-p.htmlHTML线上教程:https://www.runoob.com/html/html-examples.html 菜鸟教程html在线编程器:https://www.runoob.com/try/try.php?filename=tryhtml_comment 提示:将下面代码复制到 菜鸟教程html在线编程......