• 我用ChatGPT写了一个简单的Python自动化测试脚本


    0 前言

    有时候因为要跑很多rtl的仿真,而现有的资源比较有限,每次都需要等一批rtl仿真结束后,才可以执行下一批,尤其是碰到最末的时候,一批rtl仿真结束,要是在打开电脑去run下一批,确实挺不方便的

    一度想着要是有个脚本就好了,奈何自己Python确实不行,刚好最近有大火的ChatGPT,就用ChatGPT辅助写了个脚本

    1 应用场景和思路介绍

    每个人的仿真资源是有限的,就比如分配给我的资源是10个,那么我一次最多可以丢10个rtl仿真,空闲的资源数量可以通过shell cmd打印出来

    我现在需要的情景是,一次丢多个rtl仿真,但前后只需要丢两次rtl仿真,因此,我可以在第一次丢rtl仿真后,运行脚本,等第一次丢的rtl仿真完成后,自动丢第二次rtl仿真

    因此大题思路如下:(均基于丢完第一次rtl仿真)

    1、执行shell cmd,并将内容写入一个文档中

    2、 读取文档内容,根据正则表达式,提取当前占用资源的数值

    3、比对该数值与设定阈值的大小,判断是进行下一次的rtl仿真,还是等待若干小时进行下次读取状态

    大概就是这样,下面给出Python代码

    2 Python代码

    #!/usr/bin/env python
    
    import subprocess
    import re
    import time
    
    status_cmd = '查看状态的shell指令'
    threshold =    #状态值, int型
    excute_cmd = '符合条件后执行的shell指令'
    sleep_time = #每隔多久检查一次, int型,单位:小时
    find_str = r'指定查找的内容'
    
    #定义子函数
    def extr_num(find_str):
        subprocess.call(status_cmd > 'file.txt', shell=True) #执行shell cmd,并将内容写入 file.txt文件中
        
        with open('file.txt', 'r') as f:
            cont = f.read()
           
        match = re.search(find_str, cont)
        
        if match:
            num = int(match.group(1))
            if num > threshold:
                return num
            else:
                subprocess.call(excute_cmd, shell=True)
                return None
         else:
             print('Error >_<')
             return None
        
    #主函数执行
    result = extr_num(find_str)
    
    while result is not None:
        print("等待 n 小时再次获取状态 ...")
        print(time.strftime('%Y-%m-%d  %H-%M-%S', time.localtime()))
        time.sleep(sleep_time * 60 * 60)
        result = extr_num(find_str)
     
    #执行完后,删除file.txt
    subprocess.call('rm -f file.txt', shell=True)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    具体每个库函数啥作用,有啥需要注意的咱也不懂,毕竟对Python也没那么了解,反正能用,嘿嘿…

  • 相关阅读:
    SignalR简介及实践指南
    商务呈现之危机公关处理
    力扣76. 最小覆盖子串(滑动窗口)
    MySQL 5.7安装教程(win11)
    【37. 线性DP】
    第一章:最新版零基础学习 PYTHON 教程(第十三节 - Python 语句中的 –Python While 循环)
    Android 处理WebView not install(源码分析定位)
    虹科分享 | 选择SAS还是NVMe?虹科网络基础带您一探究竟!
    链表中快慢指针的应用
    maven 更新jar包 仓库下载不下来
  • 原文地址:https://blog.csdn.net/I_learn_code/article/details/130904120