<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          居然還有人在手寫測(cè)試數(shù)據(jù)?

          共 3210字,需瀏覽 7分鐘

           ·

          2021-01-16 00:12

          平時(shí)我們?cè)陂_(kāi)發(fā)程序的時(shí)候,總免不了需要造一些假數(shù)據(jù)來(lái)驗(yàn)證自己的程序功能是否正常。那么你是通過(guò)什么方式來(lái)造假數(shù)據(jù)的呢,不會(huì)每次都是手寫「測(cè)試數(shù)據(jù)、test」吧。

          今天派森醬給大家介紹兩個(gè)超級(jí)好用的庫(kù),批量生成各種假數(shù)據(jù),比如用戶信息,地址,日期,數(shù)字等等。

          mimesis

          mimesis 是一個(gè)高性能的偽數(shù)據(jù)生成器,目前支持 33 種不同的語(yǔ)言環(huán)境。通過(guò)該庫(kù),我們可以生成各種測(cè)試數(shù)據(jù)、假的 API 接口、任意結(jié)構(gòu)的 JSON 和 XML 數(shù)據(jù)以及隱藏生產(chǎn)環(huán)境的數(shù)據(jù)。

          pip?install?mimesis

          安裝好之后我們就可以直接使用了。

          from?mimesis?import?Person

          person?=?Person('zh')
          print(f'name:?{person.surname()?+?""?+?person.name()}')
          print(f'sex:?{person.sex()}')
          print(f'academic?degree:?{person.academic_degree()}')

          ##?輸出結(jié)果
          name:?田曜巖
          sex:?男性
          academic?degree:?研究生

          在上面的程序中,我們創(chuàng)建了一個(gè)使用中文環(huán)境的 Person 對(duì)象,接著輸出該用戶的姓名,性別以及學(xué)歷。

          下面我們看看 Person 對(duì)象里面都有啥假數(shù)據(jù)。

          print('\n'.join(('%s:%s'?%?item?for?item?in?person._data.items())))

          結(jié)果如下所示:

          除了姓名,性別這些基本信息之外還有學(xué)歷、性取向、大學(xué)以及信仰等信息。

          另外,除了 Person 之外,mimesis 庫(kù)還提供了 Address、Food、Datetime 等方面的數(shù)據(jù)。

          address?=?Address("zh")
          print(f'continent:?{address.continent()}')
          print(f'province:?{address.province()}')
          print(f'city:?{address.city()}')
          print(f'street?name:?{address.street_name()}')

          ##?輸出結(jié)果
          province:?安徽省
          city:?湛江市


          除了省份,城市之外還有大陸、國(guó)家、州、街區(qū)等信息。

          food?=?Food("zh")
          print(f'dish:?{food.dish()}')
          print(f'drink:?{food.drink()}')

          ##?輸出結(jié)果
          dish:?東坡肉
          drink:?紅茶


          除了魚(yú)類和飲料之外還有水果、香料和蔬菜。

          其實(shí) mimesis 庫(kù)的強(qiáng)大不止于此,甚至我們可以使用該庫(kù)來(lái)返回特定格式的數(shù)據(jù)。這就要借助 mimesis.schema 來(lái)實(shí)現(xiàn)了。

          比如,我們要返回如下格式的 JSON 數(shù)據(jù),那么就可以這么寫:

          _?=?Field('zh')
          schema?=?Schema(schema=lambda:?{
          ????'id':?_('uuid'),
          ????'name':?_('person.name'),
          ????'version':?_('version',?pre_release=True),
          ????'timestamp':?_('timestamp',?posix=False),
          ????'owner':?{
          ????????'email':?_('person.email',?domains=['test.com'],?key=str.lower),
          ????????'token':?_('token_hex'),
          ????????'creator':?_('full_name',?gender=Gender.FEMALE)
          ????},
          ????'address':?{
          ????????'country':?_('address.country'),
          ????????'province':?_('address.province'),
          ????????'city':?_('address.city')
          ????}
          })

          #?生成數(shù)據(jù)
          data?=?schema.create(iterations=2)

          我們借助 Flask 快速實(shí)現(xiàn)一個(gè)接口:

          @app.route('/apps',?methods=('GET',))
          def?apps_view():
          ????count?=?request.args.get('count',?default=1,?type=int)
          ????data?=?schema.create(iterations=count)
          ????return?jsonify(data)

          調(diào)用該接口獲得如下數(shù)據(jù):

          faker

          faker 同樣是一個(gè)優(yōu)秀的生成假數(shù)據(jù)的 Python 庫(kù),支持多種語(yǔ)言環(huán)境,我們可以使用 pip 進(jìn)行安裝。

          pip?install?faker

          試著獲取一下姓名,地址,日期等假數(shù)據(jù)

          from?faker?import?Faker

          faker?=?Faker(locale='zh_CN')
          print(f'name:?{faker.name()}')
          print(f'address:?{faker.address()}')
          print(f'date:?{faker.date()}')

          ##?輸出結(jié)果
          name:?劉晶
          address:?香港特別行政區(qū)平縣華龍深圳路l座?580988
          date:?2013-08-26


          從上圖可以看出,faker 目前支持 22 個(gè)不同種類的假數(shù)據(jù)。

          如果以上類別不能滿足需求,那么 faker 同樣支持自定義擴(kuò)展。

          from?faker.providers?import?BaseProvider

          class?MyProvider(BaseProvider):
          ????def?foo(self):
          ????????return?'bar'
          faker.add_provider(MyProvider)
          print(f'foo:?{faker.foo()}')

          ##?輸出結(jié)果
          foo:?bar

          最方便的是我們可以直接在命令行調(diào)用 faker,這對(duì)于某些場(chǎng)景簡(jiǎn)直不要太方便,比如我們就需要一條用戶信息的 JSON 數(shù)據(jù),那么就不需要再去寫一個(gè) Python 腳本了,直接在命令行調(diào)用 faker 命令即可生成假數(shù)據(jù)。

          $?faker?address
          香港特別行政區(qū)六安市海港哈爾濱街z座?561730

          $?faker?-r=3?address
          湖南省??谑星迤滞踅謍座?140394
          海南省銀川市孝南武漢街q座?623233
          青海省建華市蕭山李街w座?207439

          $?faker?-r=3?profile?name,address,birthdate
          {'name':?'邵麗',?'address':?'四川省想市上街吳街c座?399962',?'birthdate':?datetime.date(1979,?8,?28)};
          {'name':?'張秀華',?'address':?'江西省亮市徐匯程街p座?527720',?'birthdate':?datetime.date(1907,?6,?27)};
          {'name':?'王瑩',?'address':?'江西省博市房山太原路N座?615506',?'birthdate':?datetime.date(1968,?2,?7)};

          總結(jié)

          今天我們介紹了兩款優(yōu)秀的假數(shù)據(jù)生成庫(kù),對(duì)于大部分場(chǎng)景都是可以滿足的了,希望小伙伴們能有所收獲。

          瀏覽 58
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线a亚洲v五码视频 | 欧美精品成人无码 | 中文人妻无码一区二区三区不卡 | 亚洲图片乱伦小说 | 免费黄色亚洲视频 |