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

前端自動化測試:Jest 測試框架應用

開發 前端 自動化
作為一個面向前端的測試框架, Jest 可以利用其特有的快照測試功能,通過比對UI 代碼生成的快照文件,實現對 React 等常見前端框架的自動測試。

[[407449]]

Jest : https://jestjs.io/zh-Hans/是 Facebook 出品的一個 JavaScript 開源測試框架。

相對其他測試框架,其一大特點就是就是內置了常用的測試工具,比如零配置、自帶斷言、測試覆蓋率工具等功能,實現了開箱即用。

Jest 適用但不局限于使用以下技術的項目:Babel、TypeScript、 Node、 React、Angular、Vue 等。

Jest 主要特點:

  • 零配置
  • 自帶斷言
  • 作為一個面向前端的測試框架, Jest 可以利用其特有的快照測試功能,通過比對UI 代碼生成的快照文件,實現對 React 等常見前端框架的自動測試。
  • Jest 的測試用例是并行執行的,而且只執行發生改變的文件所對應的測試,提升了測試速度。
  • 測試覆蓋率
  • Mock 模擬

快速體驗 Jest

安裝 Jest 到項目中:

  1. npm install --save-dev jest 
  1. //math.js 
  2. functionadd (a, b) { 
  3.   return a * b 
  4.  
  5. functionsubtract (x, y) { 
  6.   return x - y 
  7.  
  8. module.exports= { 
  9.   add
  10.   subtract 
  1. //test.js ==> math.test.js 
  2. const { add, subtract } =require('./math'
  3.  
  4. test('測試加法', () => { 
  5.   expect(add(1,2)).toBe(3) 
  6. }) 
  7.  
  8. test('測試減法', () => { 
  9.   expect(subtract(2,1)).toBe(1) 
  10. }) 
  1. //package.json 
  2.   "scripts":{ 
  3.     "test":"jest" 
  4.   } 

jest 命令會運行項目中所有以 .test.js 結尾的文件

最后運行測試命令:

  1. npm run test 

解析:

  • jest 找到項目中所有以 .test.js 結尾的文件并運行
  • jest 會給測試文件提供 test、expect 等全局函數,所以在測試文件中可以直接使用
  • jest 為測試結果提供了良好的日志輸出

解決 vscode 中 jest 代碼提示問題

  1. npm i -D @types/jest 

注意:@types/jest 必須安裝到項目的根目錄,并且以根目錄的方式在 vscode 中打開,否則不生效。或者說只要是 vscode 打開的項目根目錄有 @types/jest 這個包就可以了。

配置文件

  1. npx jest--init 

配置文件生成選項:

  • 是否使用 ts ;
  • 使用哪種測試環境;
  • 使用 jest 收集測試覆蓋率報告;
  • 使用那種引擎檢測覆蓋率:v8 處于實驗性階段,建議 Node v14 后使用,babel 較為成熟
  • 每次測試時,是否自動清除 mock 實例;

詳細配置信息參考:https://jestjs.io/docs/zh-Hans/configuration。

  1. //jest.config.js 
  2. /* 
  3.  * For a detailedexplanation regarding each configuration property, visit: 
  4.  *https://jestjs.io/docs/en/configuration.html 
  5.  */ 
  6.  
  7. module.exports= { 
  8.   // 自動 mock 所有導入的外部模塊 
  9.   // automock: false
  10.  
  11.   // 在指定次數失敗后停止運行測試 
  12.   // bail: 0, 
  13.  
  14.   // The directory where Jest should store its cached dependencyinformation 
  15.   // cacheDirectory:"/private/var/folders/5h/_98rffpj1z95b_0dm76lvzm40000gn/T/jest_dx"
  16.  
  17.   // 在每個測試之間自動清除 mock 調用和實例 
  18.   clearMocks:true
  19.  
  20.   // 是否收集測試覆蓋率信息 
  21.   // collectCoverage: false
  22.  
  23.   // 一個 glob 模式數組,指示應該為其收集覆蓋率信息的一組文件 
  24.   // collectCoverageFrom: undefined, 
  25.  
  26.   // 測試覆蓋率報錯文件輸出的目錄 
  27.   coverageDirectory:"coverage"
  28.  
  29.   // 忽略測試覆蓋率統計 
  30.   // coveragePathIgnorePatterns: [ 
  31.   //  "/node_modules/" 
  32.   // ], 
  33.  
  34.   // 指示應該使用哪個提供程序檢測代碼的覆蓋率,默認是 babel,可選 v8,但是 v8 不太穩定,建議Node 14 以上版本使用 
  35.   // coverageProvider: "babel"
  36.  
  37.   // A list of reporter names that Jest uses when writingcoverage reports 
  38.   // coverageReporters: [ 
  39.   //   "json"
  40.   //   "text"
  41.   //   "lcov"
  42.   //   "clover" 
  43.   // ], 
  44.  
  45.   // An object that configures minimum threshold enforcement forcoverage results 
  46.   // coverageThreshold: undefined, 
  47.  
  48.   // A path to a custom dependency extractor 
  49.   // dependencyExtractor: undefined, 
  50.  
  51.   // Make calling deprecated APIs throw helpful error messages 
  52.   // errorOnDeprecated: false
  53.  
  54.   // Force coverage collection from ignored files using an arrayof glob patterns 
  55.   // forceCoverageMatch: [], 
  56.  
  57.   // A path to a module which exports an async function that istriggered once before all test suites 
  58.   // globalSetup: undefined, 
  59.  
  60.   // A path to a module which exports an async function that istriggered once after all test suites 
  61.   // globalTeardown: undefined, 
  62.  
  63.   // A set of global variables that need to be available in alltest environments 
  64.   // globals: {}, 
  65.  
  66.   // The maximum amount of workers used to run your tests. Canbe specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPUamount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2workers. 
  67.   // maxWorkers: "50%"
  68.  
  69.   // An array of directory names to be searched recursively upfrom the requiring module's location 
  70.   // moduleDirectories: [ 
  71.   //  "node_modules" 
  72.   // ], 
  73.  
  74.   // An array of file extensions your modules use 
  75.   // moduleFileExtensions: [ 
  76.   //   "js"
  77.   //   "json"
  78.   //   "jsx"
  79.   //   "ts"
  80.   //   "tsx"
  81.   //   "node" 
  82.   // ], 
  83.  
  84.   // A map from regular expressions to module names or to arraysof module names that allow to stub out resources with a single module 
  85.   // moduleNameMapper: {}, 
  86.  
  87.   // An array of regexp pattern strings, matched against allmodule paths before considered 'visible' to the module loader 
  88.   // modulePathIgnorePatterns: [], 
  89.  
  90.   // Activates notifications for test results 
  91.   // notify: false
  92.  
  93.   // An enum that specifies notification mode. Requires {notify: true } 
  94.   // notifyMode: "failure-change"
  95.  
  96.   // A preset that is used as a base for Jest's configuration 
  97.   // preset: undefined, 
  98.  
  99.   // Run tests from one or more projects 
  100.   // projects: undefined, 
  101.  
  102.   // Use this configuration option to add custom reporters toJest 
  103.   // reporters: undefined, 
  104.  
  105.   // Automatically reset mock state between every test 
  106.   // resetMocks: false
  107.  
  108.   // Reset the module registry before running each individualtest 
  109.   // resetModules: false
  110.  
  111.   // A path to a custom resolver 
  112.   // resolver: undefined, 
  113.  
  114.   // Automatically restore mock state between every test 
  115.   // restoreMocks: false
  116.  
  117.   // The root directory that Jest should scan for tests andmodules within 
  118.   // rootDir: undefined, 
  119.  
  120.   // A list of paths to directories that Jest should use tosearch for files in 
  121.   // roots: [ 
  122.   //  "<rootDir>" 
  123.   // ], 
  124.  
  125.   // Allows you to use a custom runner instead of Jest's defaulttest runner 
  126.   // runner: "jest-runner"
  127.  
  128.   // The paths to modules that run some code to configure or setup the testing environment before each test 
  129.   // setupFiles: [], 
  130.  
  131.   // A list of paths to modules that run some code to configureor set up the testing framework before each test 
  132.   // setupFilesAfterEnv: [], 
  133.  
  134.   // The number of seconds after which a test is considered asslow and reported as such in the results. 
  135.   // slowTestThreshold: 5, 
  136.  
  137.   // A list of paths to snapshot serializer modules Jest shoulduse for snapshot testing 
  138.   // snapshotSerializers: [], 
  139.  
  140.   // The test environment that will be used for testing 
  141.   // testEnvironment: "jest-environment-jsdom"
  142.  
  143.   // Options that will be passed to the testEnvironment 
  144.   // testEnvironmentOptions: {}, 
  145.  
  146.   // Adds a location field to test results 
  147.   // testLocationInResults: false
  148.  
  149.   // The glob patterns Jest uses to detect test files 
  150.   // testMatch: [ 
  151.   //  "**/__tests__/**/*.[jt]s?(x)"
  152.   //  "**/?(*.)+(spec|test).[tj]s?(x)" 
  153.   // ], 
  154.  
  155.   // An array of regexp pattern strings that are matched againstall test paths, matched tests are skipped 
  156.   // testPathIgnorePatterns: [ 
  157.   //  "/node_modules/" 
  158.   // ], 
  159.  
  160.   // The regexp pattern or array of patterns that Jest uses todetect test files 
  161.   // testRegex: [], 
  162.  
  163.   // This option allows the use of a custom results processor 
  164.   // testResultsProcessor: undefined, 
  165.  
  166.   // This option allows use of a custom test runner 
  167.   // testRunner: "jasmine2"
  168.  
  169.   // This option sets the URL for the jsdom environment. It isreflected in properties such as location.href 
  170.   // testURL: "http://localhost"
  171.  
  172.   // Setting this value to "fake" allows the use offake timers for functions such as "setTimeout" 
  173.   // timers: "real"
  174.  
  175.   // A map from regular expressions to paths to transformers 
  176.   // transform: undefined, 
  177.  
  178.   // An array of regexp pattern strings that are matched againstall source file paths, matched files will skip transformation 
  179.   // transformIgnorePatterns: [ 
  180.   //  "/node_modules/"
  181.   //  "\\.pnp\\.[^\\/]+$" 
  182.   // ], 
  183.  
  184.   // An array of regexp pattern strings that are matched againstall modules before the module loader will automatically return a mock for them 
  185.   // unmockedModulePathPatterns: undefined, 
  186.  
  187.   // Indicates whether each individual test should be reportedduring the run 
  188.   // verbose: undefined, 
  189.  
  190.   // An array of regexp patterns that are matched against allsource file paths before re-running tests in watch mode 
  191.   // watchPathIgnorePatterns: [], 
  192.  
  193.   // Whether to use watchman for file crawling 
  194.   // watchman: true
  195. }; 

Jest CLI Options

參考:https://jestjs.io/zh-Hans/docs/cli

指定測試文件運行

  1. "scripts":{ 
  2.    "test":"jest ./math.test.js" 
  3.  }, 

Jest 監視模式

--watchAll 選項:監視文件的更改并在任何更改時重新運行所有測試。

  1. "scripts": { 
  2.   "test""jest --watchAll" 
  3.  }, 

Jest API

在測試文件中,Jest 將所有這些方法和對象放入全局環境中。無需要求或導入任何內容即可使用它們。但是,如果喜歡顯式導入,則可以:

  1. import { describe, expect, test } from'@jest/globals' 

Test 函數

test 函數別名:it(name, fn, timeout)。

  • test(name,fn, timeout)
  • test.concurrent(name, fn, timeout)
  • test.concurrent.each(table)(name, fn, timeout)
  • test.concurrent.only.each(table)(name, fn)
  • test.concurrent.skip.each(table)(name, fn)
  • test.each(table)(name, fn, timeout)
  • test.only(name, fn, timeout)

只運行當前測試用例

  • test.only.each(table)(name, fn)
  • test.skip(name,fn)
  • test.skip.each(table)(name, fn)
  • test.todo(name)

創建 global-api.test.js 測試文件,注意,測試文件中必須有一個測試用例,如果沒有則直接報錯。

  1. test('should ', () => { 
  2.   console.log('test--api'
  3. }) 
  1. test('should ', () => { 
  2.   console.log('test--api'
  3. }) 
  4. test('should1 ', () => { 
  5.   console.log('test--api1'
  6. }) 
  7.  
  8. // 上面兩個不運行 
  9. test.only('should2 ', () => { 
  10.   console.log('test--api2'
  11. }) 

Expect 匹配器

在編寫測試時,通常需要檢查值是否滿足某些條件。Expect 讓我們可以訪問許多“匹配器”,以驗證不同的內容。

  1. test('two plus two is four', () => { 
  2.   expect(2+2).toBe(6) 
  3.   expect({ name:'jack' }).toEqual({ name:'jack' }) 
  4.   expect('Christoph').toMatch(/stop/) 
  5.   expect(4).toBeGreaterThan(3) 
  6.   expect(4).toBeLessThan(5) 
  7. }) 

完整的匹配器列表查看:https://jestjs.io/zh-Hans/docs/expect

describe 函數

describe 創建一個將幾個相關測試組合在一起的塊。

  1. const myBeverage = { 
  2.   delicious:true
  3.   sour:false
  4. }; 
  5.  
  6. describe('my beverage', () => { 
  7.   test('is delicious', () => { 
  8.     expect(myBeverage.delicious).toBeTruthy(); 
  9.   }); 
  10.  
  11.   test('is not sour', () => { 
  12.     expect(myBeverage.sour).toBeFalsy(); 
  13.   }); 
  14. }); 

分組最直觀的就是在測試提示中,有更加友好的信息輸出。

  • describe(name,fn)
  • describe.each(table)(name, fn, timeout)
  • describe.only(name,fn)
  • describe.only.each(table)(name, fn)
  • describe.skip(name,fn)
  • describe.skip.each(table)(name, fn)

 

責任編輯:姜華 來源: 勾勾的前端世界
相關推薦

2023-05-18 14:01:00

前端自動化測試

2021-06-30 19:48:21

前端自動化測試Vue 應用

2021-06-25 10:57:30

前端自動化測試開發

2009-08-19 09:00:48

單元測試框架自動化測試

2017-12-24 21:00:10

自動化測試測試框架敏捷

2022-09-14 10:00:12

前端自動化測試

2011-04-18 12:52:37

自動化測試功能測試軟件測試

2016-09-26 16:42:19

JavaScript前端單元測試

2023-10-12 07:40:54

Minium自動化框架

2020-09-14 07:00:00

測試自動化框架

2020-04-28 09:00:00

測試測試自動化

2011-06-03 17:06:09

自動化測試

2019-04-18 09:00:00

Java自動化測試框架

2011-12-23 17:09:57

自動化測試

2023-11-08 13:18:00

JestJavaScript框架

2012-12-24 22:54:31

2014-04-16 14:15:01

QCon2014

2010-09-08 15:25:09

自動化測試技術網站鏈接測試

2011-08-16 15:36:47

iPhone應用測試

2021-07-02 17:22:50

前端TDDBDD
點贊
收藏

51CTO技術棧公眾號

bl在线肉h视频大尺度| 99久久99久久久精品棕色圆| 国产一区二区三区不卡视频网站 | 久久久久久久久久网站| 51vv免费精品视频一区二区| 精品女厕一区二区三区| 一区一区视频| 无码精品人妻一区二区| 六月婷婷色综合| 久久久伊人日本| 日韩精品电影一区二区三区| 91成人福利| 欧美日韩国产首页| 亚洲自偷自拍熟女另类| 乱人伦中文视频在线| 99re热这里只有精品免费视频| 国产精品成av人在线视午夜片| 深夜福利影院在线观看| 成人免费在线观看av| 精品国产3级a| 制服丝袜中文字幕第一页| 麻豆免费版在线观看| 综合激情成人伊人| 日本精品一区二区三区高清 久久| 精品久久久久中文慕人妻| 久久精品首页| 久久久亚洲网站| 国产少妇在线观看| 欧美一级精品| 亚洲欧洲日产国码av系列天堂| 91蝌蚪视频在线| 国产精品伦一区二区| 精品久久久久久中文字幕大豆网| 免费观看国产视频在线| caoporn国产精品免费视频| 99久久久免费精品国产一区二区| 91网站在线看| 伊人精品一区二区三区| 久久一综合视频| 57pao精品| 日韩精品久久久久久久酒店| 国内综合精品午夜久久资源| 欧美成人激情视频| 在线看的片片片免费| 奇米影视亚洲| 色小说视频一区| 国产极品视频在线观看| 日本不卡高清| 在线观看欧美成人| 中字幕一区二区三区乱码| 亚洲国产国产| 亚洲色图狂野欧美| 国精产品一区一区三区免费视频 | 日韩三区在线观看| 永久免费黄色片| 精品视频一区二区三区在线观看| 欧美美女一区二区在线观看| 91极品视频在线观看| 97欧美成人| 欧美日韩国产三级| 欧美性受xxxxxx黑人xyx性爽| 日韩福利影视| 日韩一区二区电影在线| avtt中文字幕| 嗯用力啊快一点好舒服小柔久久| 精品日韩欧美在线| 久久久午夜精品福利内容| 任你弄精品视频免费观看| 精品调教chinesegay| 国精产品一区二区三区| 日韩中文在线电影| 日韩一区二区欧美| 69av视频在线| 欧美日本一区二区视频在线观看 | 99久久这里有精品| 91精品久久久久久久久99蜜臂| 午夜视频在线免费看| 另类春色校园亚洲| 亚洲一二三在线| 成年人网站在线观看视频| 欧美大片专区| 77777亚洲午夜久久多人| 无码任你躁久久久久久久| 麻豆视频一区二区| 国产成人av一区二区三区| 水莓100在线视频| 国产精品三级视频| 免费网站在线观看视频| 新片速递亚洲合集欧美合集| 欧美嫩在线观看| 亚洲美女在线播放| 欧美日韩国产在线观看网站| 欧美老妇交乱视频| 久久久久在线视频| 国产精品亚洲第一区在线暖暖韩国 | 亚洲欧美日韩精品久久亚洲区 | 亚洲综合图片区| 亚洲熟妇av一区二区三区| 日韩一区二区三区四区五区| 亚洲第一福利网| 5566中文字幕| 久久不射中文字幕| 成人av免费电影| 成人在线免费公开观看视频| 亚洲香肠在线观看| 黑森林精品导航| 国产伦精品一区二区三区免费优势 | 亚洲成人日韩| 国产91色在线播放| 成人久久精品人妻一区二区三区| 国产午夜精品在线观看| 精品无码国产一区二区三区av| 福利视频一区| 亚洲精品中文字幕女同| 青青青在线视频| 美国av一区二区| 日本高清久久一区二区三区| 国产精品蜜芽在线观看| 日韩欧美资源站| 在线观看日本黄色| 久久午夜激情| 精品蜜桃一区二区三区| 最近中文字幕免费mv2018在线| 色老汉av一区二区三区| 中文字幕a在线观看| 亚洲五月综合| 国产日韩在线视频| 国产福利片在线| 色综合久久中文综合久久牛| 国产黑丝在线观看| 欧美91福利在线观看| 国产一区二区丝袜| 岛国大片在线观看| 日韩欧美极品在线观看| 在线观看国产免费视频| 一区在线视频观看| 成人在线视频网址| 污污网站在线看| 欧美一区二区福利在线| 黄色录像免费观看| 99精品在线视频观看| 国产99久久久精品| 国产又粗又爽又黄的视频| 日本一区二区三区中文字幕| 国产亚洲精品久久久久动| 激情视频网站在线观看| 91丨porny丨在线| 鲁一鲁一鲁一鲁一色| 国产精品久久久网站| 久久久久国产精品一区| 亚洲精品一区二区口爆| 亚洲国产欧美在线| 中文字幕18页| 尹人成人综合网| 国产综合动作在线观看| 欧美男人天堂| 亚洲奶大毛多的老太婆| 久久久久久久亚洲| 中文字幕第一区| 午夜精品久久久久久久99热影院| 天天综合精品| dy888夜精品国产专区| 久草在线资源站资源站| 亚洲成人激情视频| 日本一区二区三区精品| 久久综合狠狠综合| 亚洲天堂av线| 综合在线视频| 国产女人水真多18毛片18精品| 在线观看网站免费入口在线观看国内 | 女人18毛片一区二区三区| 亚洲成人av中文| 国产色视频一区二区三区qq号| 日韩精彩视频在线观看| 中文视频一区视频二区视频三区| 欧美一级片网址| 97视频网站入口| 97电影在线看视频| 欧美一区二区在线观看| 日韩污视频在线观看| 国产午夜亚洲精品理论片色戒| 校园春色 亚洲色图| 亚洲精品国产首次亮相| 精选一区二区三区四区五区| 主播大秀视频在线观看一区二区| 久久精品色欧美aⅴ一区二区| 黄色美女一级片| 在线观看av不卡| 一级黄色录像视频| 91理论电影在线观看| av免费一区二区| 日韩一级不卡| 影音先锋亚洲视频| 老司机在线精品视频| 成人激情电影一区二区| 在线视频超级| 久久手机免费视频| 免费观看成年在线视频网站| 欧美一区二区啪啪| 福利网址在线观看| 亚洲色图在线播放| 亚洲做受高潮无遮挡| 国产美女娇喘av呻吟久久| 亚洲国产精品久久久久婷蜜芽| 久久国产精品亚洲人一区二区三区| 国产精品久久久久久久小唯西川 | 国产丝袜不卡| 国产亚洲欧美日韩精品一区二区三区 | 白嫩亚洲一区二区三区| 5252色成人免费视频| a级影片在线| 国产一区二区三区三区在线观看 | 久久久久国产精品免费免费搜索| 国产农村妇女精品久久| 日本伊人午夜精品| 国产美女网站在线观看| 欧美a级一区| 亚洲欧洲日夜超级视频| 国产亚洲一区二区三区不卡| 高清免费日韩| 国产精品白丝久久av网站| 国产精品丝袜视频| 高清av不卡| 77777少妇光屁股久久一区| 9lporm自拍视频区在线| 不卡av在线播放| 免费a在线看| 永久免费毛片在线播放不卡| 视频三区在线观看| 亚洲第一网站免费视频| 亚洲精品视频91| 欧美一区二区三区电影| 亚洲天堂2021av| 欧美性感一类影片在线播放| 无码人妻精品一区二区蜜桃色欲 | aaa毛片在线观看| 一道本一区二区| 少妇人妻无码专区视频| 亚洲美女少妇无套啪啪呻吟| 18黄暴禁片在线观看| 国产综合自拍| 日本人妻伦在线中文字幕| 欧美体内she精视频在线观看| 美女黄色片网站| 欧美精品97| 日本黄大片在线观看| 一区二区三区四区在线观看国产日韩 | 婷婷丁香一区二区三区| 亚洲黄色www网站| 天堂在线视频免费观看| 亚洲电影在线观看| 少妇人妻偷人精品一区二区 | 成人午夜在线影院| 99tv成人影院| 99re资源| 免费观看成人www动漫视频| 九九99久久| 欧洲美女日日| 伊人久久婷婷色综合98网| 婷婷伊人综合| www污在线观看| 国产农村妇女毛片精品久久莱园子| 男人日女人bb视频| 美女mm1313爽爽久久久蜜臀| www.成年人| 高清国产一区二区三区| 国产精品久久AV无码| 国产亚洲一区二区在线观看| 黄色三级生活片| 亚洲免费资源在线播放| 国产无码精品在线播放| 欧美性20hd另类| 亚洲最大成人av| 精品国产免费久久 | 久久网福利资源网站| 日本动漫理论片在线观看网站| 97国产精品免费视频| 欧美人与性动交xxⅹxx| 成人黄色免费网站在线观看| 99re6热只有精品免费观看| 开心色怡人综合网站| 久久影视一区| 精品久久一二三| 久久国产精品99久久久久久老狼 | 久久不见久久见中文字幕免费| 一区二区国产日产| 精品91在线| 韩国视频一区二区三区| 国产69精品久久久久毛片 | 天天干天天爽天天操| 最近2019年手机中文字幕| 久久青青色综合| 国产欧美在线看| 天堂综合网久久| 中国黄色录像片| 丝袜诱惑亚洲看片| 日本一二三四区视频| 国产丝袜美腿一区二区三区| 久草视频免费在线播放| 欧美性受极品xxxx喷水| 日韩一级片免费看| 久久香蕉国产线看观看网| 小草在线视频免费播放| 91网站在线免费观看| 欧美三级情趣内衣| 91精品国产91久久久久麻豆 主演| 免费的国产精品| 人妻体内射精一区二区| 一区二区三区在线观看国产| 最新中文字幕在线观看视频| 精品sm捆绑视频| 伦xxxx在线| 国产精品日韩在线一区| 日韩丝袜视频| 日本a在线免费观看| 国内精品伊人久久久久av一坑 | 国产探花在线观看视频| 欧美激情综合网| 欧美特黄aaaaaa| 精品成人一区二区三区四区| 成人看av片| 国产剧情久久久久久| 精品国产乱码久久久| 欧美日韩二三区| a在线欧美一区| 国产精品第二十页| 欧美成人免费网站| www久久日com| 91影视免费在线观看| 99久久国产综合精品成人影院| 妓院一钑片免看黄大片| 久久久五月婷婷| 综合网在线观看| 日韩精品在线播放| 黄色在线网站噜噜噜| 国产区二精品视| 亚洲激情另类| 日本69式三人交| 精品免费在线观看| 先锋av资源站| 欧美亚洲视频一区二区| 欧美人妖视频| 欧美黄色免费影院| 国产夜色精品一区二区av| 无码人妻丰满熟妇精品| 国产一区二区三区欧美| 99九九久久| 亚洲综合首页| 精彩视频一区二区| 娇小11一12╳yⅹ╳毛片| 欧美人伦禁忌dvd放荡欲情| 素人av在线| 亚洲va电影大全| 欧美日韩精品| 国产一级伦理片| 色综合天天天天做夜夜夜夜做| 精品久久av| 国产乱肥老妇国产一区二| 亚洲国产精品成人| 韩国av中国字幕| 香蕉加勒比综合久久| 男女网站在线观看| 国产精品热视频| 自拍偷拍欧美| 亚洲图片综合网| 日本黄色一区二区| 米奇777四色精品人人爽| 91九色蝌蚪成人| 在线综合亚洲| 夜夜春很很躁夜夜躁| 91精品久久久久久久99蜜桃| 波多野在线观看| 日韩福利在线| 国产一区二区免费在线| 日韩黄色一级大片| 国产亚洲精品久久久优势| 91精品麻豆| 水蜜桃色314在线观看| 国产喂奶挤奶一区二区三区| 一区二区三区精彩视频| 久久久亚洲国产天美传媒修理工| 视频精品在线观看| 夜夜爽久久精品91| 黑人巨大精品欧美一区二区三区| jizzjizz在线观看| 高清日韩一区| 日日骚欧美日韩| 麻豆changesxxx国产| 亚洲片在线观看| 91精品久久久久久综合五月天| 50路60路老熟妇啪啪| 亚洲欧美日韩电影| 免费动漫网站在线观看| 91嫩草在线| 免费在线观看一区二区三区| 亚洲国产精一区二区三区性色| 中文字幕日韩欧美精品在线观看| 91午夜精品| 亚洲高清在线不卡| 日本韩国欧美一区二区三区|