1. 程式人生 > 其它 >沒有測試資料,那自己生產

沒有測試資料,那自己生產

目錄

測試資料

下面介紹一下,和Ajax操作不是太相關的內容,方便後期Ajax測試

批量插入資料

如果我們需要測試資料,或者需要練習的資料總不能手動一條一條sql語句插入吧,這裡我們可以通過下面這種方式插入,在test.py中測試

'''Book表舉例,models.py'''
class Book(models.Model):
    title = models.CharField(max_length=32)
    price = models.CharField(max_length=32)
# 方案一:不推薦
import os
def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_splitpage.settings')
    import django
    django.setup()
    from app01 import models
    for i in range(100):
        models.Book.objects.create(title=f'書籍{i}', price=f'{i + 10}')
if __name__ == '__main__':
    main()
'''
方式一雖然可以使用,但是在for迴圈中每操作一次插入資料的orm操作,就相當於重新操作了一次資料庫,資源消耗大,而且速度慢
'''
# 方式二:推薦
book_list = []
for i in range(100):
    books_obj = models.Book(title=f'書籍{i}',price=f'{i+10}')
    book_list.append(books_obj)
models.Book.objects.bulk_create(book_list)
'''推薦這種建立,在for迴圈中將資料添到列表中,最後通過一條sql語句建立,速度更快'''

faker模組

使用這個模組可以快速生成測試資料,雖然名字是faker但是生成的資料看起來可一點也不fake,我還通過生成的手機號添加了翠花的微信,哈哈哈

  • 安裝pip install faker

  • 建立

from faker import Faker,Factory
faker = Faker('zh_CN')  # 預設是英文,這裡需要修改成中文
print(faker.name()) # 漆平

'''
簡體中文:zh_CN
繁體中文:zh_TW
美國英文:en_US
英國英文:en_GB
德文:de_DE
日文:ja_JP
韓文:ko_KR
法文:fr_FR
'''

方法詳細

地理資訊類

city_suffix():市,縣
country():國家
country_code():國家編碼
district():區
geo_coordinate():地理座標
latitude():地理座標(緯度)
longitude():地理座標(經度)
postcode():郵編
province():省份
address():詳細地址
street_address():街道地址
street_name():街道名
street_suffix():街、路

基礎資訊類

ssn():生成身份證號
bs():隨機公司服務名
company():隨機公司名(長)
company_prefix():隨機公司名(短)
company_suffix():公司性質,如'資訊有限公司'
credit_card_expire():隨機信用卡到期日,如'03/30'
credit_card_full():生成完整信用卡資訊
credit_card_number():信用卡號
credit_card_provider():信用卡型別
credit_card_security_code():信用卡安全碼
job():隨機職位
first_name_female():女性名
first_name_male():男性名
name():隨機生成全名
name_female():男性全名
name_male():女性全名
phone_number():隨機生成手機號
phonenumber_prefix():隨機生成手機號段,如139

郵箱資訊類

ascii_company_email():隨機ASCII公司郵箱名
ascii_email():隨機ASCII郵箱:
company_email():公司郵箱
email():普通郵箱
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資訊

數字資訊

numerify():三位隨機數字
random_digit():0~9隨機數
random_digit_not_null():1~9的隨機數
random_int():隨機數字,預設0~9999,可以通過設定min,max來設定
random_number():隨機數字,引數digits設定生成的數字位數
pyfloat():隨機Float數字
pyint():隨機Int數字(參考random_int()引數)
pydecimal():隨機Decimal數字(參考pyfloat引數)

文字加密類

pystr():隨機字串
random_element():隨機字母
random_letter():隨機字母
paragraph():隨機生成一個段落
paragraphs():隨機生成多個段落
sentence():隨機生成一句話
sentences():隨機生成多句話,與段落類似
text():隨機生成一篇文章
word():隨機生成詞語
words():隨機生成多個詞語,用法與段落,句子,類似
binary():隨機生成二進位制編碼
boolean():True/False
language_code():隨機生成兩位語言編碼
locale():隨機生成語言/國際 資訊
md5():隨機生成MD5
null_boolean():NULL/True/False
password():隨機生成密碼,可選引數:length:密碼長度;special_chars:是否能使用特殊字元;digits:是否包含數字;upper_case:是否包含大寫字母;lower_case:是否包含小寫字母
sha1():隨機SHA1
sha256():隨機SHA256
uuid4():隨機UUID

時間資訊類

date():隨機日期
date_between():隨機生成指定範圍內日期,引數:start_date,end_date
date_between_dates():隨機生成指定範圍內日期,用法同上
date_object():隨機生產從1970-1-1到指定日期的隨機日期。
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():隨機年份

示例

結合上述批量插入資料,我們來演示一下,插入一些看起來不太假的資料

from faker import Faker,Factory
    faker = Faker('zh_CN') # 初始化成中文
    user_list = []
    for i in range(500):
        user_obj = models.User(name=faker.name(),phone=faker.phone_number(),address=faker.address())
        user_list.append(user_obj)

    models.User.objects.bulk_create(user_list)

這樣批量插入資料庫的測試資料就有了,插入了500條,這裡截圖一部分,通過faker模組產生的資料都是隨機生成不同的資料,這樣看起來是不是沒用那麼fake呢?







參考:faker庫