zoukankan      html  css  js  c++  java
  • python常用测试库

    python的标准库:安装python自带的库

    1、正则表达式库 re   使用于文本处理和搜索

    匹配:

    text = re.compile('abc') 

    text.match('abc')

    正则表达式的主要元字符: .  ^  $  *  +  ?  {M}  {M,N}  [ ]    d  D  s   ()        ^$     .*? 

    .  匹配任意字符

    import re
    p = re.compile('ca.t')
    print(p.match('caat'))

    * 前边的一个字符出现了一次或多次

    ^ 以什么开头

    $  以什么结尾  'jpg$' 以jpg结尾的图片文件

    +   前边的字符出现了一个或多次

    ?  前面出现了0次或一次

    {} 出现次数  {m,n} 出现次数的范围值

    [] 中括号中只要有一个被匹配到

    
    
    import re
    p = re.compile('c[abc]t')
    print(p.match('cat'))
    print(p.match('cbt'))

    | 字符选择左面或右面  或的意思

    转义

    d  任意数字出现了多次[0-9]+

    D 非数字

    s 任意字符

    () 分组

    ^$ 匹配空行

    .*? 非贪婪匹配  .*贪婪匹配

    import re
    p = re.compile(r'(d+)-(d+)-(d+)') #r 是把后面的内容原样输出,不要转义
    print(p.match('2019-09-08').group(1)) group(1)取出第一部分 groups取出所有部分
    #match只用于匹配字符串,如果被匹配的字符串出现了特殊情况,match匹配不到,可以使用
    #search进行搜索匹配
    p1 = re.compile(r'(d+)-(d+)-(d+)')
    print (p1.search('aa2019-09-09uuuu')
    phone = '123-456-789 #这是我电话'
    p=re.sub(r'#.*$','',phone) #sub 按照正则规则替换某些文本
    print(p)
    p2 = re.sub(r'D','',p)
    print(p2)

    2、处理日期和时间类型数据  time datatime

    import datetime
    import time

    print(datetime.datetime.now())
    newtime = datetime.timedelta(minutes=10)
    print(datetime.datetime.now()+ newtime)

    one_day=datetime.datetime(2019,07,17)
    new_date=datetime.timedelta(days=10)
    print( one_day + new_date)
    print(time.strftime('%Y-%m-%d(%H:%M)'))  

    2019-07-15 12:17:34.304183
    2019-07-15 12:27:34.304238
    2019-07-27 00:00:00
    2019-07-15(12:17)

    3、数字和数学类型的处理math random

    random.uniform(1,20)  #随机获取1到10中一个浮点数
    random.randint(1,20) #随机获取1到20中的一个整数
    random.choice(seq) #随机获取seq中的一个元素
    random.sample(seq,k) #随机获取seq中的K个元素
    random.shuffle(list) #打乱list元素顺序
     

    4、文件和目录访问  pathlib  os.path  system

    import  os
    print( os.path.abspath('..')) #当前所在根目录的上级目录
    print( os.path.exists('/Users')) #/User 是否存在该目录
    print( os.path.isdir('/Users')) #是否是目录
    print( os.path.isfile('/User')) #是否是文件
    print(os.path.join('/User/wangjianqing/','b/c')) #路径的拼接

    from pathlib import Path
    p = Path('..') #把点封装成p
    print (list(x for x in p.iterdir() if x.is_dir())) #查看当前上级有哪些目录,并列举
    print ( p.resolve()) #查看当前目录

    p.is_dir()
    q = Path('/wangjianqing/a/b/c')
    Path.mkdir(q,parents=True) #新建一个目录 目录中间不存在的部分会被自动创建

    import os
    print(os.listdir()) #返回指定目录下的所有文件和文件名,不包括字目录。
    print(os.getcwd()) #放回当前python中正在工作的目录
    print(os.stat('./hanshu.py')) #获取文件属性,文件大小,创建时间,最后访问时间
    os.removedirs("/XXX/XXX") #删除多个目录
    os.system() #运行shell命令
    os.path.join(path,name) #链接目录与文件名或目录 兼容win和linux os.seq 分隔符不一样
    os.mkdir(name) #创建目录
    os.path.basename(path) #返回文件名 如果传如路径没有文件存在 返回为空
    os.path.exists("")   #判断某文件存不存在
    os.path.isfile("") #判断是不是文件
    import sys
    print(sys.path) #返回当前PYTHONPATH的列表
    print(sys.argv) #返回当前命令行参数
    print(sys.exit) # 退出当前python进程
    print(sys.platform) #获取当前系统平台
    print(sys.stdin) #标准输入流
    print(sys.stdout) #标准输出流
    print(sys.stderr) #标准错误输出
     

    5、数据压缩和归档 tarfile

    6、通用操作 logging argparse

    logging参考文章: https://cuiqingcai.com/6080.html

    logging.basicConfig(level=logging.DEBUG,
    filename='output.log',
    datefmt='%Y/%m/%d %H:%M:%S',
    format='%(asctime)s - %(name)s - %(levelname)s - %(lineno)d - %(module)s - %(message)s')
    logger = logging.getLogger(__name__)

    logger.info('This is a log info')
    logger.debug('Debugging')
    logger.warning('Warning exists')
    logger.info('Finish')
     

    7、多线程 threading queue

     

    8、Internet 数据处理的base64    urllib

     

    9、结构化标记处理工具 html xml

     

    10、开发工具的  unitest

     

    11、调试工具timeit

     

    12、软件包发布 venv

     

    13、MysqlDB  pymysql

    import numpy as np
    import pandas as pd
    from pandas import DataFrame,Series
    import pymysql
    import pymysql.cursors
    #---------------------数据连接---------------------------#
    def connection(database_key):
    mysql = {'host': '', 'port': 3306, 'user': 'root', 'passwd': '', 'db': '', 'charset': 'utf8'}
    if database_key == 'test':
    mysql['host'] = 'localhost'
    mysql['passwd'] = '123456'
    mysql['db'] = 'mytest'
    return mysql
    # 创建连接
    conn = pymysql.connect(**connection('test'))
    # 创建游标
    cursor = conn.cursor()
    # 执行SQL,并返回收影响行数
    effect_row = cursor.execute("select * from user3")
    print(cursor.fetchone())
    # 执行SQL,并返回受影响行数
    effect_row = cursor.execute("update user3 set name='ss' where symbol = 2")
    print(effect_row)
    # 执行SQL,并返回受影响行数,执行多次
    effect_row = cursor.executemany("insert into user3(symbol,name) values(%s,%s)", [(20,"kloh"),(40,'bolo')])
    print(effect_row)
    #提交,不然无法保存新建或者修改的数据
    conn.commit()
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()

    14、shutil

    是一种高层次的文件操作工具, 代替一些shell命令
    类似于高级API,而且主要强大之处在于其对文件的复制与删除操作更好的支持。
    import shutil

    # 将文件内容拷贝到另一个文件中
    shutil.copyfileobj(open('old.txt', 'r'), open('new.txt', 'w'))

    # 拷贝文件
    shutil.copyfile('old.txt', 'old1.txt')

    # 仅拷贝权限。内容、组、用户均不变
    shutil.copymode('old.txt', 'old1.txt')

    # 复制权限、最后访问时间、最后修改时间
    shutil.copystat('old.txt', 'old1.txt')

    # 复制一个文件到一个文件或一个目录
    shutil.copy('old.txt', 'old2.txt')

    # 在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了
    shutil.copy2('old.txt', 'old2.txt')

    # 把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
    shutil.copytree('C:/Users/xiaoxinsoso/Desktop/aaa', 'C:/Users/xiaoxinsoso/Desktop/bbb')

    # 移动目录或文件
    shutil.move('C:/Users/xiaoxinsoso/Desktop/aaa', 'C:/Users/xiaoxinsoso/Desktop/bbb') # 把aaa目录移动到bbb目录下

    # 删除一个目录
    shutil.rmtree('C:/Users/xiaoxinsoso/Desktop/bbb') # 删除bbb目录

    #打包压缩文件
    shutil.make_archive(base_name,format)



    15、json库

    import json
    json.load()    #将json字符串转化成python对象
    json.dumps()  #将python对象转化成json字符串

    16、python3. subporcess 子进程管理模块

    subporcess 模块允许你产生新的进程,并且可以把输入,输出, 错误 直接连接到管道,最后获取结果,python也有俩个比较功能不是那么太全的内置模块<os.system, os.spawn..>等这些,总之这家伙的出现就是代替那些的

    17、ConfigParser模块

    用来解析类似.ini的文件

    [tomcat_server]

    Ip_address:192.168.22.10

    account:testerhome

    password:123456

    Config实例常用方法

    config.get("Section","options"):获取指定section下对应的options值

    config.sections() 获取配置文件中的sections

    config.has_section('section') 判断配置文件中是否有对应的section

    config.has_option('section','option'):判断对应的section是否有对应的option

    18、Requests库

  • 相关阅读:
    为什么Java中字符串是不可变的
    面试问题-使用Java线程做数学运算
    Java中静态类型检查是如何进行的
    Java是如何处理别名(aliasing)的
    Java字符串中常见的10个问题
    深入理解“HelloWorld”小程序
    往文件中按行写入数据
    HashSet vs TreeSet vs LinkedHashSet
    FileOutputStream VS FileWriter
    CentOS下添加Root权限用户(超级用户)方法
  • 原文地址:https://www.cnblogs.com/1026164853qqcom/p/11059783.html
Copyright © 2011-2022 走看看