Python脚本之准备测试环境的用户数据

2023-05-16

本文为博主原创,未经授权,严禁转载及使用。
本文链接:https://blog.csdn.net/zyooooxie/article/details/127645678

这期是讲述下 我准备测试环境用户数据的经历。

【实际这篇博客推迟发布N个月】

个人博客:https://blog.csdn.net/zyooooxie

【以下所有内容仅为个人项目经历,如有不同,纯属正常】

经历

之前测试环境的用户 我造的时候 user_id是Faker生成的;union_id直接取了 user_id的前15位,有天我测缓存时,发现有问题:union_id出现了重复的情况,所以我清掉所有相关记录后,想着 重新造一批数据:还是用测试环境本就有的用户 + 调整union_id后的值。

就找大佬捞了 100w用户信息,只要2个字段:手机号(明文)+ user_id。因为我这边项目 要用到加密手机号(需要请求一个加密接口),我就写了脚本来跑: https://blog.csdn.net/zyooooxie/article/details/100106284。


# 当晚跑了后,我查看本地日志,

# 第一条是 读取txt用户信息,放入队列后,队列的长度;
19:51:08-wc_performance_test.py-main_1101-line:96-INFO:1000000

# 第二条 是成功加密,已经写入新的txt_1 的长度;
22:38:12-wc_performance_test.py-write_txt-line:210-INFO:998746

# 第三条是没有拿到响应的(我设置 超时时间为0.5s),写入新的txt_2 的长度。
22:38:13-wc_performance_test.py-write_txt-line:210-INFO:1254

# 就 重新跑 失败的这些,第一条是 新读取txt_2 用户信息,放入队列后,队列的长度;
22:47:03-wc_performance_test.py-main_1101-line:96-INFO:1254

# 第二条 到 第五条是 每次起100个线程,跑过程中 队列的长度 逐渐变小,当队列长度小于线程数,我是直接将其扔到 失败list; 
22:47:10-wc_performance_test.py-main_1101-line:96-INFO:354
22:47:10-wc_performance_test.py-main_1101-line:96-INFO:254
22:47:11-wc_performance_test.py-main_1101-line:96-INFO:154
22:47:11-wc_performance_test.py-main_1101-line:96-INFO:54
22:47:11-wc_performance_test.py-main_1101-line:102-INFO:小于线程数:54

# 第六条是 成功加密,已经写入新的txt_3 的长度;
22:47:11-wc_performance_test.py-write_txt-line:210-INFO:994

# 最后一条是 没有拿到响应的(我设置 超时时间为0.5s)+ 小于线程数时的,写入新的txt_4 的长度。
22:47:11-wc_performance_test.py-write_txt-line:210-INFO:260

此时,我将 txt_3的内容 复制 到 txt_1时,复制完了,我看 整个txt_1的行数 超了100w,这不扯呢?明明还有260条没加密的,咋可能就超了?

发现、解决问题

去除 我不小心多复制的记录

Counter类

ABC = [(k, v) for k, v in abc.items() if v != 1]

在这里插入图片描述

去除 重复手机号

ABC = [d[0] for d in ABC]

在这里插入图片描述

去除 非11位手机号

all_data_list_2 = [adl[0] for adl in all_data_list if len(str(adl[0])) != 11]

在这里插入图片描述

去除 异常user-id

all_data_list_3 = [adl[1] for adl in all_data_list if len(adl[1]) <= 15]

在这里插入图片描述

代码

"""
@blog: https://blog.csdn.net/zyooooxie
@qq: 153132336
"""

def test_1101():
    """
    用户信息txt文件 去重
    :return:
    """
    
    all_data_list = read_txt_func(file=r'D:\100W用户4.txt', get_all='True')
    Log.info(len(all_data_list))

    all_data_list_2 = [adl[0] for adl in all_data_list if len(str(adl[0])) != 11]
    Log.info(len(all_data_list_2))
    Log.info(all_data_list_2)

    # all_data_list_2 = dict.fromkeys(all_data_list_2)

    all_data_list_3 = [adl[1] for adl in all_data_list if len(adl[1]) <= 15]
    Log.info(len(all_data_list_3))
    Log.info(all_data_list_3)

    # all_data_list_2 =[(str(adl[0]), *adl[1:]) for adl in all_data_list if adl[0] not in all_data_list_2]
    # Log.info(len(all_data_list_2))

    all_data_list_1 = [adl[-1] for adl in all_data_list if adl[-1].endswith('%3D')]
    Log.info(len(all_data_list_1))

    # abc = Counter(all_data_list_1)

    # ABC = [(k, v) for k, v in abc.items() if v != 1]
    # Log.info(ABC)

    # ABC = [k for k, v in abc.items() if v == 1]
    # ABC = {k: None for k, v in abc.items() if v == 1}

    # all_data_list_2 = [tuple(adl) for adl in all_data_list if adl[0] in ABC]
    # all_data_list_2 = [(str(adl[0]), *adl[1:]) for adl in all_data_list if adl[0] in ABC]
    # Log.info(len(all_data_list_2))

    # ABC = [d[0] for d in ABC]
    #
    # ABC.extend([k for k, v in abc.items() if v == 1])
    # Log.info(len(ABC))
    # ABC = [(str(d[0]), *d[1:]) for d in ABC]
    #
    # write_txt(all_data_list_2)


def write_txt(data: Union[str, list]):
    """
    将加密结果 写入文件(可一条一条写入,也可一次性全部写入)
    :param data:单独一条记录str or  全部记录list
    :return:
    """
    file = r'D:\param_{}.txt'.format(random.randint(1, 99999))

    ls = os.linesep

    with open(file, mode='a', encoding='utf-8') as f:
        if isinstance(data, str):
            # f.write(''.join([data, ls]))
            f.write(''.join([data, '\n']))

        elif isinstance(data, list):
            Log.info(len(data))

            data = [''.join([d, '\n']) if type(d) == str else ''.join([','.join([*d]), '\n']) for d in data]

            f.writelines(data)

反思、最终生成的txt

从没想到 最初的txt文件中的用户信息 会有坑;换个角度想想:同一用户手机号,多条user-id,应该是注销后,再次注册;非11位手机号,是港澳台、海外用户;

最后生成的txt:

在这里插入图片描述

本文链接:https://blog.csdn.net/zyooooxie/article/details/127645678

个人博客 https://blog.csdn.net/zyooooxie

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python脚本之准备测试环境的用户数据 的相关文章

随机推荐

  • 关于驱动程序的可移植性

    差不多所有的linux内核设备驱动都可以运行在不止一种处理器上 这仅仅因为设备驱动作者遵循一些重要规则 这些规则包括使用合适的变量类型 xff0c 而不是依赖于特定内存页大小 xff0c 提防外部数据的大小端模式 xff0c 设立合适的数据
  • centos7 安装mysql详细流程

    工作中经常需要安装mysql xff0c 每次安装的时候 xff0c 总是用不同的方法安装 xff0c 有错误就解决一下 xff0c 今天又重新装了一次mysql xff0c 记录下过程 xff0c 以后就用这种方式安装了 xff01 1
  • 10000端口无法运行

    1 查询端口 netstat ano findstr 10000 2 查询端口名 tasklist findstr 1572 3 关闭端口 taskkill pid 1572 F
  • Cmake编译-CMAKE_C_COMPILER-NOTFOUND解决

    第一次写博客 xff0c 其实就是记录一下从零开始的学习之路上遇到的各种 bug xff0c 一方面为了防止忘了犯过的错误 xff08 比如下一次 xff09 xff1b 另一方面为了从错误中汲取经历 分析 bug 之前 xff0c 记录一
  • libcurl官方实例代码(HTTP,FTP,上传下载等等)

    http curl haxx se libcurl c example html Some of the Examples simple HTTP simple c shows how to get a remote web page in
  • stm32驱动NRF24L01_原理+代码解析

    目录 概念 废话篇 xff08 24L01简介 xff09 引脚分配 工作模式 通信地址理解 xff08 个人疑难点 xff09 原理分析 寄存器赏析 寄存器操作指令 配置寄存器 xff08 CONFIG xff0c 位置 xff1a 0X
  • CSS实现进度条和订单进度条

    由于近期需要做一个订单进度条 xff0c 比较直观的反应当前订单的状态 xff0c css样式借鉴了网上的相关代码 xff0c 下面是效果图 xff0c 以及实现说明 一 说明 1 首先页面需要引入jQuery的相关js 一般页面都已经引入
  • ROS中CANopen的使用(1)

    ROS中CANopen的使用 xff08 1 xff09 今天终于实现了通过ros来控制无人车 xff0c 心情非常激动 xff0c 先简要记录 工作环境 工控机使用的Ubuntu18 02 xff0c can卡采用的innodisk的UC
  • 组合导航在ROS中的解析(2)

    工作环境 ubuntu18 02 xff0c 组合导航使用网口接口 xff0c ros使用melodic实现过程 include lt ros ros h gt include lt stdio h gt include lt stdlib
  • 上位机与下位机进行交互

    一 上位机与下位机 xff08 1 xff09 什么是上位机 上位机是指可以直接发出操控命令的计算机 这里使用的是winfrom xff08 2 xff09 什么是下位机 下位机是指直接控制设备获取状况的计算机 xff0c 一般是PLC 单
  • alist无法访问文件 提示“failed get link ”这样修复

    阿里网盘挂载alist无法访问文件 xff0c 提示 failed get link invalid X Device Id xff1f 34 Failed get link invalid X Device Id 34 是挂载阿里云网盘到
  • STM32F4应用-串口通信

    STM32F4应用 串口通信 1 基本介绍1 1 简介1 2 串口协议1 3 通信过程 2 配置过程2 1 引脚复用2 2 配置步骤2 3 例子 参考文献 1 基本介绍 1 1 简介 串口通信涉及USART TX RX xff0c GND三
  • 使用ADB命令来停用、卸载荣耀20 PRO的系统应用

    今年双十一买了部荣耀20 Pro手机 xff0c 某天感觉某个系统应用 系统更新 贼烦人 xff0c 过段时间就提醒一次 xff1b 我就被逼着上网搜有没有思路 xff0c 然后就打开了罪恶的大门 个人博客 xff1a https blog
  • Python笔记【二】

    之前分享过一次我在学习Python的笔记 xff0c Python笔记 一 xff0c 最近有些新的收获 xff0c 分享一下 xff1b 个人博客 xff1a https blog csdn net zyooooxie random sa
  • Fiddler 使用命令行和Filters

    本文为博主原创 xff0c 未经许可严禁转载 本文链接 xff1a https blog csdn net zyooooxie article details 109020837 之前分享过一期 Fiddler断点 修改响应数据 xff0c
  • 代码改变生活-使用You-Get下载bilibili的视频【一】

    本文为博主原创 xff0c 未经许可严禁转载 本文链接 xff1a https blog csdn net zyooooxie article details 111307733 这篇分享是我在csdn的第100篇原创了 xff0c 真的是
  • Appium app自动化测试经验分享-find_element_by_android_uiautomator ()【二】

    本文为博主原创 xff0c 未经许可严禁转载 本文链接 xff1a https blog csdn net zyooooxie article details 113868447 之前分享过 find element by android
  • 数据完整性测试之【三】Redis缓存和数据库表里的记录

    本文为博主原创 xff0c 未经授权 xff0c 严禁转载及使用 本文链接 xff1a https blog csdn net zyooooxie article details 119377944 前面分享过 接口返回值 和 表记录 的校
  • Python笔记【十一】

    本文为博主原创 xff0c 未经授权 xff0c 严禁转载及使用 本文链接 xff1a https blog csdn net zyooooxie article details 123655926 继续学习Python xff0c 继续更
  • Python脚本之准备测试环境的用户数据

    本文为博主原创 xff0c 未经授权 xff0c 严禁转载及使用 本文链接 xff1a https blog csdn net zyooooxie article details 127645678 这期是讲述下 我准备测试环境用户数据的经