測試數據不會造?可以用這個工具Faker

在測試過程中,大家應該都遇到過各種各樣的數據構造問題。e.g. 構造一批通訊錄、構造一批用戶三要素(姓名手機號身份證)、構造一批銀行卡數據……
這時候,測試數據大多數可能是這樣的:

張三, 130 0000 0001

李四, 130 0000 0002

王五, 130 0000 0003

……

或者就一頓亂敲,造出來一批。

你是不是這樣做的呢?坦白的說,之前的小編就是醬紫。

這樣的測試數據,不僅要自己手動敲,還假的不能再假,浪費時間、浪費人力、數據價值低……后來想了個辦法,同步線上數據,但是還要加密解密,也要挨個庫表去找自己想要的數據。?

直到有一天,小編遇到了Faker,可以生成一批各種各樣的看起來“像真的一樣”的假數據。

如果你想學習自動化測試,我這邊給你推薦一套視頻,這個視頻可以說是B站播放全網第一的自動化測試教程,同時在線人數到達1000人,并且還有筆記可以領取及各路大神技術交流:798478386???

【已更新】B站講的最詳細的Python接口自動化測試實戰教程全集(實戰最新版)_嗶哩嗶哩_bilibili

Fake哪些數據?

目前Faker庫中提供了三大類可以“構造”出的數據,官方劃分為: Standard Providers、Community Providers、Localized Providers。

Standard Providers

包含了通用信用卡、顏色、職業、日期時間等數據的生成方法。

Community Providers

由一些Community提供的,目前包括Web相關、云相關、WiFi、微服務、信用分數據。

Community Providers

根據地區/語言差異,本地化提供的一些方法,如簡體中文下生成的姓名和繁體中文下生成的姓名是不一樣的。

fake幾條通訊錄

for _ in range(3):print('姓名:', fake.name(), ' 手機號:', fake.phone_number())#fake 是由Faker創建的對象,且指定了中文

?姓名:王霞? 手機號:15744918509

姓名:李旭? 手機號:18025187089

姓名:郭娟? 手機號:13196551713

fake一組信用卡數據

print('Card Number:', fake.credit_card_number(card_type=None))
print('Card Provider', fake.credit_card_provider(card_type=None))
print('Card Security Code', fake.credit_card_security_code(card_type=None))
print('Card Expire', fake.credit_card_expire())
#fake 是由Faker創建的對象

Card Number:? 2720041566219373

Card Provider:? Mastercard

Card Security Code:? 215

Card Expire:? 07/20

可以用dir(fake),看Faker庫都可以fake哪些數據,目前Faker支持近300種數據,此外還支持自己進行擴展。

怎樣fake數據

前面介紹了Faker可以fake的數據,下面小編帶大家實際操作一遍。

第一步、安裝Faker庫

pip install Faker

第二步、用安裝好的Faker庫創建一個Faker對象

from faker import Faker
fake = Faker()

第三步、指定語言

fake = Faker("zh_CN")

第四步、fake數據

之后用fake對象就可以調用不同的方法生成各種數據了。

擴展Faker

如果這些數據還不夠生成數據使用,Faker還支持創建自定義的Provider生成數據。

from faker import Faker
from faker.providers import BaseProvider# 創建自定義Provider
class CustomProvider(BaseProvider):def customize_ua(self):return 'test_Faker_customize_ua'# 添加Provider
fake = Faker()
fake.add_provider(CustomProvider)
print(fake.customize_ua())
test_Faker_customize_ua

是不是十分簡單,方便擴展呢。以后常用的數據就可以自己創建Provider用自動化的方法生成了,不僅節省了時間,復用性也變高了。

寫在最后

閱讀Faker的源碼可以很容易發現,Faker實際是維護了一個“數據庫”,這個“數據庫”強大在做了很多Localized的處理和兼容。此外,作為一個開源的庫,Faker的源碼是非常值得研究的,也是Python新手可以用來練開源項目的利器。

當然,缺點也就顯而易見,它不是那么的智能,生成的數據是隨機生成,數據量也不是那么大。

【GitHub】https://github.com/joke2k/faker

【Docs】https://faker.readthedocs.io/en/master/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167768.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C/PTA —— 11.函數2(課外實踐)】

C/PTA —— 11.函數2(課外實踐) 一.函數題6-1 計算A[n]1/(1 A[n-1])6-2 遞歸實現順序輸出整數6-3 自然數的位數(遞歸版)6-4 分治法求解金塊問題6-5 漢諾塔6-6 重復顯示字符(遞歸版)6-7 顯示平行四邊形(右)(遞歸版) 二.編程題7-2 N階樓梯上樓問題 一.函數…

python實現存款日利息計算器(窗口界面形式)

輸入存款金額,7日年化收益率,輸出每日利息 完整源碼如下: import tkinter as tk from tkinter import messageboxdef calculate_interest():deposit float(entry_deposit.get())interest_rate float(entry_interest_rate.get())daily_int…

【數據結構】二叉排序樹(c風格、結合c++引用)

目錄 1 基本概念 結構體定義 各種接口 2 二叉排序樹的構建和中序遍歷 遞歸版單次插入 非遞歸版單次插入 3 二叉排序樹的查找 非遞歸版本 遞歸版本 4 二叉排序樹的刪除(難點) 1 基本概念 普通二叉排序樹是一種簡單的數據結構,節點的值…

戲說二十三種設計模式_用故事的方式就是讓你一定能懂

創建型模式 1、FACTORY—追MM少不了請吃飯了,麥當勞的雞翅和肯德基的雞翅都是MM愛吃的東西,雖然口味有所不同,但不管你帶MM去麥當勞或肯德基,只管向服務員說“來四個雞翅”就行了。麥當勞和肯德基就是生產雞翅的Factory 工廠模式&…

Cortex-M與RISC-V區別

環境 Cortex-M以STM32H750為代表,RISC-V以芯來為代表 RTOS版本為RT-Thread 4.1.1 寄存器 RISC-V 常用匯編 RISC-V 關于STORE x4, 4(sp)這種寄存器前面帶數字的寫法,其意思為將x4的值存入sp4這個地址,即前面的數字表示偏移的意思 反之LOA…

【LM358AD運放方波振蕩器可控輸出幅值】2022-2-25

緣由仿真如何縮小方波振蕩電路方波幅值?-有問必答-CSDN問答

使用Pytorch從零開始構建LSTM

長短期記憶(LSTM)網絡已被廣泛用于解決各種順序任務。讓我們了解這些網絡如何工作以及如何實施它們。 就像我們一樣,循環神經網絡(RNN)也可能很健忘。這種與短期記憶的斗爭導致 RNN 在大多數任務中失去有效性。不過&a…

發送一個網絡數據包的過程解析

在 ip_queue_xmit 中,也即 IP 層的發送函數里面,有三部分邏輯。第一部分,選取路由,也即我要發送這個包應該從哪個網卡出去。 這件事情主要由 ip_route_output_ports 函數完成。接下來的調用鏈為:ip_route_output_port…

改進YOLOv8 | YOLOv5系列:RFAConv續作,即插即用具有任意采樣形狀和任意數目參數的卷積核AKCOnv

RFAConv續作,構建具有任意采樣形狀的卷積AKConv 一、論文yolov5加入的方式論文 源代碼 一、論文 基于卷積運算的神經網絡在深度學習領域取得了顯著的成果,但標準卷積運算存在兩個固有缺陷:一方面,卷積運算被限制在一個局部窗口,不能從其他位置捕獲信息,并且其采樣形狀是…

Matlab進階繪圖第33期—雙曲面圖

在《Matlab論文插圖繪制模板第56期—曲面圖(Surf)》中,我分享過曲面圖的繪制模板。 然而,有的時候,需要在一張圖上繪制兩個及以上的曲面圖,且每個曲面圖使用不同的配色方案。 在Matlab中,一張…

C++基礎入門(超詳細)

話不多說,序言搞起來: 自從開始學老師布置的任務后,目前還是OpenCV,哈~哈。我就莫名問老師:“以后編程是用C還是python?”,果然還是太年輕,老師說:“兩們都要精通”。唉&…

set和map + multiset和multimap(使用+封裝(RBTree))

set和map 前言一、使用1. set(1)、模板參數列表(2)、常見構造(3)、find和count(4)、insert和erase(5)、iterator(6)、lower_bound和upper_bound 2. multiset3. map(1)、模板參數列表(2)、構造(3)、modifiers和operations(4)、operator[] 4. multimap 二、封裝RBTree迭代器原理R…

9.輸出國際象棋盤【2023.11.24】

1.問題描述 要求輸出國際象棋棋盤。 2.解決思路 國際象棋棋盤由64個黑白相間的格子組成&#xff0c;分為8行*8列。用i控制行&#xff0c;j控制列&#xff0c;根據ij的和的變化來控制輸出黑方格還是白方格。 3.代碼實現 #include<stdio.h> int main(){for(int i0;i&…

各操作系統之間的關系

請移步知乎&#xff1a; 操作系統UNIX、WINDOWS、LINUX、MC OS的聯系與區別 - 知乎 (zhihu.com) 移動端的android操作系統就人盡皆知啦&#xff0c;基于linux內核。 完畢。 適用領域&#xff1a; windows,macos:主要面向個人計算機市場 Linux、Windows Server:隨著互聯網的…

基于廣義正態分布算法優化概率神經網絡PNN的分類預測 - 附代碼

基于廣義正態分布算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于廣義正態分布算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于廣義正態分布優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要&#xf…

網絡安全—自學

1.網絡安全是什么 網絡安全可以基于攻擊和防御視角來分類&#xff0c;我們經常聽到的 “紅隊”、“滲透測試” 等就是研究攻擊技術&#xff0c;而“藍隊”、“安全運營”、“安全運維”則研究防御技術。 2.網絡安全市場 一、是市場需求量高&#xff1b; 二、則是發展相對成熟…

深度學習之基于Pytorch照片圖像轉漫畫風格網絡系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 以下是一個基本的設計介紹&#xff1a; 數據準備&#xff1a;收集足夠的真實照片和漫畫圖像&#xff0c;用于訓練模…

typora中的快捷鍵shift enter 和 enter的交換

1 問題&#xff1a; 我最近在用 typora 進行寫作&#xff0c;但是在合格 typora 的 markdown 編輯器很奇怪&#xff0c;它的一個回車符是兩次換行&#xff0c;而用 shfit ent 找了半天都不知道怎么解決的這個問題&#xff0c;然后我就去了這個 typora 在 github 開源的問題倉庫…

hive 報錯return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解決思路

參考學習 https://github.com/apache/hive/blob/2b57dd27ad61e552f93817ac69313066af6562d9/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java#L47 為啥學習error code 開發過程中遇到以下錯誤&#xff0c;大家覺得應該怎么辦&#xff1f;從哪方面入手呢&#xff1f; 1.百…

解決在Windows10或Windows11下無權限修改hosts文件

解決在Windows10或Windows11下無權限修改hosts文件&#xff0c;無法寫入內容 1、首先在開始菜單中找到這個 2、接著輸入&#xff1a; C:\Windows\System32\drivers\etc3、再次輸入以下命令行&#xff1a;notepad hosts &#xff0c;并回車&#xff1a; notepad hosts 4、然后…