精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在Jupyter notebooks中進(jìn)行單元測(cè)試

開發(fā) 測(cè)試
我們都知道開發(fā)過(guò)程中應(yīng)該編寫單元測(cè)試,實(shí)際上我們中的許多人都這樣做。對(duì)于生產(chǎn)代碼,庫(kù)代碼,或者歸因于測(cè)試驅(qū)動(dòng)的開發(fā)過(guò)程,這一點(diǎn)尤其正確。

[[389287]]

我們都知道開發(fā)過(guò)程中應(yīng)該編寫單元測(cè)試,實(shí)際上我們中的許多人都這樣做。對(duì)于生產(chǎn)代碼,庫(kù)代碼,或者歸因于測(cè)試驅(qū)動(dòng)的開發(fā)過(guò)程,這一點(diǎn)尤其正確。

通常,Jupyter notebooks用于數(shù)據(jù)探究,因此用戶可能不選擇(或不需要)為其代碼編寫單元測(cè)試,因?yàn)楫?dāng)他們?cè)贘upyter中運(yùn)行時(shí),通常會(huì)查看每個(gè)單元格的結(jié)果,然后得出結(jié)論,之后繼續(xù)。但是,以我的經(jīng)驗(yàn)來(lái)看,Jupyter通常會(huì)發(fā)生的情況是,Jupyter中的代碼很快就超出了數(shù)據(jù)探究的范圍,對(duì)于進(jìn)一步的工作很有用?;蛘撸琂upyter本身可能會(huì)產(chǎn)生有用的結(jié)果,需要定期運(yùn)行。也許需要維護(hù)代碼并將其與外部數(shù)據(jù)源集成。然后,確??梢詼y(cè)試和驗(yàn)證notebook中的代碼就變得很重要。

在這種情況下,我們有哪些選擇對(duì)Jupyter代碼來(lái)進(jìn)行單元測(cè)試?在本文中,我將介紹在Jupyter notebooks中對(duì)Python代碼進(jìn)行單元測(cè)試的幾個(gè)選項(xiàng)。

也許只是不做?

Jupyter notebook 單元測(cè)試的第一個(gè)選擇是根本不做。這樣,我并不是說(shuō)不要對(duì)代碼進(jìn)行單元測(cè)試,而是將其從notebook 中提取到單獨(dú)的Python模塊中,然后再將其重新導(dǎo)入notebook 中。應(yīng)該使用通常對(duì)單元代碼進(jìn)行單元測(cè)試的方式來(lái)測(cè)試該代碼,無(wú)論是使用unittest,pytest,doctest還是其他單元測(cè)試框架。本文不會(huì)詳細(xì)介紹所有這些框架,但是對(duì)于python開發(fā)人員來(lái)說(shuō),一個(gè)不錯(cuò)的選擇是不在其Jupyter notebook本中進(jìn)行測(cè)試,而是使用多種可用于Python代碼的測(cè)試框架,并在開發(fā)過(guò)程中盡快將代碼移至外部模塊。

在notebook中進(jìn)行測(cè)試

如果最終決定要將代碼保留在Jupyter notebook中,則實(shí)際上有一些單元測(cè)試選項(xiàng)。在復(fù)習(xí)其中的一些內(nèi)容之前,讓我們先設(shè)置一個(gè)在Jupyter notebook中可能會(huì)遇到的代碼示例。假設(shè)您的notebook從API中提取了一些數(shù)據(jù),從中計(jì)算出一些結(jié)果,然后生成了一些圖表和其他數(shù)據(jù)摘要,這些摘要會(huì)一直保存在其他地方。也許有一個(gè)函數(shù)可以產(chǎn)生正確的API URL,我們想對(duì)該函數(shù)進(jìn)行單元測(cè)試。此功能具有一些邏輯,可以根據(jù)報(bào)告的日期更改URL格式。這是經(jīng)過(guò)調(diào)試的版本。 

  1. import datetime  
  2. import dateutil  
  3. def make_url(date):  
  4.     """Return the url for our API call based on date."""  
  5.     if isinstance(date, str):  
  6.         date = dateutil.parser.parse(date).date()  
  7.     elif not isinstance(date, datetime.date):  
  8.         raise ValueError("must be a date")  
  9.     if date >= datetime.date(2020, 1, 1): 
  10.         return f"https://api.example.com/v2/{date.year}/{date.month}/{date.day}"  
  11.     else:  
  12.         return f"https://api.example.com/v1/{date:%Y-%m-%d}" 

使用unittest進(jìn)行單元測(cè)試

通常,當(dāng)我們使用unittest進(jìn)行測(cè)試時(shí),我們會(huì)將測(cè)試方法放在單獨(dú)的測(cè)試模塊中,或者可能將這些方法混入主模塊中。然后,我們需要執(zhí)行unittest.main方法,可能是__main__防護(hù)中的默認(rèn)方法。我們基本上可以在Jupyter notebook中執(zhí)行相同的操作。我們可以創(chuàng)建一個(gè)unitest.TestCase類,執(zhí)行所需的測(cè)試,然后僅在任何單元格中執(zhí)行單元測(cè)試。您只需要保存unittest.main方法的輸出并檢查是否有錯(cuò)誤。 

  1. import unittest  
  2. class TestUrl(unittest.TestCase):  
  3.     def test_make_url_v2(self):  
  4.         date = datetime.date(2020, 1, 1)  
  5.         self.assertEqual(make_url(date), "https://api.example.com/v2/2020/1/1")      
  6.      def test_make_url_v1(self):  
  7.         date = datetime.date(2019, 12, 31)  
  8.         self.assertEqual(make_url(date), "https://api.example.com/v1/2019-12-31")       
  9.  res = unittest.main(argv=[''], verbosity=3exit=False 
  10. # if we want our notebook to stop processing due to failures, we need a cell itself to fail  
  11. assert len(res.result.failures) == 0  
  1. test_make_url_v1 (__main__.TestUrl) ... ok  
  2. test_make_url_v2 (__main__.TestUrl) ... ok  
  3. ----------------------------------------------------------------------  
  4. Ran 2 tests in 0.001s  
  5. OK 

事實(shí)證明,這非常簡(jiǎn)單,如果您不介意在notebook中混合使用代碼和進(jìn)行測(cè)試,那么效果很好。

使用doctest進(jìn)行單元測(cè)試

在代碼中包含測(cè)試的另一種方法是使用doctest。Doctest使用特殊格式的代碼文檔,其中包括我們的測(cè)試和預(yù)期結(jié)果。下面是包含此特殊代碼文檔的更新方法,包括正例和負(fù)例。這是一種在一個(gè)地方測(cè)試和記錄代碼的簡(jiǎn)單方法,通常會(huì)在python模塊中使用,main頭文件將僅在其中運(yùn)行doct測(cè)試,如下所示: 

  1. if __name__ == __main__:  
  2.     doctest.testmod() 

由于我們?cè)趎otebook中,因此只需將其添加到定義了代碼的單元格中,它也將起作用。首先,這是我們更新的帶有doctest注釋的make_url方法。 

  1. def make_url(date):  
  2.     """Return the url for our API call based on date.  
  3.     >>> make_url("1/1/2020")  
  4.     'https://api.example.com/v2/2020/1/1'   
  5.      >>> make_url("1-1-x1")  
  6.     Traceback (most recent call last):  
  7.         ...  
  8.     dateutil.parser._parser.ParserError: Unknown string format: 1-1-x1   
  9.      >>> make_url("1/1/20001")  
  10.     Traceback (most recent call last):  
  11.         ...  
  12.     dateutil.parser._parser.ParserError: year 20001 is out of range: 1/1/20001  
  13.      >>> make_url(datetime.date(2020,1,1))  
  14.     'https://api.example.com/v2/2020/1/1'    
  15.      >>> make_url(datetime.date(2019,12,31))  
  16.     'https://api.example.com/v1/2019-12-31'  
  17.     """  
  18.     if isinstance(date, str):  
  19.         date = dateutil.parser.parse(date).date() 
  20.      elif not isinstance(date, datetime.date):  
  21.         raise ValueError("must be a date")  
  22.     if date >= datetime.date(2020, 1, 1):  
  23.         return f"https://api.example.com/v2/{date.year}/{date.month}/{date.day}"  
  24.     else:  
  25.         return f"https://api.example.com/v1/{date:%Y-%m-%d}"  
  26. import doctest  
  27. doctest.testmod()  
  1. TestResults(failed=0attempted=5

用testbook進(jìn)行單元測(cè)試

testbook項(xiàng)目是notebook 單元測(cè)試的另一種方式。它允許您從notebook 外部以純Python代碼方式引用notebook 。這使您可以在單獨(dú)的Python模塊中使用任何您喜歡的測(cè)試框架(例如pytest或unittest)。您可能會(huì)遇到這樣的情況:允許用戶修改和更新notebook代碼是保持代碼更新并為最終用戶提供靈活性的最佳方法。但是您可能希望仍單獨(dú)對(duì)代碼進(jìn)行測(cè)試和驗(yàn)證。Testbook使其成為一個(gè)選項(xiàng)。

首先,您必須將其安裝在您的環(huán)境中:

  1. pip install testbook 

或者在你的notebook中:

  1. %pip install testbook 

現(xiàn)在,在一個(gè)單獨(dú)的python文件中,您可以導(dǎo)入notebook代碼并在那里進(jìn)行測(cè)試。在該文件中,您將創(chuàng)建類似于以下代碼的代碼,然后使用您更喜歡實(shí)際執(zhí)行單元測(cè)試的任何單元測(cè)試框架。您可以在Python文件中創(chuàng)建以下代碼(例如jupyter_unit_tests.py)。 

  1. import datetime  
  2. import testbook  
  3. @testbook.testbook('./jupyter_unit_tests.ipynb', execute=True 
  4. def test_make_url(tb): 
  5.      func = tb.ref("make_url")  
  6.     date = datetime.date(2020, 1, 2)  
  7.     assert make_url(date) == "https://api.example.com/v2/2020/1/1" 

在這種情況下,您現(xiàn)在可以使用任何單元測(cè)試框架來(lái)運(yùn)行測(cè)試。例如,使用pytest,您只需運(yùn)行以下命令: 

  1. pytest jupyter_unit_tests.py 

這可以作為正常的單元測(cè)試,并且測(cè)試應(yīng)該通過(guò)。但是,在撰寫本文時(shí),我意識(shí)到testbook代碼對(duì)將單元測(cè)試中的參數(shù)傳遞回notebook內(nèi)核進(jìn)行測(cè)試的支持有限。這些參數(shù)是JSON序列化的,并且當(dāng)前代碼知道如何處理各種Python類型。但是,它不會(huì)將日期時(shí)間作為對(duì)象傳遞,而是作為字符串傳遞。由于我們的代碼嘗試將字符串解析為日期(在我對(duì)其進(jìn)行修改之后),因此它可以工作。換句話說(shuō),上面的單元測(cè)試不是將datetime.date傳遞給make_url方法,而是傳遞一個(gè)字符串(2020-01-02),然后將其解析為一個(gè)日期。您如何將日期從單元測(cè)試傳遞到notebook代碼中?您有以下幾種選擇。首先,您可以在notebook中創(chuàng)建一個(gè)日期對(duì)象,僅用于測(cè)試目的,然后在單元測(cè)試中引用它。

  1. testdate1 = datetime.date(2020,1,1)  # for unit test 

然后,您可以編寫單元測(cè)試以在測(cè)試中使用該變量。

第二種選擇是將Python代碼寫入notebook,然后在單元測(cè)試中重新引用它。這兩個(gè)選項(xiàng)都顯示在外部單元測(cè)試的最終版本中。只需將其保存在jupyter_unit_tests.py上,然后使用您喜歡的單元測(cè)試框架來(lái)運(yùn)行它。 

  1. import datetime  
  2. import testbook  
  3. @testbook.testbook('./jupyter_unit_tests.ipynb', execute=True 
  4. def test_make_url(tb):  
  5.     f = tb.ref("make_url")  
  6.     d = "2020-01-02"  
  7.     assert f(d) == "https://api.example.com/v2/2020/1/2"  
  8.     # note that this is actually converted to a string  
  9.     d = datetime.date(2020, 1, 2)  
  10.     assert f(d) == "https://api.example.com/v2/2020/1/2"  
  11.     # this one will be testing the date functionality  
  12.     d2 = tb.ref("testdate1")  
  13.     assert f(d2) == "https://api.example.com/v2/2020/1/1"  
  14.     # this one will inject similar code as above, then use it  
  15.     tb.inject("d3 = datetime.date(2020, 2, 3)")  
  16.     d3 = tb.ref("d3")  
  17.     assert f(d3) == "https://api.example.com/v2/2020/2/3" 

總結(jié)

因此,無(wú)論您是單元測(cè)試的純粹主義者還是只想在notebooks中添加一些單元測(cè)試,您都可以考慮以上幾種選擇。不要讓notebooks的使用妨礙您在測(cè)試代碼方面做正確的事情。 

 

責(zé)任編輯:龐桂玉 來(lái)源: Python中文社區(qū) (ID:python-china)
相關(guān)推薦

2017-01-16 12:12:29

單元測(cè)試JUnit

2017-01-14 23:26:17

單元測(cè)試JUnit測(cè)試

2013-06-04 09:49:04

Spring單元測(cè)試軟件測(cè)試

2017-03-23 16:02:10

Mock技術(shù)單元測(cè)試

2017-01-14 23:42:49

單元測(cè)試框架軟件測(cè)試

2021-03-28 23:03:50

Python程序員編碼

2009-06-22 10:29:11

集成測(cè)試Spring

2009-08-19 09:00:48

單元測(cè)試框架自動(dòng)化測(cè)試

2012-11-01 11:32:23

IBMdw

2023-08-02 13:59:00

GoogleTestCTest單元測(cè)試

2012-11-01 11:37:05

JavaScript單元測(cè)試測(cè)試工具

2009-06-08 19:57:29

EclipseJUnit4單元測(cè)試

2009-06-08 19:59:09

EclipseJUnit單元測(cè)試

2022-12-08 08:01:02

Python測(cè)試單元

2009-06-08 20:04:06

EclipseJUnit4單元測(cè)試

2011-06-20 16:41:59

單元測(cè)試

2017-12-12 13:17:36

機(jī)器學(xué)習(xí)代碼單元測(cè)試

2023-12-11 08:25:15

Java框架Android

2020-08-18 08:10:02

單元測(cè)試Java

2021-05-05 11:38:40

TestNGPowerMock單元測(cè)試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文字幕av日韩精品| 国产精品日韩精品| 天天插天天射天天干| 欲香欲色天天天综合和网| 国产午夜精品一区二区三区嫩草| 成人黄色av播放免费| 亚洲国产美女视频| 丝袜连裤袜欧美激情日韩| 欧美系列一区二区| 免费人成在线观看视频播放| 欧美777四色影视在线 | 奇米影视亚洲色图| 国产中文字幕在线视频| 国产成人在线视频网站| 国产精品久久久久7777婷婷| 久久久夜色精品| av一区二区在线播放| 精品国产乱码久久久久久1区2区| 男人插女人下面免费视频| 免费看电影在线| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品一区二区欧美黑人喷潮水| 丰满熟女人妻一区二区三| 激情久久久久久久| y97精品国产97久久久久久| 国产精品无码在线| 人人九九精品视频| 欧美三级一区二区| 青青草原av在线播放| 欧美xxxx性xxxxx高清| 国产精品久久久久一区 | 欧美wwwwwww| 亚洲一二三四| 亚洲国产一区二区三区| 黄色一级视频播放| 9色在线视频| 久久久久国产精品厨房| 精品伦理一区二区三区| jizz中国少妇| 国产一区二区看久久| 国产精品视频播放| 青青草视频在线观看免费| 在线一区免费观看| 久久久综合av| 国产一级久久久| 欧美日韩综合| 欧美日韩国产二区| 欧美久久久久久久久久久久| 婷婷亚洲五月色综合| 日韩在线中文字| 精品伦精品一区二区三区视频密桃| 制服丝袜日韩| 国产一区二区日韩| 成都免费高清电影| 精品国产91久久久久久浪潮蜜月| 亚洲精选中文字幕| 蜜桃精品一区二区| 国产免费播放一区二区| 亚洲一区二区福利| 日本精品久久久久中文| 国产精品精品| 欧美成人一区二区三区电影| 国产一区二区三区在线视频观看| 在线一区电影| 久久久久久久香蕉网| 日韩xxxxxxxxx| 久久都是精品| 国产精品丝袜一区二区三区| 国产又色又爽又黄又免费| 国产在线一区观看| 成人精品一二区| 天堂在线资源网| 久久中文娱乐网| 四虎一区二区| av毛片在线免费看| 亚洲成人av一区| 欧美 国产 小说 另类| av成人免费看| 91精品国产综合久久小美女| www男人天堂| 免费成人av| 久久亚洲精品一区| 日韩欧美激情视频| 日本aⅴ精品一区二区三区| 国产在线高清精品| 日本高清视频在线| 欧美极品美女视频| 在线观看17c| 伊伊综合在线| 91精品综合久久久久久| 在线视频 日韩| 精品国产精品| 欧美精品999| 中文字幕视频一区二区| 国产精品123| 欧美高清一区二区| www视频在线免费观看| 欧美色xxxx| 久久综合在线观看| 丝袜连裤袜欧美激情日韩| 久久精品亚洲一区| www亚洲视频| 国产综合色精品一区二区三区| 国产一区二区在线观看免费播放| а√天堂中文在线资源bt在线| 一级中文字幕一区二区| 污片在线免费看| 日韩极品在线| 欧美极品在线播放| 亚洲最大成人在线视频| 成人动漫一区二区在线| 综合一区中文字幕| 亚洲优女在线| 精品国产sm最大网站| 老司机深夜福利网站| 一本色道88久久加勒比精品| 成人国产精品日本在线| 国产精品视频二区三区| 天天色图综合网| 4438x全国最大成人| 日韩国产欧美一区二区| 日韩av123| 天堂在线资源网| 一区av在线播放| 婷婷激情5月天| 成人区精品一区二区婷婷| 国产91精品久久久| 色欲久久久天天天综合网| 亚洲日本在线观看| 亚洲黄色小视频在线观看| 欧美影院天天5g天天爽| 欧美精品18videosex性欧美| a级片在线播放| 亚洲人成亚洲人成在线观看图片| 杨幂毛片午夜性生毛片 | 成人全视频高清免费观看| 亚洲精品欧美激情| 91亚洲精品久久久蜜桃借种| 在线一级成人| 欧美一区在线直播| 亚洲av激情无码专区在线播放| 亚洲综合色噜噜狠狠| 国产九九九视频| 久久精品青草| 亚洲一区二区三区xxx视频| 麻豆电影在线播放| 欧美精品第一页| 亚洲一二三四五六区| 麻豆一区二区在线| 日韩精品久久一区二区三区| 成人涩涩视频| 最近2019中文字幕大全第二页 | 国产精品久久一区二区三区| 日本成人在线播放| 一本色道久久综合狠狠躁的推荐| 女性生殖扒开酷刑vk| 亚洲影视一区| 国产二区一区| 成人综合久久网| 国产美女高潮在线| 亚洲精品电影在线观看| 国偷自拍第113页| 91毛片在线观看| 免费大片在线观看| 日韩欧美大片| 91系列在线观看| 久久国产精品黑丝| 精品国产a毛片| 中文字幕视频网站| 中文字幕乱码日本亚洲一区二区| 国产精品一区二区羞羞答答| 色综合色综合| 福利精品视频| 在线观看欧美日韩电影| 中文字幕视频在线免费欧美日韩综合在线看 | 免费高清视频在线观看| 精品91久久久久| 欧美精品七区| 国产免费av国片精品草莓男男| 国内自拍欧美激情| 成人资源www网在线最新版| 7777精品伊人久久久大香线蕉经典版下载| 欧美日韩在线视频免费| 国产综合色在线| 欧美牲交a欧美牲交| 欧美亚洲国产精品久久| av成人午夜| 偷拍精品精品一区二区三区| 久久国产精品亚洲| 天堂中文在线视频| 欧美日韩国产欧美日美国产精品| 免费无遮挡无码永久在线观看视频 | 亚洲久久视频| 一区二区三区|亚洲午夜| 2020国产精品极品色在线观看| 欧美自拍视频在线观看| 日本在线www| 亚洲精品美女久久久久| 一卡二卡三卡在线| 精品久久久久久中文字幕| 中文字幕美女视频| 99久久精品99国产精品| 中文字幕第一页在线视频| 99综合在线| 亚洲成年人专区| 米奇777超碰欧美日韩亚洲| 51蜜桃传媒精品一区二区| 欧洲一级精品| 性色av一区二区三区| 国产区在线看| 在线亚洲欧美视频| 亚洲三区在线观看无套内射| 欧美一区二区高清| wwwwww在线观看| 亚洲成av人片一区二区| 日本中文在线视频| 国产欧美一区二区精品忘忧草| 亚洲精品第二页| 国产成人精品三级| www.com操| 老妇喷水一区二区三区| 亚洲美免无码中文字幕在线| 欧美在线1区| 中文字幕中文字幕99| 欧美日韩国产传媒| 蜜桃av噜噜一区二区三| 欧洲亚洲视频| 国外成人在线视频网站| 日韩中文字幕视频网| 91久久综合亚洲鲁鲁五月天| 国产精品第一国产精品| 国产精品9999| 日韩视频网站在线观看| 国产99在线|中文| 伊人久久精品一区二区三区| 国产91精品久久久久久久| 1区2区3区在线| 欧美激情在线观看| 久久香蕉av| 久久久免费av| 精品极品在线| 欧美亚洲免费电影| 中文字幕在线官网| 欧美在线视频一区二区| 综合另类专区| 国产精品久久久久久久久久久不卡 | 亚洲一区久久久| 久久国产精品美女| 91成人免费观看| 日韩成人久久| 99精品99久久久久久宅男| 一区二区三区四区高清视频| 91精品视频在线播放| 精品午夜视频| 91丝袜脚交足在线播放| av成人综合| 国产欧美丝袜| 日韩电影不卡一区| 日韩欧美一区二区三区久久婷婷| 不卡一区2区| 青青草原网站在线观看| 国产精品二区影院| 亚洲熟妇无码一区二区三区| 亚洲少妇在线| 亚洲综合在线网站| 奇米影视一区二区三区小说| 狠狠干狠狠操视频| 国产精品一区二区在线观看网站 | 丁香婷婷成人| 免费在线观看一区二区| 精品久久中文| 一区二区三区日韩视频| 激情久久一区| 美女黄色片视频| 国产精品影视在线| 男男一级淫片免费播放| 久久久久久久久岛国免费| 国产成人精品视频免费| 亚洲va欧美va人人爽午夜 | 69堂成人精品免费视频| 亚洲女同志亚洲女同女播放| 亚洲精品日韩在线| 免费av在线播放| 97视频在线看| 人人玩人人添人人澡欧美| 99porn视频在线| 国产欧美日韩精品一区二区三区 | 国产欧美日韩一区| 全球成人免费直播| 成年人网站国产| 欧美aaa在线| 少妇献身老头系列| 中文字幕精品综合| 国产一级片免费观看| 欧美综合亚洲图片综合区| jizz中国女人| 影音先锋欧美精品| 91制片在线观看| 亚洲va久久久噜噜噜久久天堂| 精品视频自拍| 日韩第一页在线观看| 免费日韩精品中文字幕视频在线| 亚洲视频一二三四| 26uuu精品一区二区在线观看| 爱爱视频免费在线观看| 日韩欧美在线视频日韩欧美在线视频| 国产又黄又爽视频| 亚洲欧美国产精品专区久久| 色女人在线视频| 国产欧美日韩丝袜精品一区| 狼人精品一区二区三区在线| 中文字幕一区二区三区最新| 性感少妇一区| 捆绑裸体绳奴bdsm亚洲| 亚洲免费高清视频在线| 一级特黄免费视频| 日韩精品在线视频美女| 欧美xxxx黑人又粗又长| 国产日韩欧美日韩| 国产欧美日韩在线观看视频| 久久国产精品网| 国产一区福利在线| 亚洲精品视频网址| 欧美丝袜一区二区三区| 日韩一区二区三区不卡| 久久久久北条麻妃免费看| 韩国成人漫画| 免费在线观看91| 亚洲综合三区| 亚洲精品乱码久久| 亚洲一区二区综合| 亚洲AV无码国产精品午夜字幕| www.亚洲成人| 日韩毛片免费看| 宅男噜噜99国产精品观看免费| 天堂成人国产精品一区| 成人性生交大免费看| 欧美性xxxxxxx| 天堂中文字幕在线| 国产成人短视频| 米奇777超碰欧美日韩亚洲| 啊啊啊一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 免费毛片在线播放免费| 日韩精品一区二区三区视频| 国产黄大片在线观看画质优化| 91精品免费久久久久久久久| 国产精品videosex性欧美| 亚洲免费黄色网| 亚洲色图欧美在线| av网站在线免费看| 久久69精品久久久久久久电影好 | 日本成人在线不卡| 国产精品99久久久久久久vr| 欧美色图一区二区| 精品久久免费看| 蜜桃av免费在线观看| 日本精品免费观看高清观看| 国产黄在线观看| 国产精品中文久久久久久久| 我不卡手机影院| 亚洲妇女无套内射精| 亚洲国产精品视频| 天天干天天做天天操| 庆余年2免费日韩剧观看大牛| 国产在线观看91一区二区三区| 亚洲欧美久久久久| 亚洲精品视频自拍| 天天干视频在线| 国产成人一区二区三区电影| 99久久这里只有精品| 午夜福利三级理论电影| 欧美日韩亚洲国产一区| www在线播放| 99在线视频首页| 免费中文字幕日韩欧美| 波兰性xxxxx极品hd| 精品国偷自产国产一区| 久久人体大尺度| 激情五月五月婷婷| 91亚洲精华国产精华精华液| 中文字幕日韩三级| 欧美激情视频一区| 国产一区二区三区探花| 交换做爰国语对白| 欧美日韩综合视频| 欧美激情二区| 精品免费日产一区一区三区免费| 日本伊人色综合网| 国产亚洲精品av| 中文字幕亚洲情99在线| 丁香5月婷婷久久| 一级黄色录像在线观看| 午夜在线成人av| 麻豆tv免费在线观看| 欧美高清视频一区二区三区在线观看| 韩国一区二区三区| 免费看毛片网站| 欧美精品video| 欧美超碰在线|