首页
关于
友链
Search
1
nestJs 基础增删改查
8 阅读
2
python 日志记录器
4 阅读
3
ptyhon 测试数据生成
4 阅读
4
python 处理数据库数据
3 阅读
5
python 封装yaml读取
2 阅读
默认分类
前端开发
HTML
CSS
VUE
JavaScript
React
后端开发
Java
nestJs
自动化测试
登录
Search
标签搜索
自动化测试
nestJs
Typecho
累计撰写
5
篇文章
累计收到
0
条评论
首页
栏目
默认分类
前端开发
HTML
CSS
VUE
JavaScript
React
后端开发
Java
nestJs
自动化测试
页面
关于
友链
搜索到
4
篇与
的结果
2025-05-20
ptyhon 测试数据生成
faker+pandasfaker 生成随机的数据,pandas 转换成表格数据使用安装 pip install faker pandas # 读取 excal 需要安装 # openpyxl 支持 .xlsx # xlrd 支持 .xls示例 import pandas as pd # 导入 pandas,用于数据处理与导出 CSV from faker import Faker # 导入 Faker,用于生成随机测试数据 fake = Faker() # 创建 Faker 实例 # 生成包含10个用户的测试数据列表 data = [] for _ in range(10): username = fake.email() # 生成随机邮箱地址作为用户名 password = fake.password() # 生成随机密码,默认8-16位,含特殊字符等 data.append({'username': username, 'password': password}) # 添加到数据列表中 # 使用 pandas 转换为 DataFrame 表格结构 df = pd.DataFrame(data) # 将 DataFrame 写入 CSV 文件,不写索引列 try: df.to_csv('../output/test_users.csv', index=False, encoding='utf-8') print("生成成功#test_users.csv") except Exception as e: raise print(f"生成失败#{e}") # 转成 json 必须配置: orient="records" 防止中文乱码: force_ascii # json_data = df.to_json(orient="records", force_ascii=False) 常见的 pandas api数字类 numerify() # 三位随机数字 random_digit() # 0~9随机数 random_digit_not_null() # 1~9的随机数 random_int() # 随机数字,默认0~9999,可以通过设置min,max来设置 random_number() # 随机数字,参数digits设置生成的数字位数 pyfloat() # left_digits=5 #生成的整数位数, right_digits = 2 # 生成的小数位数, positive = True # 是否只有正数, pyint() # 随机Int数字(参考random_int()参数) pydecimal() # 随机Decimal数字(参考pyfloat参数) 网络信息 ascii_company_email() # 随机ASCII公司邮箱名 ascii_email() # 随机ASCII邮箱 ascii_free_email() # 生成免费邮箱地址(ASCII 编码) ascii_safe_email() # 生成安全、通用格式的 ASCII 邮箱 company_email() # 生成公司域名邮箱 email() # 生成随机电子邮箱 free_email() # 生成常见的免费邮箱 free_email_domain() # 生成免费邮箱的域名部分 safe_email() # 安全邮箱 domain_name() # 生成域名 domain_word() # 域词(即,不包含后缀) ipv4() # 随机IP4地址 ipv6() # 随机IP6地址 mac_address() # 随机MAC地址 tld() # 网址域名后缀(.com,.net.cn,等等,不包括.) uri() # 随机URI地址 uri_extension() # 网址文件后缀 uri_page() # 网址文件(不包含后缀) uri_path() # 网址文件路径(不包含文件名) url() # 随机URL地址 user_name() # 随机用户名 image_url() # 随机URL地址 chrome() # 随机生成Chrome的浏览器user_agent信息 firefox() # 随机生成FireFox的浏览器user_agent信息 internet_explorer() # 随机生成IE的浏览器user_agent信息 opera() # 随机生成Opera的浏览器user_agent信息 safari() # 随机生成Safari的浏览器user_agent信息 linux_platform_token() # 随机Linux信息 user_agent() # 随机user_agent信息 file_extension() # 随机文件扩展名 file_name() # 随机文件名(包含扩展名,不包含路径) file_path() # 随机文件路径(包含文件名,扩展名) mime_type() # 随机mime Type 基础信息 ssn() # 生成身份证号 bs() # 随机公司服务名 company() # 随机公司名(长) company_prefix() # 随机公司名(短) company_suffix() # 公司性质 credit_card_expire() # 随机信用卡到期日 credit_card_full() # 生成完整信用卡信息 credit_card_number() # 信用卡号 credit_card_provider() # 信用卡类型 credit_card_security_code() # 信用卡安全码 job() # 随机职位 first_name() # 性 first_name_female() # 女性名 first_name_male() # 男性名 first_romanized_name() # 罗马名 last_name() # 名 last_name_female() # 女姓 last_name_male() # 男姓 last_romanized_name() # 罗马姓 name() # 随机生成全名 name_female() # 男性全名 name_male() # 女性全名 romanized_name() # 罗马名 msisdn() # 移动台国际用户识别码,即移动用户的ISDN号码 phone_number() # 随机生成手机号 phonenumber_prefix() # 随机生成手机号段 地理信息 city_suffix() # 市,县 country() # 国家 country_code() # 国家编码 district() # 区 geo_coordinate() # 地理坐标 latitude() # 地理坐标(纬度) longitude() # 地理坐标(经度) postcode() # 邮编 province() # 省份 (zh_TW没有此方法) address() # 详细地址 street_address() # 街道地址 street_name() # 街道名 street_suffix() # 街、路 文本信息 pystr() # 随机字符串 random_element() # 随机字母 random_letter() # 随机字母 paragraph() # 随机生成一个段落 paragraphs() # 随机生成多个段落,通过参数nb来控制段落数,返回数组 sentence() # 随机生成一句话 sentences() # 随机生成多句话,与段落类似 text() # 随机生成一篇文章(不要幻想着人工智能了,至今没完全看懂一句话是什么意思) word() # 随机生成词语 words() # 随机生成多个词语,用法与段落,句子,类似 binary() # 随机生成二进制编码 boolean() # True/False language_code() # 随机生成两位语言编码 locale() # 随机生成语言/国际 信息 md5() # 随机生成MD5 null_boolean() # NULL/True/False # 随机生成密码,可选参数#length#密码长度;special_chars#是否能使用特殊字符; # digits#是否包含数字;upper_case#是否包含大写字母;lower_case#是否包含小写字母 password() sha1() # 随机SHA1 sha256() # 随机SHA256 uuid4() # 随机UUID 时间信息 am_pm() # AM/PM century() # 随机世纪 date() # 随机日期 date_between() # 随机生成指定范围内日期,参数#start_date,end_date取值#具体日期或者today,-30d,-30y类似 date_between_dates() # 随机生成指定范围内日期,用法同上 date_object() # 随机生产从1970-1-1到指定日期的随机日期。 date_this_month() # 生成当前月内的随机日期 date_this_year() # 生成当前年内的随机日期 date_time() # 随机生成指定时间(1970年1月1日至今) date_time_ad() # 生成公元1年到现在的随机时间 date_time_between() # 用法同dates future_date() # 未来日期 future_datetime() # 未来时间 month() # 随机月份 month_name() # 随机月份(英文) past_date() # 随机生成已经过去的日期 past_datetime() # 随机生成已经过去的时间 time() # 随机24小时时间 timedelta() # 随机获取时间差 time_object() # 随机24小时时间,time对象 time_series() # 随机TimeSeries对象 timezone() # 随机时区 unix_time() # 随机Unix时间 year() # 随机年份 集合数据 profile() # 随机生成档案信息 simple_profile() # 随机生成简单档案信息 pyiterable() # 生成一个随机的可迭代对象 pylist() # 生成一个随机的 Python 列表 pyset() # 生成一个随机的 Python 集合 pystruct() # 生成一个包含嵌套数据结构的复杂对象 pytuple() # 生成一个随机的 Python 元组 pydict() # 生成一个随机的 Python 字典 其它 currency_code() # 货币编码 color_name() # 随机颜色名 hex_color() # 随机HEX颜色 rgb_color() # 随机RGB颜色 safe_color_name() # 随机安全色名 safe_hex_color() # 随机安全HEX颜色 isbn10() # 随机ISBN(10位) isbn13() # 随机ISBN(13位) lexify() # 替换所有问号(“?”)带有随机字母的事件。
2025年05月20日
4 阅读
0 评论
0 点赞
2025-05-20
python 日志记录器
logging控制台与文件都输出日志,采用当前时间命名日志文件示例import logging import time import os class MyLogger: def __init__(self): # 定义记录器 self.logger = logging.getLogger() # 这是记录器级别 self.logger.setLevel(logging.DEBUG) # 控制台输出器 sh = logging.StreamHandler() sh.setLevel(logging.INFO) # 文件名 file_name = "{}.log".format(time.strftime("%Y-%m-%d")) # 获取当前文件目录 file_path = os.path.dirname(__file__) file_path = os.path.join(file_path, "..", "log") # 当前文件的上级目录有无名为log的文件夹 if not os.path.isdir(file_path): os.makedirs(file_path) # 创建该目录 # 文件输出器 fh = logging.FileHandler(filename=os.path.join(file_path, file_name), encoding="utf-8") fh.setLevel(logging.INFO) # 设置日志的输出格式 fm = logging.Formatter("%(asctime)s|%(levelname)s|%(filename)s|%(lineno)s|%(message)s|") # 将格式添加给输出器 sh.setFormatter(fm) fh.setFormatter(fm) # 把输出器添加到记录器里 self.logger.addHandler(sh) self.logger.addHandler(fh) logger = MyLogger().logger使用from myLogger import logger # 自己的文件在哪就写哪里 logger.info("这是一条普通日志") logger.warning("这是一条警告日志") logger.error("这是一条错误日志")错误等级对照表级别数值描述典型使用场景NOTSET0未设置级别(继承父Logger的级别)一般不直接使用DEBUG10调试信息,记录详细运行流程开发阶段排查问题INFO20常规信息,记录程序正常运行状态服务启动、配置加载成功WARNING30警告信息,表明潜在问题(不影响程序运行)磁盘空间不足、参数缺省值替换ERROR40错误信息,程序部分功能失效数据库连接失败、文件解析错误CRITICAL50严重错误,程序可能崩溃系统关键资源耗尽、主线程退出
2025年05月20日
4 阅读
0 评论
0 点赞
2025-05-15
python 封装yaml读取
with open+safe_load使用 with open 打开文件,safe_load 读取 yaml 文件数据示例import yaml def read_yaml(file_name, key_word=None): """ 读取 yaml 文件函数 :param file_name: 文件路径 :param key_word: 用例关键字 :return: """ logger.info(f"r开始读取文件:{file_name},key_word:{key_word}") try: with open(file=file_name, encoding="utf-8") as f: # 使用 safe_load 读取 values = yaml.safe_load(f) logger.info(f"r读取文件:{file_name}成功!!!") # 有关键字的时候检测输出所有该关键字的用例 if key_word: new_values = [] for val in values: # 匹配关键字 if val.get('keywords') == key_word: new_values.append(val) return new_values else: return values except Exception as e: logger.warning(f"r读取文件:{file_name},key_word:{key_word} 失败!!!") raise RuntimeError(f"用例数据读取失败: {e}") from e
2025年05月15日
2 阅读
0 评论
0 点赞
2025-05-15
python 处理数据库数据
pymysql安装pip install pymysql示例原始写法,cursor.execute() 抛出异常,cursor.close() 和 db_conn.close() 可能不会执行,导致连接泄漏import pymysql import json from pymysql.cursors import DictCursor def connect_sql(base, sql): """ :param base: 要使用的库名 :param sql: sql语句 :return: 返回值 """ db_conn = pymysql.connect( host='localhost', user='root', password='123', database=base, cursorclass=DictCursor, ) # 创建游标 cursor = db_conn.cursor() # 执行sql语句 cursor.execute(sql) # 返回所有数据 db_record = cursor.fetchall() # 关闭游标 cursor.close() # 关闭连接 db_conn.close() # 处理成json return json.dumps(db_record, ensure_ascii=False)使用with优化import pymysql import json from pymysql.cursors import DictCursor # 封装成函数 def connect_sql(base, sql): """ :param base: 要使用的库名 :param sql: sql语句 :return: 返回值 """ # 使用 with 无需手动关闭 with pymysql.connect( host='localhost', user='root', password='123', database=base, # 返回字典 cursorclass=DictCursor, ) as db_conn: with db_conn.cursor() as cursor: # 执行sql语句 cursor.execute(sql) # 返回所有数据 db_record = cursor.fetchall() # 处理成json 方便断言使用 return json.dumps(db_record, ensure_ascii=False)sqlalchemy+pandas 推荐安装pip install sqlalchemy pandas示例import pandas as pd from sqlalchemy import create_engine def connect_sql(base, sql): # 创建SQLAlchemy引擎(格式:mysql + pymysql: // 用户名: 密码 @ 主机 / 数据库名) db_conn = create_engine(f"mysql+pymysql://root:123@localhost/{base}") # 使用 pands 的 pd 执行 sql df = pd.read_sql(sql, db_conn) # json 格式返回值 return df.to_json(orient='records', force_ascii=False)
2025年05月15日
3 阅读
0 评论
0 点赞