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

什么是行為驅動的Python?

開發 后端
您是否聽說過行為驅動開發,并好奇這是個什么東西?也許你發現了團隊成員在談論“嫩瓜”,而你卻不知所云。或許你是一個 Python 人Pythonista,正在尋找更好的方法來測試你的代碼。 無論在什么情況下,了解 BDD 都可以幫助您和您的團隊實現更好的協作和測試自動化,而 Python 的 behave 框架是一個很好的起點。

[[246386]]

使用 Python behave 框架的行為驅動開發模式可以幫助你的團隊更好的協作和測試自動化。

您是否聽說過行為驅動開發behavior-driven development(BDD),并好奇這是個什么東西?也許你發現了團隊成員在談論“嫩瓜”(LCTT 譯注:“嫩瓜gherkin” 是一種簡單的英語文本語言,工具 cucumber 通過解釋它來執行測試腳本,見下文),而你卻不知所云。或許你是一個 Python 人Pythonista,正在尋找更好的方法來測試你的代碼。 無論在什么情況下,了解 BDD 都可以幫助您和您的團隊實現更好的協作和測試自動化,而 Python 的 behave 框架是一個很好的起點。

什么是 BDD?

在軟件中,行為是指在明確定義的輸入、動作和結果場景中功能是如何運轉的。 產品可以表現出無數的行為,例如:

  • 在網站上提交表單
  • 搜索想要的結果
  • 保存文檔
  • 進行 REST API 調用
  • 運行命令行界面命令

根據產品的行為定義產品的功能可以更容易地描述產品,并對其進行開發和測試。 BDD 的核心是:使行為成為軟件開發的焦點。在開發早期使用示例語言的規范來定義行為。最常見的行為規范語言之一是 Gherkin,Cucumber項目中的Given-When-Then場景格式。 行為規范基本上是對行為如何工作的簡單語言描述,具有一致性和焦點的一些正式結構。 通過將步驟文本“粘合”到代碼實現,測試框架可以輕松地自動化這些行為規范。

下面是用Gherkin編寫的行為規范的示例:

根據產品的行為定義產品的功能可以更容易地描述產品,開發產品并對其進行測試。 這是BDD的核心:使行為成為軟件開發的焦點。 在開發早期使用示例規范的語言來定義行為。 最常見的行為規范語言之一是Gherkin,來自 Cucumber 項目中的 Given-When-Then 場景格式。 行為規范基本上是對行為如何工作的簡單語言描述,具有一致性和聚焦點的一些正式結構。 通過將步驟文本“粘合”到代碼實現,測試框架可以輕松地自動化這些行為規范。

下面是用 Gherkin 編寫的行為規范的示例:

  1. Scenario: Basic DuckDuckGo Search
  2. Given the DuckDuckGo home page is displayed
  3. When the user searches for "panda"
  4. Then results are shown for "panda"

快速瀏覽一下,行為是直觀易懂的。 除少數關鍵字外,該語言為自由格式。 場景簡潔而有意義。 一個真實的例子說明了這種行為。 步驟以聲明的方式表明應該發生什么——而不會陷入如何如何的細節中。

BDD 的主要優點是良好的協作和自動化。 每個人都可以為行為開發做出貢獻,而不僅僅是程序員。從流程開始就定義并理解預期的行為。測試可以與它們涵蓋的功能一起自動化。每個測試都包含一個單一的、獨特的行為,以避免重復。***,現有的步驟可以通過新的行為規范重用,從而產生雪球效果。

Python 的 behave 框架

behave 是 Python 中***的 BDD 框架之一。 它與其他基于 Gherkin 的 Cucumber 框架非常相似,盡管沒有得到官方的 Cucumber 定名。 behave 有兩個主要層:

  1. 用 Gherkin 的 .feature 文件編寫的行為規范
  2. 用 Python 模塊編寫的步驟定義和鉤子,用于實現 Gherkin 步驟

如上例所示,Gherkin 場景有三部分格式:

  1. 鑒于(Given)一些初始狀態
  2. 每當(When)行為發生時
  3. 然后(Then)驗證結果

當 behave 運行測試時,每個步驟由裝飾器“粘合”到 Python 函數。

安裝

作為先決條件,請確保在你的計算機上安裝了 Python 和 pip。 我強烈建議使用 Python 3.(我還建議使用 pipenv,但以下示例命令使用更基本的 pip。)

behave 框架只需要一個包:

  1. pip install behave

其他包也可能有用,例如:

  1. pip install requests    # 用于調用 REST API
  2. pip install selenium    # 用于 web 瀏覽器交互

GitHub 上的 behavior-driven-Python 項目包含本文中使用的示例。

Gherkin 特點

behave 框架使用的 Gherkin 語法實際上是符合官方的 Cucumber Gherkin 標準的。.feature 文件包含了功能(Feature)部分,而場景部分又包含具有 Given-When-Then 步驟的場景(Scenario) 部分。 以下是一個例子:

  1. Feature: Cucumber Basket
  2.   As a gardener,
  3.   I want to carry many cucumbers in a basket,
  4.   So that I dont drop them all.
  5.  
  6.   @cucumber-basket
  7.   Scenario: Add and remove cucumbers
  8.     Given the basket is empty
  9.     When "4" cucumbers are added to the basket
  10.     And "6" more cucumbers are added to the basket
  11.     But "3" cucumbers are removed from the basket
  12.     Then the basket contains "7" cucumbers

這里有一些重要的事情需要注意:

  • FeatureScenario 部分都有簡短的描述性標題
  • 緊跟在 Feature 標題后面的行是會被 behave 框架忽略掉的注釋。將功能描述放在那里是一種很好的做法。
  • ScenarioFeature 可以有標簽(注意 @cucumber-basket 標記)用于鉤子和過濾(如下所述)。
  • 步驟都遵循嚴格的 Given-When-Then 順序
  • 使用 AndBut 可以為任何類型添加附加步驟。
  • 可以使用輸入對步驟進行參數化——注意雙引號里的值。

通過使用場景大綱(Scenario Outline),場景也可以寫為具有多個輸入組合的模板:

  1. Feature: Cucumber Basket
  2.  
  3. @cucumber-basket
  4. Scenario Outline: Add cucumbers
  5. Given the basket has “<initial>” cucumbers
  6. When "<more>" cucumbers are added to the basket
  7. Then the basket contains "<total>" cucumbers
  8.  
  9. Examples: Cucumber Counts
  10. | initial | more | total |
  11. | 0 | 1 | 1 |
  12. | 1 | 2 | 3 |
  13. | 5 | 4 | 9 |

場景大綱總是有一個示例(Examples)表,其中***行給出列標題,后續每一行給出一個輸入組合。 只要列標題出現在由尖括號括起的步驟中,行值就會被替換。 在上面的示例中,場景將運行三次,因為有三行輸入組合。 場景大綱是避免重復場景的好方法。

Gherkin 語言還有其他元素,但這些是主要的機制。 想了解更多信息,請閱讀 Automation Panda 這個網站的文章 Gherkin by ExampleWriting Good Gherkin

Python 機制

每個 Gherkin 步驟必須“粘合”到步驟定義——即提供了實現的 Python 函數。 每個函數都有一個帶有匹配字符串的步驟類型裝飾器。它還接收共享的上下文和任何步驟參數。功能文件必須放在名為 features/ 的目錄中,而步驟定義模塊必須放在名為 features/steps/ 的目錄中。 任何功能文件都可以使用任何模塊中的步驟定義——它們不需要具有相同的名稱。 下面是一個示例 Python 模塊,其中包含 cucumber basket 功能的步驟定義。

  1. from behave import *
  2. from cucumbers.basket import CucumberBasket
  3.  
  4. @given('the basket has "{initial:d}" cucumbers')
  5. def step_impl(context, initial):
  6. context.basket = CucumberBasket(initial_count=initial)
  7.  
  8. @when('"{some:d}" cucumbers are added to the basket')
  9. def step_impl(context, some):
  10. context.basket.add(some)
  11.  
  12. @then('the basket contains "{total:d}" cucumbers')
  13. def step_impl(context, total):
  14. assert context.basket.count == total

可以使用三個步驟匹配器parsecfparsere。默認的,也是最簡單的匹配器是 parse,如上例所示。注意如何解析參數化值并將其作為輸入參數傳遞給函數。一個常見的***實踐是在步驟中給參數加雙引號。

每個步驟定義函數還接收一個上下文變量,該變量保存當前正在運行的場景的數據,例如 featurescenariotags 字段。也可以添加自定義字段,用于在步驟之間共享數據。始終使用上下文來共享數據——永遠不要使用全局變量!

behave 框架還支持鉤子來處理 Gherkin 步驟之外的自動化問題。鉤子是一個將在步驟、場景、功能或整個測試套件之前或之后運行的功能。鉤子讓人聯想到面向方面的編程。它們應放在 features/ 目錄下的特殊 environment.py 文件中。鉤子函數也可以檢查當前場景的標簽,因此可以有選擇地應用邏輯。下面的示例顯示了如何使用鉤子為標記為 @web 的任何場景生成和銷毀一個 Selenium WebDriver 實例。

  1. from selenium import webdriver
  2.  
  3. def before_scenario(context, scenario):
  4. if 'web' in context.tags:
  5. context.browser = webdriver.Firefox()
  6. context.browser.implicitly_wait(10)
  7.  
  8. def after_scenario(context, scenario):
  9. if 'web' in context.tags:
  10. context.browser.quit()

注意:也可以使用 fixtures 進行構建和清理。

要了解一個 behave 項目應該是什么樣子,這里是示例項目的目錄結構:

任何 Python 包和自定義模塊都可以與 behave 框架一起使用。 使用良好的設計模式構建可擴展的測試自動化解決方案。步驟定義代碼應簡明扼要。

運行測試

要從命令行運行測試,請切換到項目的根目錄并運行 behave 命令。 使用 -help 選項查看所有可用選項。

以下是一些常見用例:

  1. # run all tests
  2. behave
  3.  
  4. # run the scenarios in a feature file
  5. behave features/web.feature
  6.  
  7. # run all tests that have the @duckduckgo tag
  8. behave --tags @duckduckgo
  9.  
  10. # run all tests that do not have the @unit tag
  11. behave --tags ~@unit
  12.  
  13. # run all tests that have @basket and either @add or @remove
  14. behave --tags @basket --tags @add,@remove

為方便起見,選項可以保存在 config 文件中。

其他選擇

behave 不是 Python 中唯一的 BDD 測試框架。其他好的框架包括:

  • pytest-bdd,是 pytest 的插件,和 behave 一樣,它使用 Gherkin 功能文件和步驟定義模塊,但它也利用了 pytest 的所有功能和插件。例如,它可以使用 pytest-xdist 并行運行 Gherkin 場景。 BDD 和非 BDD 測試也可以與相同的過濾器一起執行。pytest-bdd 還提供更靈活的目錄布局。
  • radish 是一個 “Gherkin 增強版”框架——它將場景循環和前提條件添加到標準的 Gherkin 語言中,這使得它對程序員更友好。它還像 behave 一樣提供了豐富的命令行選項。
  • lettuce 是一種較舊的 BDD 框架,與 behave 非常相似,在框架機制方面存在細微差別。然而,GitHub 最近顯示該項目的活動很少(截至2018 年 5 月)。

任何這些框架都是不錯的選擇。

另外,請記住,Python 測試框架可用于任何黑盒測試,即使對于非 Python 產品也是如此! BDD 框架非常適合 Web 和服務測試,因為它們的測試是聲明性的,而 Python 是一種很好的測試自動化語言。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-05-21 07:08:18

行為驅動開發BDD編碼

2024-05-28 09:49:42

Python對象函數

2018-07-05 08:35:11

Python開源工具云原生

2021-07-29 16:06:48

行為互聯網IoB互聯網

2022-04-26 16:56:20

行為數據數據

2011-08-04 10:18:45

數據驅動編程

2021-06-18 12:39:12

數據驅動設計設計師收集數據

2019-04-27 00:37:23

新華三

2021-01-15 13:21:02

PythonWeb開發機器學習

2023-12-29 12:02:44

Python?LEGBLocal

2014-03-27 15:01:50

算法C++

2022-07-12 11:17:54

人工智能首席信息官

2016-10-21 14:17:13

大數據技術大數據行為分析

2013-05-17 09:40:11

2020-06-18 12:32:12

微軟開發者Windows 10

2021-01-07 07:40:31

驅動微服務消息

2023-11-21 10:05:49

NAS磁盤硬盤

2021-08-31 16:26:30

基礎協作物聯網IOT

2021-03-20 22:46:22

IaaSSaaSPaaS

2020-06-01 09:54:54

數據驅動數字化CIO
點贊
收藏

51CTO技術棧公眾號

亚洲自拍高清视频网站| 久久韩国免费视频| 狠狠操精品视频| 婷婷在线视频观看| 懂色av一区二区在线播放| 97久久精品人搡人人玩| 懂色av蜜臀av粉嫩av永久| 97品白浆高清久久久久久| 色一情一乱一乱一91av| 日本天堂免费a| 二人午夜免费观看在线视频| 国产成人亚洲综合a∨婷婷| 2019av中文字幕| 国产一区二区播放| 最新亚洲精品| 精品国产99国产精品| 亚洲五月天综合| 51精品在线| 亚洲日穴在线视频| 日韩资源av在线| 蜜桃91麻豆精品一二三区| 日韩不卡一二三区| 97在线观看免费| 国产一二三四区| av在线不卡顿| 亚洲人在线观看| 9.1在线观看免费| 欧美成人aaa| 色综合激情久久| 奇米精品一区二区三区| 欧美69xxx| 国产欧美一区二区精品婷婷| 裸模一区二区三区免费| 国产综合在线播放| 捆绑变态av一区二区三区| 青青a在线精品免费观看| 国产精品成人国产乱| 亚洲a一区二区三区| 日韩最新中文字幕电影免费看| 老牛影视av老牛影视av| 久久av国产紧身裤| 亚洲国产一区二区三区在线观看 | 亚洲欧洲精品在线| 免费看男男www网站入口在线| av中文字幕一区| 国产精品国产精品| 成人精品在线播放| 国产美女精品人人做人人爽| 国产有码一区二区| 国产又粗又猛又爽又黄91| 久久精品国内一区二区三区| 国产精品专区第二| 亚洲一区二区色| 美女视频黄 久久| 国产美女久久精品| 国产精品久久婷婷| 国产久卡久卡久卡久卡视频精品| 国产日韩在线免费| 99草在线视频| 粉嫩av亚洲一区二区图片| 99久久综合狠狠综合久久止 | 欧美与亚洲与日本直播| 欧洲一区在线电影| 99热这里只有精品在线播放| 韩国理伦片久久电影网| 欧美二区三区91| 巨乳女教师的诱惑| 日本精品影院| 亚洲性无码av在线| 亚洲伦理一区二区三区| 国内精品99| 97在线观看免费高清| 中文字幕在线天堂| 精品一二线国产| 99久久伊人精品影院| 天堂成人在线| 国产精品日韩精品欧美在线| 最近免费观看高清韩国日本大全| 久草在线新免费首页资源站| 婷婷久久综合九色综合伊人色| 99999精品视频| 日韩国产大片| 亚洲国产精品中文| 亚洲精品乱码久久久久久久久久久久| 日韩精品免费一区二区在线观看 | 日韩黄色一级大片| 日韩在线一区二区| 97超碰人人看人人| 丝袜视频国产在线播放| 中文字幕不卡在线观看| 欧美日韩中文字幕在线播放| 自拍偷拍亚洲视频| 9191久久久久久久久久久| 国产又粗又猛又色| 日韩在线观看电影完整版高清免费悬疑悬疑 | 成年人在线视频| 亚洲男人的天堂在线观看| 日韩av三级在线| 成人av在线播放| 国产婷婷成人久久av免费高清 | 色狠狠色狠狠综合| 九九九久久久久久久| 天堂网av成人| 米奇精品一区二区三区在线观看| 日韩中文字幕在线观看视频| 国产在线精品不卡| 日本一区二区在线视频观看| 欧美日韩经典丝袜| 欧美久久久一区| 无码人妻精品一区二区三应用大全| 婷婷久久一区| 国产成人精品久久久| 亚洲成人中文字幕在线| 中国色在线观看另类| 伊人成色综合网| 亚洲精品一区二区三区在线| 中文字幕久久亚洲| 最近免费中文字幕大全免费版视频| 国产又黄又大久久| 五月天亚洲综合小说网| 免费福利视频一区二区三区| 精品国产免费人成在线观看| www青青草原| 精品一区二区日韩| 神马影院午夜我不卡| 在线天堂资源www在线污| 精品欧美一区二区在线观看| 精品国产视频在线观看| 老司机免费视频一区二区三区| 欧美二区在线| 日本在线啊啊| 亚洲国产精品一区二区久| 久久综合精品一区| 久久激情视频久久| 色综合久久六月婷婷中文字幕| 91在线观看地址| 色婷婷av一区二区| 日韩免费毛片视频| 欧美电影院免费观看| 日韩有码片在线观看| 免费黄色片视频| 久久久91精品国产一区二区三区| 久色视频在线播放| 日韩成人一级| 欧美在线影院在线视频| 三级毛片在线免费看| 精品美女永久免费视频| 91丝袜在线观看| 在线视频亚洲| 久久久com| 第84页国产精品| 亚洲欧美日韩国产中文专区| 在线免费黄色av| 国产午夜精品一区二区三区视频| 妺妺窝人体色www在线观看| 激情婷婷综合| 国产日韩av高清| 在线观看电影av| 亚洲国产精品网站| 青青视频在线免费观看| 欧美高清在线视频| 午夜影院免费观看视频| 国产精品99免费看| 美日韩免费视频| 影音成人av| 萌白酱国产一区二区| 欧美一级特黄aaaaaa| 高跟丝袜一区二区三区| 欧美另类z0zx974| 精品夜夜嗨av一区二区三区| 精品人妻大屁股白浆无码| 猫咪成人在线观看| 国产精品第七十二页| 黄色免费网站在线观看| 精品免费视频.| 日本视频在线观看免费| 国产精品久久免费看| 稀缺呦国内精品呦| 日韩精品福利网| 麻豆md0077饥渴少妇| 国产欧美三级电影| 国产成人精品视| 1stkiss在线漫画| 亚洲精品国产欧美| 亚洲天堂中文字幕在线| 亚洲一区二区影院| 天天躁夜夜躁狠狠是什么心态| 精品一区二区三区蜜桃| 日本日本19xxxⅹhd乱影响| 色综合狠狠操| 精品欧美国产| 精品一区视频| 国产精品白丝jk喷水视频一区| 污污视频在线| 一区二区三区在线播放欧美| 丰满肥臀噗嗤啊x99av| 欧洲精品久久久久毛片完整版| 一本大道久久a久久精品综合| 男人在线观看视频| 久久只精品国产| 一个人看的视频www| 日韩激情一二三区| 人妻av中文系列| 欧美1级日本1级| 天天综合色天天综合色hd| 国产suv精品一区二区四区视频| 国产成人+综合亚洲+天堂| 丁香花高清在线观看完整版| 最近2019年日本中文免费字幕| 男人天堂av网| 91麻豆精品91久久久久久清纯| 男人天堂视频在线| 欧美日韩国产精品一区二区不卡中文| www深夜成人a√在线| 久久久91精品国产一区二区精品| 绯色av蜜臀vs少妇| 激情综合一区二区三区| 黄在线观看网站| 亚洲久久视频| 精品国产一区二区三区无码| 98精品视频| 一区二区三区免费看| 国内精品久久久久久久久电影网 | 在线免费一区二区| 性久久久久久久久久久久| 日韩激情综合网| 国产精品欧美极品| 色一情一交一乱一区二区三区 | 久久av一区二区三区亚洲| 日韩av综合| 91精品久久久久久蜜桃| 亚洲男男av| 91久久在线播放| 久久久久久爱| 亚洲在线www| 精品一区二区三区免费看| 91久久精品美女| 国产一区一区| 亚洲一区二区三区sesese| 成人51免费| 91天堂在线观看| 日本少妇精品亚洲第一区| 亚洲最大福利视频网| 精品国产亚洲一区二区三区| 91热福利电影| 亚洲国产高清在线观看| 亚洲伊人一本大道中文字幕| 韩国一区二区三区视频| 91国产在线免费观看| 在这里有精品| 国产一区二区黄色| 欧美激情极品| 快播日韩欧美| 大片网站久久| 中文字幕乱码一区二区三区| 亚洲精品一区二区妖精| 激情视频小说图片| 影音先锋久久资源网| 欧美 日本 亚洲| 日韩av一区二| 天堂av手机在线| 成人免费毛片高清视频| 中国av免费看| 国产欧美精品一区aⅴ影院 | 欧美丝袜第三区| 国产免费av观看| 亚洲成av人片在线观看香蕉| 视频一区二区三区在线看免费看 | 久久99精品久久久久久三级| 亚洲精品动态| 一区二区三区久久网| 欧美先锋影音| 欧美伦理片在线看| 国产在线精品视频| 国产精品边吃奶边做爽| 中文成人综合网| 午夜偷拍福利视频| 欧美体内she精视频| 国产成人a人亚洲精品无码| 亚洲精美色品网站| 在线激情网站| 欧美精品成人91久久久久久久| 欧美一级大黄| 亚洲伊人一本大道中文字幕| 妖精视频一区二区三区| 2021狠狠干| 麻豆久久婷婷| 三上悠亚 电影| 国产亚洲综合在线| 精品无码人妻一区二区三区| 在线亚洲免费视频| 亚洲免费成人在线| 伊人青青综合网站| av午夜在线观看| 国产日韩欧美综合| 欧美日韩导航| 狠狠精品干练久久久无码中文字幕 | 欧美激情2020午夜免费观看| 亚洲www.| 国产在线视频欧美一区二区三区| 国产精品免费大片| 激情五月婷婷六月| 九九久久精品视频| www.色天使| 亚洲成av人片www| 国产精品伦理一区| 中文字幕精品视频| 乡村艳史在线观看| 国产精品xxxx| 久久久五月天| 欧美在线aaa| 久久精品视频在线免费观看| 久久久久99精品久久久久| 欧美r级在线| 国产精品成人一区| 欧美在线导航| 国产aaa免费视频| 国产做a爰片久久毛片| 丁香激情五月少妇| 色综合久久88色综合天天6| 狠狠人妻久久久久久综合麻豆| 日韩亚洲综合在线| 精品成人免费一区二区在线播放| 国产日韩精品久久| 欧美三级免费| www激情五月| 国产精品久久久久久久久晋中| 日韩免费av网站| 亚洲精品网站在线播放gif| 爱啪啪综合导航| 国产精品视频免费一区二区三区| 欧美成人午夜| 国产老头和老头xxxx×| 亚洲精品日韩综合观看成人91| 97国产精品久久久| www.午夜精品| 91麻豆精品一二三区在线| 亚洲日本一区二区三区在线不卡| 日韩黄色免费电影| 亚洲а∨天堂久久精品2021| 91精品福利视频| 国产尤物视频在线| 国产精品久久久999| 欧美精品乱码| 色戒在线免费观看| 国产精品久久久久久一区二区三区| 成人一级免费视频| 中文字幕在线观看日韩| 精品176极品一区| 中文字幕日韩一区二区三区不卡| 捆绑变态av一区二区三区| 开心激情五月网| 欧美一区二区三区四区久久 | 亚洲精品视频免费观看| 精品人妻无码一区二区| 久久久久久久av| 欧美三级电影在线| 欧在线一二三四区| 中文一区一区三区高中清不卡| 一级片一区二区三区| 不卡毛片在线看| 成人av婷婷| 大肉大捧一进一出好爽动态图| 亚洲国产精品t66y| 国产麻豆免费观看| 久久男人av资源网站| 色爱综合av| 亚洲老女人av| 一区二区国产视频| 四虎精品在永久在线观看| 国产精品久久久亚洲| 亚洲综合色网| 青青草成人免费视频| 色狠狠色狠狠综合| 直接在线观看的三级网址| 韩国成人动漫在线观看| 日本不卡一区二区| 免费视频一二三区| 亚洲欧美激情一区| av在线播放一区二区| 欧美日韩黄色一级片| 国产精品毛片大码女人| 丰满岳乱妇国产精品一区| 国产成人短视频| 欧美永久精品| 国产色视频一区二区三区qq号| 欧美日韩国产bt| 成人ssswww在线播放| 亚洲综合五月天| av一本久道久久综合久久鬼色| 亚洲 小说区 图片区| 久久久久久久久久亚洲| 日韩精品永久网址| 一边摸一边做爽的视频17国产| 欧美亚洲精品一区| 97人澡人人添人人爽欧美| 杨幂一区欧美专区| 91亚洲精华国产精华精华液| 国产乱码久久久久| 国产精品6699|