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

不拼花哨,只拼實用:Unittest指南,干貨為王!

開發 測試
Unittest 提供了完整的測試結構,支持自動化測試的執行,能夠對測試用例進行組織,并且提供了豐富的斷言方法。

Python為開發者提供了內置的單元測試框架 unittest,它是一種強大的工具,能夠有效地編寫和執行單元測試。unittest 提供了完整的測試結構,支持自動化測試的執行,能夠對測試用例進行組織,并且提供了豐富的斷言方法。最終,unittest 會生成詳細的測試報告,這個框架非常簡單且易于使用。

unittest核心概念

在 unittest 中,有幾個核心概念:

  • TestCase(測試用例):每個測試用例實例用于封裝一個或多個測試函數。
  • TestSuite(測試套件):這是多個測試用例的集合,用于組織和執行多個測試用例。
  • TestLoader(測試加載器):這是一個用于將測試用例加載到測試套件中的工具。
  • TextTestRunner(測試運行器):這是用于執行測試用例的運行器,負責運行測試并生成結果報告。
  • Fixture(環境管理機制):這是測試用例的環境搭建和銷毀部分,包括前置條件和后置條件。

unittest的工作流程

  • 編寫繼承自 unittest.TestCase 的測試用例類,其中每個測試函數都是一個獨立的測試用例。
  • 使用 TestLoader 加載測試用例,并將它們組織成 TestSuite 對象。
  • 使用 TestRunner 運行 TestSuite 中的測試用例,并輸出測試結果。

使用unittest初級指南

  • 導入 unittest 模塊以及被測試的文件或類。
  • 創建一個測試類,并繼承 unittest.TestCase,所有自定義的單元測試類都要繼承它,作為基類。
  • 重寫 setUp 和 tearDown 方法,用于初始化和清理測試環境(如果有必要)。
  • 定義測試函數,函數名以 test_ 開頭,這樣才能被識別并執行。
  • 在測試函數中使用斷言來判斷測試結果是否符合預期。
  • 調用 unittest.main() 方法運行測試用例,按照函數名的排序執行測試。

以下是一個簡單的例子:

import unittest

def login(username, password):
    if username == 'kira' and password == '123':
        res = {"code": 200, "msg": "登錄成功"}
        return res
    return {"code": 400, "msg": "登錄失敗"}

class TestLogin(unittest.TestCase):

    def test_login_success(self):
        """測試登錄成功"""
        test_data = {"username": "kira", "password": "test"}
        expect_data = {"code": 200, "msg": "登錄成功"}
        res = login(**test_data)
        self.assertEqual(res, expect_data)

    def test_login_error_with_error_password(self):
        """賬號正確,密碼錯誤,登錄失敗"""
        test_data = {"username": "kira", "password": "12345"}
        expect_data = {"code": 400, "msg": "登錄失敗"}
        res = login(**test_data)
        self.assertEqual(res, expect_data)

    # 更多測試函數類似...

if __name__ == '__main__':
    unittest.main()

以上是一個簡單的測試用例,包含了兩個測試函數。運行腳本將輸出測試結果。

unittest核心概念

測試腳手架

測試腳手架 是測試用例的前置條件和后置條件,確保測試環境的初始化和清理,從而保證測試的準確性和可靠性。

import unittest

class MyTestCase(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        # 類級別的前置條件設置,整個類運行最先只執行一次
        print("setUpClass")

    @classmethod
    def tearDownClass(cls):
        # 類級別的后置條件清理,整個類運行最后結束執行一次
        print("tearDownClass")

    def setUp(self):
        # 測試方法級別的前置條件設置,所有測試方法運行前都執行一次
        print("setUp")

    def tearDown(self):
        # 測試方法級別的后置條件清理,所有測試方法運行結束都執行一次
        print("tearDown")

    def test_example(self):
        # 測試用例
        print("test_example")

if __name__ == "__main__":
    unittest.main()
  • setUp():每個測試方法運行前執行,用于測試前置的初始化工作。
  • tearDown():每個測試方法結束后執行,用于測試后的清理工作。
  • setUpClass():所有的測試方法運行前執行,用于單元測試類運行前的準備工作。使用 @classmethod 裝飾器裝飾,整個測試類運行過程中只會執行一次。
  • tearDownClass():所有的測試方法結束后執行,用于單元測試類運行后的清理工作。使用 @classmethod 裝飾器裝飾,整個測試類運行過程中只會執行一次。

測試用例

測試用例 是最小的測試單元,用于檢測特定的輸入集合的特定的返回值。unittest 提供了 TestCase 基類,所有的測試類都需要繼承該基類,而在該類下的函數如果以 test_ 開頭,則被標識為測試函數:

class MyTestCase(unittest.TestCase

):

    def test_addition(self):
        result = 2 + 3
        self.assertEqual(result, 5)  # 使用斷言方法驗證結果是否相等

    def test_subtraction(self):
        result = 5 - 3
        self.assertTrue(result == 2)  # 使用斷言方法驗證結果是否為True

    # 更多測試用例函數...

斷言方法

以下是常用的斷言方法:

  • assertEqual(a, b, msg=None):驗證 a 等于 b。
  • assertNotEqual(a, b):驗證 a 不等于 b。
  • assertTrue(x):驗證 x 是否為 True。
  • assertFalse(x):驗證 x 是否為 False。
  • assertIs(a, b):驗證 a 是否是 b。
  • assertIsNot(a, b):驗證 a 是否不是 b。
  • assertIsNone(x):驗證 x 是否為 None。
  • assertIsNotNone(x):驗證 x 是否不為 None。
  • assertIn(a, b):驗證 a 是否在 b 中。
  • assertNotIn(a, b):驗證 a 是否不在 b 中。
  • assertIsInstance(a, b):驗證 a 是否是 b 類型的實例。
  • assertNotIsInstance(a, b):驗證 a 是否不是 b 類型的實例。

可以使用這些方法進行斷言,也可以直接使用原生的assert來斷言,如果斷言失敗,測試用例會被定義為執行失敗。

忽略特定測試方法

unittest 提供了一些方法來跳過特定的測試用例:

  • @unittest.skip(reason):強制跳過,reason 是跳過的原因。
  • @unittest.skipIf(condition, reason):當 condition 為 True 時跳過。
  • @unittest.skipUnless(condition, reason):當 condition 為 False 時跳過。
  • @unittest.expectedFailure:如果測試失敗,這個測試用例不會計入失敗的統計。

使用實例方法:self.skipTest() 使用和上述類似。

import sys
import unittest

class Test1(unittest.TestCase):
    @unittest.expectedFailure  # 即使失敗也會被計為成功的用例
    def test_1(self):
        assert 1 + 1 == 3

    @unittest.skip('無條件跳過')  # 不管什么情況都會進行跳過
    def test_2(self):
        print("2+2...", 4)

    @unittest.skipIf(sys.platform == "win32", "跳過")  # 如果系統平臺為 Windows 則跳過
    def test_3(self):
        print("3+3...", 6)

    @unittest.skipUnless(sys.platform == "win32", "跳過")  # 除非系統平臺為 Windows,否則跳過
    def test_4(self):
        print("4+4...", 8)

    def test_5(self):
        self.skipTest("跳過")
        print("5+5...", 10)

if __name__ == "__main__":
    unittest.main(verbosity=2)

測試套件

測試套件用于收集和組織多個測試用例,便于集中執行。

  • 通過 unittest.main() 方法直接加載單元測試的測試模塊,這是一種簡單的加載方式。所有測試用例的執行順序按照方法名的字符串表示的 ASCII 碼升序排序,通過命名時使用 test_01_xxx 來指定執行順序。
  • 將所有的單元測試用例 TestCase 加載到測試套件 Test Suite 集合中,然后一次性加載所有測試對象。

通過 TestSuite 對象收集

此方式適用于需要自定義組合特定測試用例的情況。

import unittest

class MyTestCase(unittest.TestCase):
    def test_addition(self):
        result = 2 + 3
        self.assertEqual(result, 5)

def suite():
    suite = unittest.TestSuite()
    suite.addTest(MyTestCase('test_addition'))
    return suite

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(suite())

通過 TestLoader 對象收集

TestLoader 是 unittest 框架提供的加載測試用例的類。

import unittest

if __name__ == '__main__':
    loader = unittest.defaultTestLoader
    
    # 自動加載當前模塊中所有以 'test_' 開頭的測試用例函數
    suite = loader.loadTestsFromModule(__name__)

    runner = unittest.TextTestRunner()
    runner.run(suite)
import unittest

class MyTestCase(unittest.TestCase):
    def test_addition(self):
        result = 2 + 3
        self.assertEqual(result, 5)

if __name__ == '__main__':
    loader = unittest.defaultTestLoader
    
    # 自動加載 MyTestCase 類中的所有測試用例
    suite = loader.loadTestsFromTestCase(MyTestCase)

    runner = unittest.TextTestRunner()
    runner.run(suite)
import unittest

if __name__ == '__main__':
    loader = unittest.defaultTestLoader
    
    # 自動加載指定名稱的測試用例
    suite = loader.loadTestsFromName('module.MyTestCase.test_addition')

    runner = unittest.TextTestRunner()
    runner.run(suite)
import unittest

if __name__ == '__main__':
    loader = unittest.defaultTestLoader
    
    # 自動發現并加載指定目錄中的測試用例模塊
    suite = loader.discover(start_dir='test_directory', pattern='test_*.py', top_level_dir=None)

    runner = unittest.TextTestRunner()
    runner.run(suite)

測試運行器

測試運行器是用于執行和輸出測試結果的組件。常用的運行器有:

  • unittest.TextTestRunner:這是 unittest 框架中默認的測試運行器,會在命令行輸出測試結果。通過調用 run() 方法運行測試套件,并將測試結果打印到控制臺。
import unittest

if __name__ == '__main__':
    loader = unittest.defaultTestLoader
    suite = loader.discover(start_dir='tests', pattern='test_*.py')
    
    runner = unittest.TextTestRunner()
    result = runner.run(suite)
  • HTMLTestRunner:這是一個第三方庫,能夠生成漂亮的 HTML 測試報告,需要進行安裝。你可以通過搜索獲取相關文件進行安裝。
import unittest
from HTMLTestRunner import HTMLTestRunner



if __name__ == '__main__':
    loader = unittest.defaultTestLoader
    suite = loader.discover(start_dir='tests', pattern='test_*.py')
    
    with open('test_report.html', 'wb') as report_file:
        runner = HTMLTestRunner(stream=report_file, title='Test Report', description='Test Results')
        result = runner.run(suite)
  • XMLTestRunner:這是另一個第三方庫,用于生成 XML 格式的測試報告。
import unittest
from xmlrunner import XMLTestRunner

if __name__ == '__main__':
    loader = unittest.defaultTestLoader
    suite = loader.discover(start_dir='tests', pattern='test_*.py')
    
    with open('test_report.xml', 'wb') as report_file:
        runner = XMLTestRunner(output=report_file)
        result = runner.run(suite)

你也可以自定義測試運行器。繼承 unittest.TestRunner 類并實現 run() 方法,以創建自己的測試運行器。

import unittest

class MyTestRunner(unittest.TextTestRunner):
    def run(self, test):
        print("Running tests with MyTestRunner")
        result = super().run(test)
        return result

if __name__ == '__main__':
    loader = unittest.defaultTestLoader
    suite = loader.discover(start_dir='tests', pattern='test_*.py')
    
    runner = MyTestRunner()
    result = runner.run(suite)

通常使用 HTMLTestRunner 即可滿足需求,它非常易用。

實戰一個測試案例

假設有一個測試函數 login:

# login.py
def login(username, password):
    """模擬登錄校驗"""
    if username == 'kira' and password == '123456':
        return {"code": 0, "msg": "登錄成功"}
    else:
        return {"code": 1, "msg": "賬號或密碼不正確"}

設計用例

根據函數的參數和邏輯,設計如下用例:

編寫測試用例并運行

import unittest
from login import login

class TestLogin(unittest.TestCase):
    def test_login_correct(self):
        """測試賬號密碼正確"""
        test_data = {"username": "kira", "password": "123456"}
        expect_data = {"code": 0, "msg": "登錄成功"}
        res = login(**test_data)
        self.assertEqual(res, expect_data)

    def test_login_wrong_password(self):
        """測試賬號正確密碼不正確"""
        test_data = {"username": "kira", "password": "123"}
        expect_data = {"code": 1, "msg": "賬號或密碼不正確"}
        res = login(**test_data)
        self.assertEqual(res, expect_data)

    def test_login_wrong_username(self):
        """測試賬號錯誤密碼正確"""
        test_data = {"username": "kir", "password": "123456"}
        expect_data = {"code": 1, "msg": "賬號或密碼不正確"}
        res = login(**test_data)
        self.assertEqual(res, expect_data)

if __name__ == '__main__':
    unittest.main()

這是一個簡單的測試用例,包含了三個測試函數。運行測試用例后,會輸出測試結果,看完是否覺得unittest非常簡單易用。ner.run(suite)

責任編輯:趙寧寧 來源: 測試玩家勇哥
相關推薦

2012-10-26 12:47:27

Emotion UI華為Emotion U

2014-06-16 13:24:36

營銷

2023-06-11 15:51:13

2015-03-02 09:39:26

2018-01-23 10:16:36

前端干貨Web

2011-12-31 13:48:04

筆記本選購指南

2013-08-29 09:51:33

SSL證書SSL證書管理

2023-08-07 16:07:42

2021-04-13 06:50:35

Gitstash命令軟件開發

2013-10-21 10:20:39

多看閱讀移動閱讀用戶體驗

2015-03-18 09:54:13

內容為王服務為王大數據

2013-02-26 15:14:27

2015-11-10 17:36:18

2015-08-13 13:49:14

格力董明珠小米

2010-07-01 22:16:57

2017-01-19 11:58:35

阿里

2025-05-08 08:10:25

大模型DeepSeekAPI

2023-10-05 15:47:04

Linux內核編譯

2021-02-01 15:42:45

Node.jsSQL應用程序

2024-01-19 21:43:38

點贊
收藏

51CTO技術棧公眾號

日韩欧美在线一区| 99精品视频一区| 另类天堂视频在线观看| 亚洲精品鲁一鲁一区二区三区 | 成人爱爱电影网址| 欧洲成人在线观看| 国产精品视频一区二区在线观看| 亚洲91网站| 在线区一区二视频| 欧美黄色免费网址| 风间由美一区| 粉嫩aⅴ一区二区三区四区五区| 欧洲成人午夜免费大片| 欧美xxxx黑人xyx性爽| 四虎5151久久欧美毛片| 欧美一区二区成人6969| 国产成人精品视频ⅴa片软件竹菊| 老司机午夜在线视频| 久久综合九色综合97婷婷女人| 成人淫片在线看| 久久青青草原亚洲av无码麻豆| 亚洲五月综合| 中文字幕亚洲综合| 欧美图片一区二区| 91精品短视频| 欧美精品vⅰdeose4hd| 18禁网站免费无遮挡无码中文| 天堂а√在线资源在线| 久久久青草青青国产亚洲免观| 亚洲va男人天堂| 中文字幕日日夜夜| 99精品热6080yy久久| 欧美日韩国产成人在线| 一本在线免费视频| 国产传媒欧美日韩成人精品大片| 精品99久久久久久| 成年人性生活视频| 成人乱码手机视频| 精品视频全国免费看| 国产精品99久久免费黑人人妻| 波多野结衣在线高清| 亚洲免费观看高清完整版在线观看熊 | 99精品人妻国产毛片| 亚洲免费观看| 国内久久久精品| 久草国产在线观看| 欧美成人国产| 九九热视频这里只有精品| 国产免费久久久久| 91精品蜜臀一区二区三区在线| 国产亚洲精品久久久久久| 亚洲国产无码精品| 亚洲品质自拍| 亚洲欧美国产视频| 自拍偷拍中文字幕| 久操国产精品| 亚洲午夜av电影| 影音先锋男人在线| 91日韩视频| 久久综合国产精品台湾中文娱乐网 | 日韩在线观看中文字幕| 91精品福利在线一区二区三区| 蜜桃福利午夜精品一区| 日韩午夜电影免费看| 69av一区二区三区| 992tv人人草| 天堂va欧美ⅴa亚洲va一国产| 欧美一区日本一区韩国一区| 能看毛片的网站| 亚洲一区二区三区日本久久九 | 国产在线一二| 日本一区二区三区免费乱视频| 日韩av大全| 久久综合网导航| 亚洲精品免费在线播放| 国产一区 在线播放| 暧暧视频在线免费观看| 欧美特黄级在线| 亚洲精品视频导航| 九九99久久精品在免费线bt| 精品国产乱码久久久久久闺蜜| 久久久久亚洲av成人网人人软件| 美腿丝袜亚洲图片| 国产一区二区三区视频在线观看| 免费成人美女女在线观看| 91成人免费| 国内揄拍国内精品| 国产亚洲欧美日韩高清| 国产一区二区三区在线看麻豆| 成人精品水蜜桃| 亚洲 另类 春色 国产| 久久夜色精品一区| 99热这里只有精品7| 国产丝袜视频在线播放| 日韩欧中文字幕| 日韩欧美亚洲另类| 农村少妇一区二区三区四区五区 | 中文字幕有码在线观看| 亚洲成人一区在线| 一区二区三区 欧美| 136国产福利精品导航网址应用| 亚洲区一区二区| 在线免费日韩av| 国产视频久久| 91久久精品一区| 三级av在线| 亚洲免费观看高清完整| 日本黄网站免费| 亚洲专区**| 在线播放日韩欧美| 久久久久久久99| 久久99久久99精品免视看婷婷 | 亚洲人午夜射精精品日韩| 国产精品美女久久福利网站| 69sex久久精品国产麻豆| 欧美91在线|欧美| 日韩精品一二三四区| 国产精品成人69xxx免费视频| 国产日韩欧美一区二区三区在线观看| 91精品视频网站| 国产黄色在线| 黄网站色欧美视频| 特黄视频免费观看| 欧美热在线视频精品999| 欧美国产日韩一区二区| 一级久久久久久久| 久久噜噜亚洲综合| 国内精品在线观看视频| 国产精品亚洲欧美一级在线| 亚洲人a成www在线影院| 日本亚洲欧美在线| 国产精品99久久久久久似苏梦涵| 三区精品视频| 澳门成人av网| 亚洲精品国产免费| 久久精品国产亚洲av高清色欲| 美女一区二区久久| 日本一区二区高清视频| 中文在线а√在线8| 亚洲精品在线观看网站| 亚洲成人生活片| 精品午夜久久福利影院| 亚洲韩国在线| 黄色精品视频| 在线播放日韩av| 嫩草影院一区二区三区| 久久综合色8888| 欧美亚洲国产成人| 欧洲亚洲视频| 欧美最猛性xxxxx(亚洲精品)| 偷拍精品一区二区三区| 亚洲h在线观看| 亚洲第九十七页| 久久国产日韩| 欧美午夜视频在线| 欧美大片免费观看网址| 亚洲美女自拍视频| 亚洲欧美另类在线视频| 国产亚洲短视频| av在线无限看| 91欧美在线| 91丝袜脚交足在线播放| 国产美女一区视频| 亚洲精品电影久久久| a v视频在线观看| 久久久精品tv| 天天影视综合色| 日韩av在线播放网址| 国产中文日韩欧美| 在线中文字幕第一页| 精品久久久久久无| 欧美日韩乱国产| 亚洲国产成人午夜在线一区| 污网站免费在线| 在线观看国产精品入口| 国产高清在线一区二区| 亚洲小少妇裸体bbw| 国产一区二区日韩| 国产精品主播一区二区| 亚洲综合色视频| 成人午夜剧场视频网站| 久久国产三级精品| 青青视频免费在线| 日韩极品在线| 国产有码在线一区二区视频| caoporn97在线视频| 亚洲国产精品字幕| 亚洲国产av一区二区三区| 国产精品第13页| 久久人妻少妇嫩草av无码专区| 日本在线不卡一区| 400部精品国偷自产在线观看| 久久夜色电影| 国产欧美日韩专区发布| 青青在线视频| 国产一区二区三区在线观看网站| 99精品视频免费看| 一本到不卡精品视频在线观看| 最新黄色av网址| a级高清视频欧美日韩| 黄色永久免费网站| 亚洲欧洲综合| 影音先锋欧美在线| 日韩极品少妇| 91九色在线观看| 日本成人福利| 97人人模人人爽人人喊中文字| 午夜在线小视频| 精品无人区太爽高潮在线播放 | 国内成人精品2018免费看| av之家在线观看| 99久久精品国产亚洲精品 | 成人免费在线观看av| 国产精品精品软件视频| 亚洲网站免费| 国产精品7m视频| 波多野在线观看| 超碰91人人草人人干| 美女欧美视频在线观看免费 | 992tv免费直播在线观看| 精品成人佐山爱一区二区| 国产又粗又大又爽| 91黄色免费版| 国产 欧美 日韩 在线| 亚洲人成精品久久久久| 亚洲自拍偷拍图| 99精品欧美一区二区蜜桃免费 | 91丨九色丨黑人外教| 色哟哟免费视频| 精品一区二区在线观看| 91日韩视频在线观看| 久久人人精品| 激情六月丁香婷婷| 99在线观看免费视频精品观看| av动漫在线免费观看| 国产精品久久久久久久免费观看| 日韩国产在线一区| 精品72久久久久中文字幕| 久久精品日产第一区二区三区乱码| 深夜福利一区二区三区| 91在线网站视频| 国产视频一区二区在线播放| 国产有码一区二区| 国产精品777777在线播放| 国产视频观看一区| 亚洲一区二区av| 成人精品一区二区三区电影免费| 高清在线一区| 国产欧美一区二区三区视频 | 大胸美女被爆操| 国产免费观看久久| 美国黄色特级片| 国产精品网站在线播放| 精品丰满少妇一区二区三区| 亚洲国产精品精华液2区45| 成人一级片免费看| 中文字幕一区在线观看视频| 在线免费看av网站| 亚洲黄色小视频| 久久婷婷国产麻豆91| 亚洲一区二区3| 日本少妇久久久| 黑人巨大精品欧美一区免费视频| 国产精品久久久久久99| 色综合天天综合网天天看片| 中文字幕永久在线| 欧美日韩精品是欧美日韩精品| 国产精品无码天天爽视频| 日韩一区二区在线看| 高清毛片aaaaaaaaa片| 日韩av一区在线观看| 久久手机免费观看| 日韩一区av在线| 人妖欧美1区| 日本中文字幕不卡免费| 亚洲一区有码| 粉嫩av一区二区三区免费观看| 久久精品凹凸全集| 午夜精品视频在线观看一区二区| 欧美大片aaaa| 日韩一级性生活片| 日本欧美一区二区三区乱码| 天天色天天综合网| 成人av网站在线| 女人十八毛片嫩草av| 亚洲视频你懂的| 欧美精品亚洲精品日韩精品| 在线观看一区二区视频| 精品人妻伦一区二区三区久久| 亚洲精品www久久久| av播放在线| 久久久久久久久久婷婷| 婷婷综合六月| av色综合网| 国产精品一区2区3区| 国产911在线观看| 三级久久三级久久| 免费黄色av网址| 国产精品午夜在线观看| 国产精品不卡av| 欧美日韩一区 二区 三区 久久精品| 亚洲av无码国产精品永久一区| 精品亚洲永久免费精品| 50度灰在线| 国产精品扒开腿做爽爽爽男男| 亚洲精品视频一二三区| 日韩午夜视频在线观看| 影音先锋久久资源网| 亚洲性图一区二区| 久久综合九色综合97婷婷| 九九热这里有精品视频| 欧美午夜精品电影| 亚洲av片在线观看| 精品中文字幕在线| 国产69精品久久久久9999人| 久久99精品久久久水蜜桃| 欧美成熟视频| 伊人网在线综合| 国产亚洲一区二区三区四区 | 欧美调教femdomvk| 五月天婷婷在线播放| 久色乳综合思思在线视频| 影视一区二区三区| 久久久精品国产一区二区三区| 在线中文字幕亚洲| 国产免费又粗又猛又爽| 久久久久久久精| 五月天婷婷网站| 日韩午夜精品电影| 欧美三级黄网| 国产精品视频区1| 精品理论电影在线| 精品一卡二卡三卡| av福利精品导航| 国产精品成人国产乱| 精品国产三级电影在线观看| av免费在线观| 亚洲一区中文字幕| 国产精品二区不卡| 久久国产这里只有精品| 国产清纯美女被跳蛋高潮一区二区久久w| 97免费在线观看视频| 亚洲黄色av网站| heyzo在线| 精品久久精品久久| 亚洲美女少妇无套啪啪呻吟| 美女网站视频在线观看| 亚洲一级电影视频| 国产91绿帽单男绿奴| 欧美精品xxx| 精品久久ai电影| 欧美老熟妇喷水| 久久免费精品国产久精品久久久久| 国产精品自拍99| 亚洲免费视频一区二区| 性欧美hd调教| 台湾成人av| 精品写真视频在线观看| 青娱乐免费在线视频| 欧美v亚洲v综合ⅴ国产v| 3344国产永久在线观看视频| 国产区一区二区三区| 91久久亚洲| www.av天天| 欧美日韩国产三级| 最新黄网在线观看| 国产在线欧美日韩| 首页国产欧美久久| 后入内射无码人妻一区| 欧美一区二区免费视频| 爱看av在线| 欧洲在线视频一区| 国产综合一区二区| 中文字幕一区二区三区手机版| 亚洲精品一区av在线播放| 欧美国产日韩电影| 久久久成人精品一区二区三区| 成人自拍视频在线| 国产成人一级片| 精品国偷自产在线视频| 盗摄牛牛av影视一区二区| 国内外成人激情视频| 国产精品久久久一本精品| 国产白浆在线观看| 26uuu亚洲国产精品| 日本欧美国产| 风韵丰满熟妇啪啪区老熟熟女| 欧美性xxxx极品高清hd直播| av二区在线| 国产日韩精品久久| 久久成人羞羞网站| 日本在线视频免费观看| 国产亚洲精品久久久久久牛牛 | 日韩成人av网站| 国产精品66部| 亚洲黄网在线观看| 欧美老妇交乱视频| 欧美色图国产精品| 精品一区二区三区四区五区六区| 色婷婷久久久亚洲一区二区三区|