前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Python生成中文测试数据

基于Python生成中文测试数据

作者头像
苦叶子
发布2019-05-06 17:27:32
2.2K0
发布2019-05-06 17:27:32
举报
文章被收录于专栏:开源优测开源优测

在测试中,我们经常需要批量的生成各种测试数据,尤其是需要生成大量的中文测试数据,例如姓名,地址等等。

下面我们先看一个直接写Python代码生成中文的实例

代码语言:javascript
复制
# -*- coding: utf-8 -*-
__author__ = "苦叶子"
"""
    生成中文实例
"""
import random

# 直接基于unicode码生成
# 在unicode码中,汉字范围是(0x4E00, 0x9FBF)
def unicode_zh():
    # 随机生成一个汉字码
   zh = random.randint(0x4E00, 0x9FBF)

    # 转换下,返回
   return chr(zh)


# 基于gbk2312码生成
# 在gbk2312码中,字符的编码采用两个字节组合
# 汉字第一个字节范围是(0xB0, 0xF7)
# 汉字第二个字节范围是(0xA1, 0xFE)
def gbk2312_zh():
    # 生成第一个字节
   first = random.randint(0xB0, 0xF7)
    # 生成第二个字节
   last = random.randint(0xA1, 0xFE)

    # 组合一下
   s = f'{first:x}{last:x}'
   # 转换成汉字
   zh = bytes.fromhex(s).decode('gb2312')

    # 返回
   return zh


# 主函数
if __name__ == "__main__":
    # 基于unicode模式生成10个汉字
   for _ in range(10):
        print(unicode_zh())

    print("------上面的汉字是不是很多不认识, 哈哈哈------\n\n")

    print("------下面的汉字是不是认识很多-------")

    # 基于gb2312模式生成10个汉字
   for _ in range(10):
print(gbk2312_zh())

运行结果如下

几点说明:

1. 基于unicode码方式生成的汉字,因为总计约有2万多个汉字,因此在随机生成时,会很容易生成生僻字

2. 基于gbk2312码生成的汉字,大概有6千个常用的汉字,所以生成的汉字,我们大多都认识

所以根据这两点,你大体可以知道在自己去原生构造汉字生成功能时,应该怎么去使用了。

看了上面简单的实例,是不是觉得生成汉字比较容易呢?

那如何生成中文名字呢?

你要不要自己试试?

说下简单的思路,随便找个百家姓的网页,把所有的姓爬取下来弄成一个姓氏库,至于名嘛,随便用用常用的汉字组合下

我们看一个简单的实例

代码语言:javascript
复制
# -*- coding: utf-8 -*-
__author__ = "苦叶子"
import random

# 导入汉字生成函数
from test_data_zh_CN import *


""""
    简单生成中文名
"""
# 百家姓列表
FIRST_NAME = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许',
'何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章',
'云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳',
'酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常',
'乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹',
'姚', '邵', '堪', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞',
'熊', '纪', '舒', '屈', '项', '祝', '董', '梁']


if __name__ == "__main__":
    # 随便生成下名字啦
for _ in range(10):
        first = FIRST_NAME[random.randint(0, len(FIRST_NAME))]
        name = gbk2312_zh()
print(first + name)

运行结果

随机生成了10个名字,看着是不是像名字了?

后续我们基于开源库来实现,就会觉得更方便了,这篇只是展现下基本的原理,可以了解下的!!!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档