테스트 학습 -109- 테스트 데이터 일괄 생성 (Faker 프레임 워크-클리어 버전)

머리말:

축약 된 버전은 이전 블로그에서 볼 수 있습니다.

테스트 개발 엔지니어로서 테스트 중 테스트를 위해 데이터를 사용해야하는 것은 불가피합니다. 때로는 테스트를 위해 일정량의 가짜 데이터를 일괄 적으로 생성해야하는 경우가 있습니다. 혼자서 구성하는 것은 정말 번거 롭습니다. 오늘 이야기하겠습니다. 가짜 데이터를 구성하는 아주 좋은 방법에 대한 것입니다. Python에는 Faker라는 매우 강력한 라이브러리가 있습니다.이 라이브러리는 실제처럼 보이는 다양한 "가짜"데이터를 자동으로 생성하는 데 도움이됩니다.이 Faker 라이브러리에 대해 함께 알아 보겠습니다.

나는 모두가 파이썬을 배웠다고 믿기 때문에 여기서 더 말하지 않겠습니다.

Faker 라이브러리 설치

pip3 install faker

Faker 라이브러리 호출 가져 오기

# coding:utf8
from faker import Faker
 
# 中文数据
faker = Faker('zh_CN')

Faker의 다양한 유형의 데이터 구조의 명확한 버전

1. 주소

faker.address()
# '新疆维吾尔自治区杰县南湖武汉街D座 253105'
faker.building_number()
# 'B座'
faker.city()
# '璐县'
faker.city_name()
# '贵阳'
faker.city_suffix()
# '县'
faker.country()
# '阿拉斯加'
faker.country_code(representation="alpha-2")
# 'CR'
faker.district()
# '西峰'
faker.postcode()
# '726749'
faker.province()
# '福建省'
faker.street_address()
# '余路N座'
faker.street_name()
# '李路'
faker.street_suffix()
# '路'

2. 색상

faker.color_name()
# 'DarkKhaki'
faker.hex_color()
# '#97d14e'
faker.rgb_color()
# '107,179,51'
faker.rgb_css_color()
# 'rgb(20,46,70)'
faker.safe_color_name()
# 'navy'
faker.safe_hex_color()
# '#dd2200'

3. 회사

faker.bs()
# 'grow rich initiatives'
faker.catch_phrase()
# 'Self-enabling encompassing function'
faker.company()
# '恒聪百汇网络有限公司'
faker.company_prefix()
# '晖来计算机'
faker.company_suffix()
# '信息有限公司'
Credit Card

Credit Card,用于生成信用卡相关数据,如过期时间、银行卡号、安全码等内容,用法如下:

faker.credit_card_expire(start="now", end="+10y", date_format="%m/%y")
# '08/20'
faker.credit_card_full(card_type=None)
# 'Mastercard\n玉兰 范\n5183689713096897 01/25\nCVV: 012\n'
faker.credit_card_number(card_type=None)
# '4009911097184929918'
faker.credit_card_provider(card_type=None)
# 'JCB 15 digit'
faker.credit_card_security_code(card_type=None)
# '259'

4. 날짜 시간

faker.am_pm()
# 'AM'
faker.century()
# 'X'
faker.date(pattern="%Y-%m-%d", end_datetime=None)
# '1997-06-16'
faker.date_between(start_date="-30y", end_date="today")
# datetime.date(2000, 8, 30)
faker.date_between_dates(date_start=None, date_end=None)
# datetime.date(2019, 7, 30)
faker.date_object(end_datetime=None)
# datetime.date(1978, 3, 12)
faker.date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115)
# datetime.date(2012, 6, 3)
faker.date_this_century(before_today=True, after_today=False)
# datetime.date(2011, 6, 12)
faker.date_this_decade(before_today=True, after_today=False)
# datetime.date(2011, 8, 22)
faker.date_this_month(before_today=True, after_today=False)
# datetime.date(2019, 7, 25)
faker.date_this_year(before_today=True, after_today=False)
# datetime.date(2019, 7, 22)
faker.date_time(tzinfo=None, end_datetime=None)
# datetime.datetime(2018, 8, 11, 22, 3, 34)
faker.date_time_ad(tzinfo=None, end_datetime=None, start_datetime=None)
# datetime.datetime(1566, 8, 26, 16, 25, 30)
faker.date_time_between(start_date="-30y", end_date="now", tzinfo=None)
# datetime.datetime(2015, 1, 31, 4, 14, 10)
faker.date_time_between_dates(datetime_start=None, datetime_end=None, tzinfo=None)
# datetime.datetime(2019, 7, 30, 17, 51, 44)
faker.date_time_this_century(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2002, 9, 25, 23, 59, 49)
faker.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2010, 5, 25, 20, 20, 52)
faker.date_time_this_month(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2019, 7, 19, 18, 4, 6)
faker.date_time_this_year(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2019, 3, 15, 11, 4, 18)
faker.day_of_month()
# '04'
faker.day_of_week()
# 'Monday'
faker.future_date(end_date="+30d", tzinfo=None)
# datetime.date(2019, 8, 12)
faker.future_datetime(end_date="+30d", tzinfo=None)
# datetime.datetime(2019, 8, 24, 2, 59, 4)
faker.iso8601(tzinfo=None, end_datetime=None)
# '1987-07-01T18:33:56'
faker.month()
# '11'
faker.month_name()
# 'August'
faker.past_date(start_date="-30d", tzinfo=None)
# datetime.date(2019, 7, 25)
faker.past_datetime(start_date="-30d", tzinfo=None)
# datetime.datetime(2019, 7, 18, 22, 46, 51)
faker.time(pattern="%H:%M:%S", end_datetime=None)
# '16:22:30'
faker.time_delta(end_datetime=None)
# datetime.timedelta(0)
faker.time_object(end_datetime=None)
# datetime.time(22, 12, 15)
faker.time_series(start_date="-30d", end_date="now", precision=None, distrib=None, tzinfo=None)
# <generator object Provider.time_series at 0x7fcbce0604f8>
faker.timezone()
# 'Indian/Comoro'
faker.unix_time(end_datetime=None, start_datetime=None)
# 1182857626
faker.year()
# '1970'

5. 파일 파일

faker.file_extension(category=None)
# 'flac'
faker.file_name(category=None, extension=None)
# '然后.numbers'
faker.file_path(depth=1, category=None, extension=None)
# '/关系/科技.mov'
faker.mime_type(category=None)
# 'video/ogg'
faker.unix_device(prefix=None)
# '/dev/sdd'
faker.unix_partition(prefix=None)
# '/dev/xvds3'

6. 지리적 위치 데이터

faker.coordinate(center=None, radius=0.001)
# Decimal('-114.420686')
faker.latitude()
# Decimal('-9.772541')
faker.latlng()
# (Decimal('-27.0730915'), Decimal('-5.919460'))
faker.local_latlng(country_code="US", coords_only=False)
# ('41.47892', '-87.45476', 'Schererville', 'US', 'America/Chicago')
faker.location_on_land(coords_only=False)
# ('12.74482', '4.52514', 'Argungu', 'NG', 'Africa/Lagos')
faker.longitude()
# Decimal('40.885895')

7. 인터넷 인터넷 데이터

faker.ascii_company_email(*args, **kwargs)
# '[email protected]'
faker.ascii_email(*args, **kwargs)
# '[email protected]'
faker.ascii_free_email(*args, **kwargs)
# '[email protected]'
faker.ascii_safe_email(*args, **kwargs)
# '[email protected]'
faker.company_email(*args, **kwargs)
# '[email protected]'
faker.domain_name(levels=1)
# 'xiulan.cn'
faker.domain_word(*args, **kwargs)
# 'luo'
faker.email(*args, **kwargs)
# '[email protected]'
faker.free_email(*args, **kwargs)
# '[email protected]'
faker.free_email_domain(*args, **kwargs)
# 'yahoo.com'
faker.hostname(*args, **kwargs)
# 'lt-18.pan.cn'
faker.image_url(width=None, height=None)
# 'https://placekitten.com/51/201'
faker.ipv4(network=False, address_class=None, private=None)
# '192.233.68.5'
faker.ipv4_network_class()
# 'a'
faker.ipv4_private(network=False, address_class=None)
# '10.9.97.93'
faker.ipv4_public(network=False, address_class=None)
# '192.51.22.7'
faker.ipv6(network=False)
# 'de57:9c6f:a38c:9864:10ec:6442:775d:5f02'
faker.mac_address()
# '99:80:5c:ab:8c:a9'
faker.safe_email(*args, **kwargs)
# '[email protected]'
faker.slug(*args, **kwargs)
# ''
faker.tld()
# 'cn'
faker.uri()
# 'http://fangfan.org/app/tag/post/'
faker.uri_extension()
# '.php'
faker.uri_page()
# 'about'
faker.uri_path(deep=None)
# 'app'
faker.url(schemes=None)
# 'http://mingli.cn/'
faker.user_name(*args, **kwargs)
# 'jie54'
Job

Job,用于生成和职业相关的数据,用法如下:

faker.job()
# '烫工'

8. Lorem 가짜 텍스트 데이터

faker.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None)
# '包括的是报告那些一点.图片地址基本全部.'
faker.paragraphs(nb=3, ext_word_list=None)
# [   '计划规定这样所以组织商品其中.参加成为不同发表地区.精华科技谢谢大家需要.一下手机上海中文工程.',
#     '非常相关是一就是一个一种文章发生.增加那些以及之后以下你的.',
#     '学生应该出来分析增加关系组织.评论来源朋友注册应该需要单位.感觉最后无法发现选择人民.']
faker.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)
# '介绍结果自己解决处理.'
faker.sentences(nb=3, ext_word_list=None)
# ['查看其实一次学习登录浏览是一他们.', '而且资源的人事情.', '科技价格免费大学教育.']
faker.text(max_nb_chars=200, ext_word_list=None)
# ('只是当前国内中文所以.威望系统在线虽然.\n'
#  '图片人民非常合作这种谢谢更新.名称详细直接社会一直首页完全.\n'
#  '重要更多只要市场.必须只是学生音乐.系统美国类别这些一切环境.\n'
#  '但是的话人民美国关于.\n'
#  '情况专业国际看到研究.音乐环境市场搜索发现.\n'
#  '工具还是到了今天位置人民.留言作者品牌工程项目必须.上海精华现在我们新闻应该关系.\n'
#  '更新经济能力全部资源如果.手机能够登录国内.')
faker.texts(nb_texts=3, max_nb_chars=200, ext_word_list=None)
# [   '成功可能推荐你的行业.地区而且推荐.\n'
#     '网络不断是一主要必须.开始安全服务.\n'
#     '应该网上通过以后通过大学.管理要求有关国际阅读当前.为了应该结果点击公司开始怎么.\n'
#     '成功一次最大生产网站.这种加入她的地址有限.\n'
#     '根据新闻汽车起来非常主题显示必须.有些建设来自作者电话支持.\n'
#     '只是资源还是由于经济事情喜欢.为什中文大小得到服务.网络密码是否免费参加一次社区欢迎.',
#     '部门活动技术.商品影响发生行业密码完成.就是部门结果资料学习当然.或者帮助城市要求首页市场教育你们.\n'
#     '专业完全分析处理城市大学什么.\n'
#     '文件非常国际全部起来积分公司.资料的是电影没有.这是本站需要.\n'
#     '合作重要没有现在市场开发空间.您的会员推荐成功教育进行中国.\n'
#     '文件不是如果评论.因为经验设备规定.\n'
#     '加入一起影响网上大家运行在线如果.工程企业这种以后.',
#     '空间市场出现必须基本电话.显示一个标准其他设计作品.工程不断新闻问题更多更新这么.\n'
#     '一起简介网上内容不会.任何知道各种两个.类别事情经营那么投资市场.\n'
#     '那些使用介绍公司朋友人民你们浏览.应该表示一点一般说明主要谢谢.电话回复起来经验一个来源加入.\n'
#     '地区法律其他表示虽然.参加社会喜欢有限论坛一般发布.类别目前文化可以.\n'
#     '报告质量工作主要.企业发布完全.得到名称作者等级两个论坛只要电话.']
faker.word(ext_word_list=None)
# '注意'
faker.words(nb=3, ext_word_list=None, unique=False)
# ['责任', '组织', '以后']

9. 암호, sha1, sha256, md5 등과 같은 암호화 된 콘텐츠와 같은 기타 난독 화 된 데이터

faker.boolean(chance_of_getting_true=50)
# True
faker.md5(raw_output=False)
# '3166fa26ffd3f2a33e020dfe11191ac6'
faker.null_boolean()
# False
faker.password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True)
# 'W7Ln8La@%O'
faker.sha1(raw_output=False)
# 'c8301a2a79445439ee5287f38053e4b3a05eac79'
faker.sha256(raw_output=False)
# '1e909d331e20cf241aaa2da894deae5a3a75e5cdc35c053422d9b8e7ccfa0402'
faker.uuid4(cast_to=<class 'str'>)
# '6e6fe387-6877-48d9-94ea-4263c4c71aa5'

10. 사람과 관련된 사람

faker.first_name()
# '颖'
faker.first_name_female()
# '芳'
faker.first_name_male()
# '利'
faker.first_romanized_name()
# 'Jing'
faker.last_name()
# '温'
faker.last_name_female()
# '寇'
faker.last_name_male()
# '陈'
faker.last_romanized_name()
# 'Lei'
faker.name()
# '黄明'
faker.name_female()
# '张凯'
faker.name_male()
# '黄鹏'

print(faker.name()) # 姓名
print(faker.ssn()) #身份证号
print(faker.country()) # 国家
print(faker.postcode()) # 邮编
print(faker.credit_card_number()) # 信用卡号
print(faker.city_suffix()) #
print(faker.file_name()) #文件名带后缀
print(faker.file_path()) #路径带文件
print(faker.domain_name())#域名

 

11. User-Agent 브라우저의 User-Agent 관련 내용

faker.chrome(version_from=13, version_to=63, build_from=800, build_to=899)
# ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5332 (KHTML, like Gecko) '
#  'Chrome/40.0.837.0 Safari/5332')
faker.firefox()
# ('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_8_9; rv:1.9.4.20) '
#  'Gecko/2019-05-02 05:58:44 Firefox/3.6.19')
faker.internet_explorer()
# 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/3.0)'
faker.linux_platform_token()
# 'X11; Linux i686'
faker.linux_processor()
# 'x86_64'
faker.mac_platform_token()
# 'Macintosh; U; PPC Mac OS X 10_12_5'
faker.mac_processor()
# 'U; Intel'
faker.opera()
# 'Opera/9.77.(Windows NT 4.0; vi-VN) Presto/2.9.182 Version/11.00'
faker.safari()
# ('Mozilla/5.0 (Macintosh; PPC Mac OS X 10_7_1 rv:5.0; or-IN) '
#  'AppleWebKit/535.9.4 (KHTML, like Gecko) Version/5.0.2 Safari/535.9.4')
faker.user_agent()
# 'Opera/8.69.(X11; Linux i686; ml-IN) Presto/2.9.170 Version/11.00'
faker.windows_platform_token()
# 'Windows NT 6.1'

이 블로그는 https://blog.csdn.net/qq_42692386/article/details/107359656 블로그를 참조합니다.

Faker의 공식 웹 사이트, 공식 문서 링크  https://faker.readthedocs.io/en/master/locales/zh_CN.html

12. 페이 커 기능 추가

Python Faker 라이브러리의 공통 작동 기능 (개인용)
country () : country
province () : province
city_suffix () : city, county
district () : district
street_address () : street address
street_name () : street name
street_suffix () : 거리, 도로
country_code () : 국가 코드
postcode () : 우편 번호
geo_coordinate () : 지리적 좌표
longitude () : 경도
latitude () : 위도
lexify () : 모든 물음표를 교체 하시겠습니까? 랜덤 이벤트로
numerify () : 3 자리 난수
생성 random_digit () : 0에서 9까지의 난수 생성
random_digit_not_null () : 1에서 9까지의 난수 생성
random_element () : 임의의 문자 생성
random_int () : 임의의 숫자 (기본값 0 ~ 9999)는 최소 및 최대 매개 변수로 수정할 수 있습니다.
random_letter () : 임의의 문자
random_number () : 난수, 매개 변수 자릿수 설정에 의해 생성 된 자릿수
color_name () : 임의의 색상 이름
hex_color ( ) : 임의의 HEX 색상
rgb_color () : 임의의 RGB 색상
safe_color_name () : 임의의 안전 색상 이름
safe_hex_color () : 임의의 안전 HEX 색상
bs () : 임의의 회사 서비스 이름
company () : 임의의 회사 이름 (긴)
company_prefix () : 임의의 회사 이름 (짧은)
company_suffix () : 회사 특성
credit_card_expire () : 임의의 신용 카드 만료일
credit_card_full () : 완전한 신용 카드 정보 생성
credit_card_number () : 신용 카드 번호
credit_card_provider () : 신용 카드 유형
credit_card_security_code () : 신용 카드 보안 코드
currency_code () : 통화 코드
am_pm () : AM / PM
세기 () : 임의 세기
date () : 임의 날짜
date_between () : 지정된 범위 내에서 임의 날짜 생성, 매개 변수 : start_date, end_date
date_between_dates () : 지정된 범위 내에서 무작위로 날짜 생성, 사용법은 위와 동일
date_object () : 1970-1 -1에서 지정된 날짜의 임의 날짜까지 무작위로 생성됩니다.
date_this_month () :
date_this_year () :
date_time () : 지정된 시간을 임의로 생성 (1970 년 1 월 1 일부터 현재까지)
date_time_ad () : 1 AD에서 현재까지 임의의 시간 생성
date_time_between () : 날짜와 동일한 사용법
future_date () : 미래 날짜
future_datetime () : 미래 시간
month () : 임의의 월
month_name () : 임의의 월 (영어)
past_date () : 임의의 과거 날짜 생성
past_datetime () : 임의 생성 경과
시간 time () : 임의의 24 시간 시간 timedelta () : 임의의
시차
time_object () : 임의의 24 시간 시간, 시간 객체
time_series () : 임의의 TimeSeries 객체
timezone () : 임의의 시간대
unix_time () : 임의의 Unix time
year () : 임의 연도
file_extension () : 임의 파일 확장자
file_name () : 임의 파일 이름 (확장자 포함, 경로 제외)
file_path () : 임의 파일 경로 (파일 이름, 확장자 포함)
mime_type () : 임의 MIME 유형
ascii_company_email () : 임의의 ASCII 회사 사서함 이름
ascii_email () : 임의의 ASCII 사서함
ascii_free_email () :
ascii_safe_email () :
company_email () :
domain_name () : 도메인 이름 생성
domain_word () : 도메인 단어 (예 : 접미사 포함되지 않음)
email () :
free_email () :
free_email_domain () :
f.safe_email () : 안전한 메일 함
f.image_url () : 임의의 URL 주소
ipv4 () : 임의의 IP4 주소
ipv6 () : 임의의 IP6 주소
mac_address () : 임의의 MAC 주소
tld () : URL 도메인 이름 접미사
uri () : 임의의 URI 주소
uri_extension () : URL 파일 접미사
uri_page () : URL 파일 (접미사 제외)
uri_path () : URL 파일 경로 (파일 이름 제외)
url () : 임의 URL 주소
user_name () : 임의 사용자 이름
isbn10 () : 임의 ISBN (10 자리)
isbn13 () : 임의 ISBN (13 자리)
job () : 임의 위치
단락 () : 무작위로 단락 생성
문단 () : 무작위로 여러 단락 생성, 매개 변수 nb를 통해 단락 수 제어, 배열
문장 반환 () : 무작위로
문장 생성 () : 무작위로 여러 문장 생성,
text ( 와 유사) ) : 기사
단어 무작위 생성 () : 단어 무작위 생성
단어 () : 여러 단어, 용법 및 문단, 문장, 유사 무작위 생성
binary () : 이진 코드 무작위 생성
boolean () : True / False
language_code () : 두 자리 언어 코드
무작위 생성 locale () : 언어 / 국제 정보
무작위 생성 md5 () : MD5 무작위 생성
null_boolean () : NULL / True / False
password () : 임의로 생성 된 비밀번호, 선택적 매개 변수 : 길이 : 비밀번호 길이, special_chars : 특수 문자 사용 가능 여부, 숫자 : 숫자 포함 여부, 대문자 : 대문자 포함 여부, 소문자 : 소문자 포함 여부
sha1 () : 임의 SHA1
sha256 () : 임의 SHA256
uuid4 () : 임의 UUID
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 () : 휴대폰 번호 세그먼트
프로파일 랜덤 생성 () : 프로파일 정보 랜덤 생성
simple_profile () : 단순 프로파일 정보 랜덤 생성

무작위로 생성 된 데이터 유형 지정 :
pybool () :
pydecimal () :
pydict () :
pyfloat () : = 2 # 생성 된 left_digits 정수 비트,
생성 된 right_digits # = 소수 자릿수. 1,
# = True positive 인 경우에만 양수
pyint () :
pyiterable ()
pylist ()
pyset ()
pystr ()
pystruct ()
pytuple ()
ssn () : ID 번호 생성
chrome () : 무작위로 Chrome 브라우저 생성 user_agent 정보
firefox () : 무작위로 생성 FireFox 브라우저 user_agent 정보
internet_explorer () : IE 브라우저 사용자 에이전트 정보 랜덤 생성
opera () : 오페라 브라우저 사용자 에이전트
정보 랜덤 생성 safari () : 사파리 브라우저 사용자
에이전트 정보 랜덤 생성 linux_platform_token () : 리눅스 정보 랜덤
user_agent () : 사용자 에이전트 정보 랜덤 생성

추천

출처blog.csdn.net/u013521274/article/details/110005224