3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

node mocha_使用Mocha和Chai测试Node RESTful API

發布時間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 node mocha_使用Mocha和Chai测试Node RESTful API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

node mocha

介紹 ( Introduction )

I still remember the satisfaction of being finally able to write the backend part of a bigger app in node and I am sure many of you do it too.

我仍然記得能夠最終在節點中編寫更大的應用程序的后端部分感到滿意??,并且我相信你們中的許多人也可以這樣做。

And then? We need to make sure our app behaves the way we expect and one of the strongly suggested methodologies is software testing. Software testing is crazily useful whenever a new feature is added to the system: Having the test environment already set up which can be run with a single command helps to figure out whether a new feature introduces new bugs.

然后? 我們需要確保我們的應用按照預期的方式運行,強烈建議的方法之一是軟件測試。 每當將新功能添加到系統時,軟件測試就非常有用:已經設置了可以通過單個命令運行的測試環境,有助于弄清新功能是否引入了新的錯誤。

In the past, we've worked on building a RESTful Node API and authenticating a Node API.

過去,我們一直在努力構建RESTful Node API和對Node API進行身份驗證 。

In this tutorial we are going to write a simple RESTful API with Node.js and use Mocha and Chai to write tests against it. We will test CRUD operations on a bookstore.

在本教程中,我們將使用Node.js編寫一個簡單的RESTful API,并使用Mocha和Chai對其進行測試。 我們將在書店中測試CRUD操作。

As usual you can build the app step-by-step throughout the tutorial or directly get it on github.

像往常一樣,您可以在整個教程中逐步構建應用程序,也可以直接在github上獲取它。

摩卡:測試環境 ( Mocha: Testing Environment )

Mocha is a javascript framework for Node.js which allows Asynchronous testing. Let's say it provides the environment in which we can use our favorite assertion libraries to test the code.

Mocha是用于Node.jsJavaScript框架,該框架允許異步測試。 假設它提供了一個環境,我們可以在其中使用我們喜歡的斷言庫來測試代碼。

.

Mocha comes with tons of great features, the website shows a long list but here are the ones I like the most:

摩卡(Mocha)具有許多強大的功能,該網站顯示了很長的列表,但以下是我最喜歡的列表:

  • simple async support, including promises.

    簡單的異步支持,包括承諾。
  • async test timeout support.

    異步測試超時支持。
  • before, after, before each, after each hooks (very useful to clean the environment where each test!).

    在每個鉤子之前,之后,之前,之后(對于清潔每個測試所在的環境非常有用!)。
  • use any assertion library you want, Chai in our tutorial.

    使用我們想要的任何斷言庫,Chai在我們的教程中。

柴:斷言圖書館 ( Chai: Assertion Library )

So with Mocha we actually have the environment for making our tests but how do we do test HTTP calls for example? Moreover, How do we test whether a GET request is actually returning the JSON file we are expective, given a defined input? We need an assertion library, that's why mocha is not enough.

因此,實際上,有了Mocha,我們就有了進行測試的環境,但是例如,我們如何測試HTTP調用呢? 此外,在給定定義的輸入的情況下,我們如何測試GET請求是否實際上返回了我們期望的JSON文件? 我們需要一個斷言庫,這就是為什么mocha不夠用的原因。

So here it is Chai, the assertion library for the current tutorial:

因此,這里是Chai ,是本教程的斷言庫:

@media (max-width: 1280px) { .go-go-gadget-react img:first-child { display: none; } }@media (max-width: 780px) {.go-go-gadget-react { flex-direction: column; }.go-go-gadget-react img { margin-left: 0 !important; margin-bottom: 12px !important; }.header-thingy { margin-top: 20px; }.button-thingy { margin-left: 0 !important; margin-top: 12px !important; }} @media (max-width: 1280px) { .go-go-gadget-react img:first-child { display: none; } }@media (max-width: 780px) {.go-go-gadget-react { flex-direction: column; }.go-go-gadget-react img { margin-left: 0 !important; margin-bottom: 12px !important; }.header-thingy { margin-top: 20px; }.button-thingy { margin-left: 0 !important; margin-top: 12px !important; }}

Chai shines on the freedom of choosing the interface we prefer: "should", "expect", "assert" they are all available. I personally use should but you are free to check it out the API and switch to the others two. Lastly Chai HTTP addon allows Chai library to easily use assertions on HTTP requests which suits our needs.

Chai贊揚選擇我們喜歡的界面的自由:“應該”,“期望”,“聲明”它們都可用。 我個人使用應該,但是您可以自由地檢查它的API并切換到其他兩個。 最后, Chai HTTP插件允許Chai庫輕松使用適合我們需求的HTTP請求斷言。

先決條件 (Prerequisites)

  • Node.js: a basic understanding of node.js and is recommended as i wont go too much into detail on building a RESTful API.

    Node.js :對node.js的基本了解,因此建議您這樣做,因為我不會在構建RESTful API時過分詳細。
  • POSTMAN for making fast HTTP requests to the API.

    POSTMAN,用于向API發出快速HTTP請求。
  • ES6 syntax: I decided to use the latest version of Node (6.*.*) which has the highest integration of ES6 features for better code readibility. If you are not familiar with ES6 you can take a look at the great scotch articles (Pt.1 , Pt.2 and Pt.3) about it but do not worry I am going to spend a few words whenever we encount some "exotic" syntax or declaration.

    ES6語法 :我決定使用最新版本的Node(6。*。*),該版本具有ES6功能的最高集成度,以提高代碼可讀性。 如果您不熟悉ES6,則可以查看有關它的出色的蘇格蘭文章( Pt.1 , Pt.2和Pt.3 ),但是不用擔心,每當我們遇到一些“異國情調”時,我都會花幾句話語法或聲明。

Time to setup our Bookstore!

是時候設置我們的書店了!

項目設置 ( Project setup )

目錄結構 (Directory Structure)

Here is the project directory for our API, something you must have seen before:

這是我們API的項目目錄,您之前必須已經看過它:

-- controllers ---- models ------ book.js ---- routes ------ book.js -- config ---- default.json ---- dev.json ---- test.json --test ---- book.js package.json server.json

Notice the /config folder containing 3 JSON files: As the name suggests, they contain particular configurations for a specific purpose.

請注意/config文件夾,其中包含3個JSON文件:顧名思義,它們包含用于特定目的的特定配置。

In this tutorial we are going to switch between two databases, one for development and one for testing purposes, thus the files contain the mongodb URI in JSON format:

在本教程中,我們將在兩個數據庫之間切換,一個用于開發,一個用于測試,因此文件包含JSON格式的mongodb URI:

dev.json and default.json:

```javascript { "DBHost": "YOUR_DB_URI" } ```

dev.json和default.json :

javascript {“ DBHost”:“ YOUR_DB_URI”}```

test.json:

```javascript { "DBHost": "YOUR_TEST_DB_URI" } ```

test.json :

javascript {“ DBHost”:“ YOUR_TEST_DB_URI”}```

NB: default.json is optional however let me highlight that files in the config directory are loaded starting from it. For more information about the configuration files (config directory, file order, file format etc.) check out this link.

注意 : default.json是可選的,但是讓我強調一下config目錄中的文件是從該目錄開始加載的。 有關配置文件(配置目錄,文件順序,文件格式等)的更多信息,請查看此鏈接 。

Finally, notice /test/book.js, that's where we are going to write our tests!

最后,注意/test/book.js ,這就是我們要編寫測試的地方!

Package.json (Package.json)

Create the package.json file and paste the following code:

創建package.json文件并粘貼以下代碼:

{"name": "bookstore","version": "1.0.0","description": "A bookstore API","main": "server.js","author": "Sam","license": "ISC","dependencies": {"body-parser": "^1.15.1","config": "^1.20.1","express": "^4.13.4","mongoose": "^4.4.15","morgan": "^1.7.0"},"devDependencies": {"chai": "^3.5.0","chai-http": "^2.0.1","mocha": "^2.4.5"},"scripts": {"start": "SET NODE_ENV=dev && node server.js","test": "mocha --timeout 10000"} }

Again the configuration should not surprise anyone who wrote more than a server with node.js, the test-related packages mocha, chai, chai-http are saved in the dev-dependencies (flag --save-dev from command line) while the scripts property allows for two different ways of running the server.

同樣,配置不應該讓任何使用node.js編寫服務器的人感到驚訝,與測試相關的軟件包mocha , chai , chai-http被保存在dev-dependencies(命令行中的--save-dev標志)中,而scripts屬性允許運行服務器的兩種不同方式。

To run mocha I added the flag --timeout 10000 because I fetch data from a database hosted on mongolab so the default 2 seconds may not be enough.

為了運行mocha,我添加了--timeout 10000標志,因為我從mongolab上托管的數據庫中獲取數據,因此默認的2秒可能還不夠。

Congrats! You made it through the boring part of the tutorial, now it is time to write the server and test it.

恭喜! 您已經完成了教程的無聊部分,現在該編寫服務器并對其進行測試了。

服務器 ( The server )

主要 (Main)

Let's create the file server.js in the root of the project and paste the following code:

讓我們在項目的根目錄中創建文件server.js并粘貼以下代碼:

let express = require('express'); let app = express(); let mongoose = require('mongoose'); let morgan = require('morgan'); let bodyParser = require('body-parser'); let port = 8080; let book = require('./app/routes/book'); let config = require('config'); //we load the db location from the JSON files //db options let options = { server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }, replset: { socketOptions: { keepAlive: 1, connectTimeoutMS : 30000 } } }; //db connection mongoose.connect(config.DBHost, options); let db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:'));//don't show the log when it is test if(config.util.getEnv('NODE_ENV') !== 'test') {//use morgan to log at command lineapp.use(morgan('combined')); //'combined' outputs the Apache style LOGs }//parse application/json and look for raw text app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.text()); app.use(bodyParser.json({ type: 'application/json'})); app.get("/", (req, res) => res.json({message: "Welcome to our Bookstore!"}));app.route("/book").get(book.getBooks).post(book.postBook); app.route("/book/:id").get(book.getBook).delete(book.deleteBook).put(book.updateBook);app.listen(port); console.log("Listening on port " + port);module.exports = app; // for testing

Here are the key concepts:

以下是關鍵概念:

  • We require the module config to access the configuration file named as the NODE_ENV content to get the mongo db URI parameter for the db connection. This helps us to keep the "real" database clean by testing on another database hidden to our app future users.

    我們要求模塊config訪問名為NODE_ENV內容的配置文件,以獲取數據庫連接的mongo db URI參數。 這有助于我們通過對應用程序未來用戶隱藏的另一個數據庫進行測試來保持“真實”數據庫的清潔。
  • The enviroment variable NODE_ENV is test against test to disable morgan log in the command line or it would interfere with the test output.

    對環境變量NODE_ENV進行了針對測試的測試,以禁用命令行中的morgan日志,否則它將干擾測試輸出。
  • The last line of code exports the server for testing purposes.

    最后一行代碼導出服務器以進行測試。
  • Notice the variables definition using let which makes the variable enclosed to the nearest enclosing block or global if outside any block.

    注意使用let的變量定義,該變量使變量包含在最接近的封閉塊中,或者如果在任何塊外部,則為全局變量。

The remaining lines of codes are nothing new, we simply go through requiring all the necessary modules, define the header options for the communication with the server, craete the specific roots and eventually let the server listen on a defined port.

剩下的代碼行并不是什么新鮮的事情,我們只需完成所有必需的模塊,定義與服務器進行通信的標頭選項,創建特定的根目錄并最終讓服務器在定義的端口上進行偵聽就可以了。

模型和路線 (Model and Routes)

Time for our book model! Create a file in /app/model/ called book.js and paste the following code:

時間到了我們的圖書模型! 在/app/model/創建一個名為book.js的文件,并粘貼以下代碼:

let mongoose = require('mongoose'); let Schema = mongoose.Schema;//book schema definition let BookSchema = new Schema({title: { type: String, required: true },author: { type: String, required: true },year: { type: Number, required: true },pages: { type: Number, required: true, min: 1 },createdAt: { type: Date, default: Date.now }, }, { versionKey: false} );// Sets the createdAt parameter equal to the current time BookSchema.pre('save', next => {now = new Date();if(!this.createdAt) {this.createdAt = now;}next(); });//Exports the BookSchema for use elsewhere. module.exports = mongoose.model('book', BookSchema);

Our book schema has a title, author, the number of pages, the publication year and the date of creation in the db. I set the versionKey to false since it's useless for the purpose of the tutorial.

我們的圖書模式在數據庫中具有標題,作者,頁數,出版年份和創建日期。 我將versionKey設置為false,因為對于本教程而言,它是無用的。

NB: the exotic callback syntax in the .pre() function is an arrow function, a function who has a shorter syntax which, according to the definiton on MDN , "lexically binds the this value (does not bind its own this, arguments, super, or new.target). Arrow functions are always anonymous".

注意 : .pre()函數中的奇異回調語法是一個箭頭函數,該函數具有較短的語法,根據MDN的定義,該函數“按詞法綁定此值(不綁定其自身的this,參數,超級或new.target)。箭頭函數始終是匿名的” 。

Well, pretty much all we need to know about the model so let's move to the routes.

好吧,我們幾乎需要了解有關該模型的所有知識,所以讓我們開始研究路線。

in /app/routes/ create a file called book.js and paste the following code:

在/app/routes/創建一個名為book.js的文件,并粘貼以下代碼:

let mongoose = require('mongoose'); let Book = require('../models/book');/** GET /book route to retrieve all the books.*/ function getBooks(req, res) {//Query the DB and if no errors, send all the bookslet query = Book.find({});query.exec((err, books) => {if(err) res.send(err);//If no errors, send them back to the clientres.json(books);}); }/** POST /book to save a new book.*/ function postBook(req, res) {//Creates a new bookvar newBook = new Book(req.body);//Save it into the DB.newBook.save((err,book) => {if(err) {res.send(err);}else { //If no errors, send it back to the clientres.json({message: "Book successfully added!", book });}}); }/** GET /book/:id route to retrieve a book given its id.*/ function getBook(req, res) {Book.findById(req.params.id, (err, book) => {if(err) res.send(err);//If no errors, send it back to the clientres.json(book);}); }/** DELETE /book/:id to delete a book given its id.*/ function deleteBook(req, res) {Book.remove({_id : req.params.id}, (err, result) => {res.json({ message: "Book successfully deleted!", result });}); }/** PUT /book/:id to updatea a book given its id*/ function updateBook(req, res) {Book.findById({_id: req.params.id}, (err, book) => {if(err) res.send(err);Object.assign(book, req.body).save((err, book) => {if(err) res.send(err);res.json({ message: 'Book updated!', book });}); }); }//export all the functions module.exports = { getBooks, postBook, getBook, deleteBook, updateBook };

Here the key concepts:

這里的關鍵概念:

  • The routes are no more than standard routes, GET, POST, DELETE, PUT to perform CRUD operations on our data.

    這些路由只不過是用于對數據執行CRUD操作的標準路由,GET,POST,DELETE,PUT。
  • In the function updatedBook() we use Object.assign, a new function introduced in ES6 which, in this case, overrides the common properties of book with req.body while leaving untouched the others.

    在功能updatedBook()我們使用Object.assign ,在ES6推出了新的功能,在這種情況下,將覆蓋本書的公共屬性與req.body同時保持不變的人。
  • At the end we export the object using a faster syntax which pairs key and value to avoid useless repetitions.

    最后,我們使用更快的語法導出對象,該語法將鍵和值配對,以避免無用的重復。

We finished this section and actually we have a working app!

我們完成了本節,實際上我們有一個可以運行的應用程序!

天真測試 ( A Naive Test )

Now let's run the app and open POSTMAN to send HTTP request to the server and check if everything is working as expected.

現在,讓我們運行該應用程序并打開POSTMAN以將HTTP請求發送到服務器,并檢查一切是否按預期工作。

in the command line run

在命令行中運行

npm start

獲取/預訂 (GET /book)

in POSTMAN run the GET request and, assuming the database contains books, here is the result:

在POSTMAN中運行GET請求,并假設數據庫包含書籍,則結果如下:

The server correctly returned the book list in my database.

服務器正確返回了我數據庫中的書單。

開機自檢/預訂 (POST /book)

Let's add a book and POST to the server:

讓我們向服務器添加一本書和POST:

It seems the book was perfectly added. The server returned the book and a message confirming it was added in our bookstore. Is it true? Let's send another GET request and here is the result:

看來這本書已完美地添加了。 服務器返回了該書,并顯示一條消息,確認已將其添加到我們的書店中。 是真的嗎 讓我們發送另一個GET請求,結果如下:

Awesome it works!

太棒了!

放置/ book /:id (PUT /book/:id)

Let's update a book by changing the page and check the result:

讓我們通過更改頁面來更新一本書并檢查結果:

Great! PUT also seems to be working so let's send another GET request to check all the list:

大! PUT似乎也可以正常工作,因此讓我們發送另一個GET請求來檢查所有列表:

All is running smoothly...

一切運行順利...

GET / book /:id (GET /book/:id)

Now let's get a single book by sending the id in the GET request and then delete it:

現在,通過發送GET請求中的ID,然后將其刪除來獲得一本書:

As it returns the correct book let's try now to delete it:

當它返回正確的書時,讓我們現在嘗試刪除它:

刪除/ book /:id (DELETE /book/:id )

Here is the result of the DELETE request to the server:

這是對服務器的DELETE請求的結果:

Even the last request works smoothly and we do not need to doublecheck with another GET request as we are sending the client some info from mongo (result property) which states the book was actually deleted.

即使最后一個請求也可以正常工作,并且我們不需要從另一個GET請求中仔細檢查,因為我們正在從mongo(結果屬性)向客戶端發送一些信息,該信息指出該書實際上已被刪除。

By doing some test with POSTMAN the app happened to behave as expected right? So, would you shoot it to your clients?

通過對POSTMAN進行測試,該應用程序的行為恰好符合預期,對嗎? 那么,您會把它拍給客戶嗎?

Let me reply for you: NO!!

讓我為您回復: 不!

Ours is what I called a naive test because we simply tried few operations without testing strange situations that may happen: A post request without some expected data, a DELETE with a wrong id as parameter or even without id to name few.

我們之所以稱其為“天真測試”,是因為我們只是嘗試了很少的操作而沒有測試可能發生的奇怪情況:沒有某些預期數據的發布請求,ID作為參數錯誤的DELETE或什至沒有ID的例子。

This is obviously a simple app and if we were lucky enough, we coded it without introducing bugs of any sort, but what about a real-world app? Moreover, we spent time to run with POSTMAN some test HTTP requests so what would happen if one day we had to change the code of one of those? Test them all again with POSTMAN? Have you started to realize this is not an agile approach?

顯然,這是一個簡單的應用程序,如果幸運的話,我們在編寫代碼時不會引入任何類型的錯誤,但是真實世界中的應用程序呢? 此外,我們花了一些時間與POSTMAN一起運行一些測試HTTP請求,因此如果有一天我們不得不更改其中一個的代碼,會發生什么? 用POSTMAN再次測試它們嗎? 您是否已經開始意識到這不是敏捷方法?

This is nothing but few situations you may encounter and you already encountered in your journey as a developer, luckily we have tools to create tests which are always available and can be launched with a single comman line.

這不過是您可能遇到的少數情況,并且您在開發人員的旅途中已經遇到過這種情況,幸運的是,我們擁有創建測試的工具,這些工具始終可用,并且可以通過一條命令行啟動。

Let's do something better to test our app!

讓我們做點更好的測試我們的應用程序吧!

更好的測試 ( A Better Test )

First, let's create a file in /test called book.js and paste the following code:

首先,讓我們在/test創建一個名為book.js的文件,并粘貼以下代碼:

//During the test the env variable is set to test process.env.NODE_ENV = 'test';let mongoose = require("mongoose"); let Book = require('../app/models/book');//Require the dev-dependencies let chai = require('chai'); let chaiHttp = require('chai-http'); let server = require('../server'); let should = chai.should();chai.use(chaiHttp); //Our parent block describe('Books', () => {beforeEach((done) => { //Before each test we empty the databaseBook.remove({}, (err) => { done(); }); }); /** Test the /GET route*/describe('/GET book', () => {it('it should GET all the books', (done) => {chai.request(server).get('/book').end((err, res) => {res.should.have.status(200);res.body.should.be.a('array');res.body.length.should.be.eql(0);done();});});});});

Wow that's a lot of new things, let's dig into it:

哇,這是很多新東西,讓我們對其進行深入研究:

  • You must have noticed the we set the NODE_ENV variable to test, by doing so we change the configuration file to be loaded so the server will connect to the test database and avoid morgan logs in the cmd.

    您一定已經注意到我們將NODE_ENV變量設置為test,這樣我們更改了要加載的配置文件,因此服務器將連接到測試數據庫,并避免在cmd中登錄morgan。
  • We required the dev-dependencies modules and server itself (Do you remember we exported it by module.exports?).

    我們需要dev-dependencies模塊和服務器本身(您還記得我們是通過module.exports導出的嗎?)。
  • We defined should by running chai.should() to style our tests on the HTTP requests result, then we told chai to use chai HTTP.

    should通過運行chai.should()的HTTP請求導致的款式我們的測試,然后我們告訴柴用柴HTTP。

  • So it starts with "describe" blocks of code for better organizing your assertions and this organization will reflect in the output at command line as we will see later.

    因此,它從“描述”代碼塊開始,以更好地組織您的斷言,并且該組織將反映在命令行的輸出中,我們將在后面看到。

    beforeEach is a block of code that is going to run before each the describe blocks on the same level. Why we did that? Well we are going to remove any book from the database to start with an empty bookstore whenever a test is run.

    beforeEach是一個代碼塊,它將在同一級別的每個describe塊之前運行。 我們為什么這樣做? 好了,我們將在運行測試時從數據庫中刪除所有書籍,以一個空的書店開始。

    測試/ GET路線 (Test the /GET route)

    And here it comes the first test, chai is going to perform a GET request to the server and the assertions on the res variable will satisfy or reject the first parameter of the the it block it should GET all the books. Precisely, given the empty bookstore the result of the request should be:

    這是第一個測試,chai將向服務器執行GET請求,并且res變量上的斷言將滿足或拒絕it塊的第一個參數,即它應該獲取所有書籍 。 精確地,給定空的書店,請求的結果應為:

  • Status 200.

    狀態200。
  • The result should be an array.

    結果應該是一個數組。
  • Since the bookstore is empty, we presumed the length is equal to 0.

    由于書店是空的,因此我們假設書的長度等于0。
  • Notice that the syntax of should assertions is very intituitive as it is similar as a natural language statement.

    注意, should斷言的語法非常直觀,因為它類似于自然語言語句。

    Now, in the command line run:

    ```javascript npm test ```

    現在,在命令行中運行:

    JavaScript npm測試

    and here it is the output:

    這是輸出:

    The test passed and the output reflects the way we organized our code with blocks of describe.

    測試通過,輸出結果反映了我們使用describe塊組織代碼的方式。

    測試/ POST路由 (Test the /POST route)

    Now let's check our robust is our API, suppose we are trying to add a book with missing pages field passed to the server: The server should not respond with a proper error message.

    現在,讓我們檢查一下我們健壯的API,假設我們正在嘗試添加一本書,并將其缺少的頁面字段傳遞給服務器:服務器不應以正確的錯誤消息進行響應。

    Copy and paste the following code in the test file:

    將以下代碼復制并粘貼到測試文件中:

    process.env.NODE_ENV = 'test';let mongoose = require("mongoose"); let Book = require('../app/models/book');let chai = require('chai'); let chaiHttp = require('chai-http'); let server = require('../server'); let should = chai.should();chai.use(chaiHttp);describe('Books', () => {beforeEach((done) => {Book.remove({}, (err) => { done(); }); });describe('/GET book', () => {it('it should GET all the books', (done) => {chai.request(server).get('/book').end((err, res) => {res.should.have.status(200);res.body.should.be.a('array');res.body.length.should.be.eql(0);done();});});});/** Test the /POST route*/describe('/POST book', () => {it('it should not POST a book without pages field', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('errors');res.body.errors.should.have.property('pages');res.body.errors.pages.should.have.property('kind').eql('required');done();});});}); });

    Here we added the test on an incomplete /POST request, let's analyze the assertions:

    在這里,我們在不完整的/ POST請求上添加了測試,讓我們分析斷言:

  • Status should be 200.

    狀態應為200。
  • The response body should be an object.

    響應主體應該是一個對象。
  • One of the body properties should be errors.

    身體屬性之一應該是errors 。
  • Errors should have have the missing field pages as property.

    Errors應具有缺少的字段頁作為屬性。
  • Finally pages should have the property kind equal to required in order to highlight the reason why we got a negative answer from the server.

    最后, pages應具有與所需屬性相等的屬性kind ,以突出顯示為什么我們從服務器獲得否定答案的原因。
  • NB notice that we send the book along with the POST request by the .send() function.

    請注意,我們通過.send()函數將書籍與POST請求一起發送。

    Let's run the same command again and here is the output:

    讓我們再次運行相同的命令,這是輸出:

    Oh Yeah our test test is correct!

    哦,是的,我們的測試測試是正確的!

    Before writing a new test let me precise two things:

    在編寫新測試之前,讓我先詳細說明兩點:

  • First of all, why the server response structured that way? If you read the callback function for the /POST route, you will notice that in case of missing required fields, the server sends back the error message from mongoose. Try with POSTMAN and check the response.

    首先,為什么服務器響應采用這種結構? 如果您閱讀了/ POST路由的回調函數,則會注意到,如果缺少必填字段,服務器將從貓鼬發送回錯誤消息。 嘗試使用POSTMAN并檢查響應。
  • In case of missing fields we still return a status of 200, this is for simplicity as we are just learning to test our routes. However I suggest to return a status of 206 Partial Content instead.

    在缺少字段的情況下,我們仍然返回狀態200,這是為了簡單起見,因為我們只是在學習測試路線。 但是,我建議改為返回206部分內容的狀態。
  • Let's send a book with all the required fields this time. Copy and paste the following code in the test file:

    這次發送一本包含所有必填字段的書。 將以下代碼復制并粘貼到測試文件中:

    process.env.NODE_ENV = 'test';let mongoose = require("mongoose"); let Book = require('../app/models/book');let chai = require('chai'); let chaiHttp = require('chai-http'); let server = require('../server'); let should = chai.should();chai.use(chaiHttp);describe('Books', () => {beforeEach((done) => {Book.remove({}, (err) => { done(); }); });describe('/GET book', () => {it('it should GET all the books', (done) => {chai.request(server).get('/book').end((err, res) => {res.should.have.status(200);res.body.should.be.a('array');res.body.length.should.be.eql(0);done();});});});/** Test the /POST route*/describe('/POST book', () => {it('it should not POST a book without pages field', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('errors');res.body.errors.should.have.property('pages');res.body.errors.pages.should.have.property('kind').eql('required');done();});});it('it should POST a book ', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954,pages: 1170}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('message').eql('Book successfully added!');res.body.book.should.have.property('title');res.body.book.should.have.property('author');res.body.book.should.have.property('pages');res.body.book.should.have.property('year');done();});});}); });

    This time we expect a returning object with a message saying we succesfully added the book and the book itself (remember with POSTMAN?). You should be now quite familiar with the assertions I made so there is no need for going into detail. Instead, run the command again and here is the output:

    這次我們希望返回的對象帶有一條消息,說我們成功添加了這本書和這本書本身(還記得POSTMAN嗎?)。 您現在應該非常熟悉我所做的斷言,因此無需贅述。 而是再次運行命令,這是輸出:

    Smooth~

    順利?

    測試/ GET /:id路線 (Test /GET/:id Route)

    Now let's create a book, save it into the database and use the id to send a GET request to the server. Copy and paste the following code in the test file:

    現在,讓我們創建一本書,將其保存到數據庫中,并使用ID將GET請求發送到服務器。 將以下代碼復制并粘貼到測試文件中:

    process.env.NODE_ENV = 'test';let mongoose = require("mongoose"); let Book = require('../app/models/book');let chai = require('chai'); let chaiHttp = require('chai-http'); let server = require('../server'); let should = chai.should();chai.use(chaiHttp);describe('Books', () => {beforeEach((done) => {Book.remove({}, (err) => { done(); }); });describe('/GET book', () => {it('it should GET all the books', (done) => {chai.request(server).get('/book').end((err, res) => {res.should.have.status(200);res.body.should.be.a('array');res.body.length.should.be.eql(0);done();});});});describe('/POST book', () => {it('it should not POST a book without pages field', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('errors');res.body.errors.should.have.property('pages');res.body.errors.pages.should.have.property('kind').eql('required');done();});});it('it should POST a book ', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954,pages: 1170}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('message').eql('Book successfully added!');res.body.book.should.have.property('title');res.body.book.should.have.property('author');res.body.book.should.have.property('pages');res.body.book.should.have.property('year');done();});});});/** Test the /GET/:id route*/describe('/GET/:id book', () => {it('it should GET a book by the given id', (done) => {let book = new Book({ title: "The Lord of the Rings", author: "J.R.R. Tolkien", year: 1954, pages: 1170 });book.save((err, book) => {chai.request(server).get('/book/' + book.id).send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('title');res.body.should.have.property('author');res.body.should.have.property('pages');res.body.should.have.property('year');res.body.should.have.property('_id').eql(book.id);done();});});});}); });

    Through the assertions we made sure the server returned all the fields and the right book testing the two ids together. Here is the output:

    通過這些斷言,我們確保服務器返回了所有字段,并且正確地測試了兩個ID 。 這是輸出:

    Have you noticed that by testing single routes within independent blocks we provide a very clear output? Also, isn't it so efficient? We wrote several tests that can be repeated with a single command line, once and for all.

    您是否注意到通過測試獨立塊內的單個路徑,我們提供了非常清晰的輸出? 而且,這樣有效嗎? 我們編寫了幾個測試,這些測試可以用一個命令行一次又一次地重復進行。

    測試/ PUT /:id路由 (Test the /PUT/:id Route)

    Time for testing an update on one of our books, we first save the book and then update the year it was published. So, copy and paste the following code:

    是時候測試我們其中一本書的更新了,我們首先保存這本書,然后更新它的出版年份。 因此,復制并粘貼以下代碼:

    process.env.NODE_ENV = 'test';let mongoose = require("mongoose"); let Book = require('../app/models/book');let chai = require('chai'); let chaiHttp = require('chai-http'); let server = require('../server'); let should = chai.should();chai.use(chaiHttp);describe('Books', () => {beforeEach((done) => {Book.remove({}, (err) => { done(); }); });describe('/GET book', () => {it('it should GET all the books', (done) => {chai.request(server).get('/book').end((err, res) => {res.should.have.status(200);res.body.should.be.a('array');res.body.length.should.be.eql(0);done();});});});describe('/POST book', () => {it('it should not POST a book without pages field', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('errors');res.body.errors.should.have.property('pages');res.body.errors.pages.should.have.property('kind').eql('required');done();});});it('it should POST a book ', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954,pages: 1170}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('message').eql('Book successfully added!');res.body.book.should.have.property('title');res.body.book.should.have.property('author');res.body.book.should.have.property('pages');res.body.book.should.have.property('year');done();});});});describe('/GET/:id book', () => {it('it should GET a book by the given id', (done) => {let book = new Book({ title: "The Lord of the Rings", author: "J.R.R. Tolkien", year: 1954, pages: 1170 });book.save((err, book) => {chai.request(server).get('/book/' + book.id).send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('title');res.body.should.have.property('author');res.body.should.have.property('pages');res.body.should.have.property('year');res.body.should.have.property('_id').eql(book.id);done();});});});});/** Test the /PUT/:id route*/describe('/PUT/:id book', () => {it('it should UPDATE a book given the id', (done) => {let book = new Book({title: "The Chronicles of Narnia", author: "C.S. Lewis", year: 1948, pages: 778})book.save((err, book) => {chai.request(server).put('/book/' + book.id).send({title: "The Chronicles of Narnia", author: "C.S. Lewis", year: 1950, pages: 778}).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('message').eql('Book updated!');res.body.book.should.have.property('year').eql(1950);done();});});});}); });

    We wanna make sure the message is the correct Book updated! one and that the year field was actually updated. Here is the output:

    我們要確保郵件是正確的更新書! 一, year字段實際上已更新。 這是輸出:

    Good, we are close to the end, we still gotta test the DELETE route.

    很好,我們快結束了,我們仍然要測試DELETE路線。

    測試/ DELETE /:id路由 (Test the /DELETE/:id Route)

    The pattern is similar to the previous tests, we first store a book, delete it and test against the response. Copy and paste the following code:

    該模式類似于先前的測試,我們首先存儲一本書,將其刪除并根據響應進行測試。 復制并粘貼以下代碼:

    process.env.NODE_ENV = 'test';let mongoose = require("mongoose"); let Book = require('../app/models/book');let chai = require('chai'); let chaiHttp = require('chai-http'); let server = require('../server'); let should = chai.should();chai.use(chaiHttp);describe('Books', () => {beforeEach((done) => {Book.remove({}, (err) => { done(); }); });describe('/GET book', () => {it('it should GET all the books', (done) => {chai.request(server).get('/book').end((err, res) => {res.should.have.status(200);res.body.should.be.a('array');res.body.length.should.be.eql(0);done();});});});describe('/POST book', () => {it('it should not POST a book without pages field', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('errors');res.body.errors.should.have.property('pages');res.body.errors.pages.should.have.property('kind').eql('required');done();});});it('it should POST a book ', (done) => {let book = {title: "The Lord of the Rings",author: "J.R.R. Tolkien",year: 1954,pages: 1170}chai.request(server).post('/book').send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('message').eql('Book successfully added!');res.body.book.should.have.property('title');res.body.book.should.have.property('author');res.body.book.should.have.property('pages');res.body.book.should.have.property('year');done();});});});describe('/GET/:id book', () => {it('it should GET a book by the given id', (done) => {let book = new Book({ title: "The Lord of the Rings", author: "J.R.R. Tolkien", year: 1954, pages: 1170 });book.save((err, book) => {chai.request(server).get('/book/' + book.id).send(book).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('title');res.body.should.have.property('author');res.body.should.have.property('pages');res.body.should.have.property('year');res.body.should.have.property('_id').eql(book.id);done();});});});});describe('/PUT/:id book', () => {it('it should UPDATE a book given the id', (done) => {let book = new Book({title: "The Chronicles of Narnia", author: "C.S. Lewis", year: 1948, pages: 778})book.save((err, book) => {chai.request(server).put('/book/' + book.id).send({title: "The Chronicles of Narnia", author: "C.S. Lewis", year: 1950, pages: 778}).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('message').eql('Book updated!');res.body.book.should.have.property('year').eql(1950);done();});});});});/** Test the /DELETE/:id route*/describe('/DELETE/:id book', () => {it('it should DELETE a book given the id', (done) => {let book = new Book({title: "The Chronicles of Narnia", author: "C.S. Lewis", year: 1948, pages: 778})book.save((err, book) => {chai.request(server).delete('/book/' + book.id).end((err, res) => {res.should.have.status(200);res.body.should.be.a('object');res.body.should.have.property('message').eql('Book successfully deleted!');res.body.result.should.have.property('ok').eql(1);res.body.result.should.have.property('n').eql(1);done();});});});}); });

    Again the server returns a message and properties from mongoose that we assert so let's check the output:

    再次,服務器從貓鼬返回一條消息和我們聲明的屬性,因此讓我們檢查輸出:

    Great, our tests are all positive and we have a good basis to continue testing our routes with more sophisticated assertions.

    太好了,我們的測試都是積極的,并且我們有很好的基礎繼續使用更復雜的斷言來測試我們的路線。

    Congratulation for completing the tutorial!

    祝賀您完成本教程!

    結論 ( Conclusion )

    In this tutorial we faced the problem of testing our routes to provide our users a stable experience.

    在本教程中,我們面臨著測試路線以為用戶提供穩定體驗的問題。

    We went through all the steps of creating a RESTful API, doing a naive test with POSTMAN and then propose a better way to test, in fact the main topic of the tutorial.

    我們經歷了創建RESTful API的所有步驟,使用POSTMAN進行了幼稚的測試,然后提出了一種更好的測試方法,實際上是本教程的主題。

    It is good habit to always spend some time making tests to assure a server as reliable as possible but unfortunately it is often underestimated.

    習慣上總是花一些時間進行測試以確保服務器盡可能可靠,但這是一個好習慣,但是不幸的是,它經常被低估。

    During the tutorial we also discuss a few benefits of code testing and this will open doors to more advanced topics such as Test Driven Development (TDD).

    在本教程中,我們還將討論代碼測試的一些好處,這將為諸如測試驅動開發(TDD)之類的更高級主題打開大門。

    Good job!

    做得好!

    額外的ock子 ( Bonus Mockgoose )

    One may argue that using two different databases is not the best situation and a second one is often not available. So what to do? Well, there is an alternative: Mockgoose.

    一個人可能會爭辯說使用兩個不同的數據庫并不是最好的情況,而第二個數據庫通常不可用。 那么該怎么辦? 好吧,還有另一種選擇:Mockgoose。

    Basically Mockgoose wraps your mongoose driver by intercepting the connection so your database will not be touched but instead use in memory store. Moreover it integrates well with Mocha.

    基本上, Mockgoose通過攔截連接來包裝您的Mongoose驅動程序,這樣您的數據庫就不會被觸摸,而是在內存存儲中使用。 此外,它與Mocha集成得很好。

    NB: Apparently it requires mongodb to be installed on the running machine.

    注意 :顯然,它要求在運行的計算機上安裝mongodb。

    翻譯自: https://scotch.io/tutorials/test-a-node-restful-api-with-mocha-and-chai

    node mocha

    總結

    以上是生活随笔為你收集整理的node mocha_使用Mocha和Chai测试Node RESTful API的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    风流少妇按摩来高潮 | 最近中文2019字幕第二页 | 亚洲日本va午夜在线电影 | 在线精品国产一区二区三区 | 九九热爱视频精品 | 国产精品久久久久久久影院 | 日本va欧美va欧美va精品 | 国产无套内射久久久国产 | 亚洲国产成人a精品不卡在线 | 国产免费无码一区二区视频 | 日日躁夜夜躁狠狠躁 | 国産精品久久久久久久 | 亚洲a无码综合a国产av中文 | 久久 国产 尿 小便 嘘嘘 | 亚洲中文字幕在线观看 | 人妻少妇精品无码专区动漫 | 久9re热视频这里只有精品 | 成在人线av无码免费 | 丰满少妇高潮惨叫视频 | 精品国产一区av天美传媒 | 亚洲国产精品久久人人爱 | 国产精品va在线观看无码 | 久久天天躁狠狠躁夜夜免费观看 | 蜜桃视频插满18在线观看 | 一个人免费观看的www视频 | 国产精品永久免费视频 | 久热国产vs视频在线观看 | 欧美日韩一区二区免费视频 | 亚洲精品成人av在线 | 国产乱码精品一品二品 | 免费中文字幕日韩欧美 | 精品无码成人片一区二区98 | 亚洲色欲色欲天天天www | 欧美熟妇另类久久久久久不卡 | av在线亚洲欧洲日产一区二区 | 亚洲国产精品久久久天堂 | 秋霞特色aa大片 | 高清国产亚洲精品自在久久 | 亚洲国产成人av在线观看 | 国语精品一区二区三区 | 日产精品高潮呻吟av久久 | 成年女人永久免费看片 | 国产农村乱对白刺激视频 | 99久久久国产精品无码免费 | 人妻无码αv中文字幕久久琪琪布 | 青春草在线视频免费观看 | 亚洲中文字幕成人无码 | 欧美成人免费全部网站 | 亚洲精品无码人妻无码 | 国产性生交xxxxx无码 | 亚洲精品午夜无码电影网 | 久久久av男人的天堂 | 中文字幕无码免费久久9一区9 | 日日干夜夜干 | 最新国产麻豆aⅴ精品无码 | 欧美阿v高清资源不卡在线播放 | 曰韩无码二三区中文字幕 | 亚洲欧美精品aaaaaa片 | 亚洲国产日韩a在线播放 | 久久亚洲中文字幕精品一区 | 国产农村乱对白刺激视频 | 欧美国产亚洲日韩在线二区 | 欧美成人午夜精品久久久 | 欧洲熟妇精品视频 | 免费人成在线观看网站 | 国产情侣作爱视频免费观看 | 日韩人妻无码一区二区三区久久99 | 久久人人爽人人爽人人片ⅴ | 亚洲成av人在线观看网址 | 伊人久久婷婷五月综合97色 | 在线欧美精品一区二区三区 | 精品国产av色一区二区深夜久久 | 精品久久久久久人妻无码中文字幕 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 麻豆果冻传媒2021精品传媒一区下载 | 自拍偷自拍亚洲精品10p | 亚洲国产成人av在线观看 | 日本va欧美va欧美va精品 | 人妻无码αv中文字幕久久琪琪布 | 人妻插b视频一区二区三区 | 亚洲 欧美 激情 小说 另类 | 成熟人妻av无码专区 | 福利一区二区三区视频在线观看 | 欧美激情综合亚洲一二区 | 国产真实伦对白全集 | 国产一区二区三区日韩精品 | 国产人妻久久精品二区三区老狼 | 亚洲色无码一区二区三区 | 国内精品人妻无码久久久影院 | 欧美日韩在线亚洲综合国产人 | 日韩成人一区二区三区在线观看 | 久9re热视频这里只有精品 | 少妇被黑人到高潮喷出白浆 | av无码久久久久不卡免费网站 | 国产偷国产偷精品高清尤物 | 久久午夜无码鲁丝片 | 51国偷自产一区二区三区 | 国产亚洲美女精品久久久2020 | 国产亚洲精品久久久ai换 | 色综合久久网 | 久久精品视频在线看15 | 国产精品办公室沙发 | 久久精品中文字幕一区 | 99久久久无码国产aaa精品 | 一本久久a久久精品vr综合 | 无人区乱码一区二区三区 | 色综合久久久无码中文字幕 | yw尤物av无码国产在线观看 | 曰本女人与公拘交酡免费视频 | 亚洲国精产品一二二线 | 荫蒂添的好舒服视频囗交 | 国产午夜福利亚洲第一 | 免费无码午夜福利片69 | 无码国产激情在线观看 | 国产精品久久久av久久久 | 精品国产福利一区二区 | 欧美日韩视频无码一区二区三 | 俄罗斯老熟妇色xxxx | 乱码av麻豆丝袜熟女系列 | 国产亚洲人成a在线v网站 | 精品人人妻人人澡人人爽人人 | 久久精品女人的天堂av | 人人澡人人妻人人爽人人蜜桃 | 国产三级精品三级男人的天堂 | 中文精品无码中文字幕无码专区 | av无码电影一区二区三区 | 无码纯肉视频在线观看 | 无码精品国产va在线观看dvd | 波多野结衣aⅴ在线 | 青青青爽视频在线观看 | 国产成人无码区免费内射一片色欲 | 亚洲日本一区二区三区在线 | 成 人 网 站国产免费观看 | 国产综合色产在线精品 | 亚洲一区二区三区含羞草 | 亚洲国产欧美日韩精品一区二区三区 | 四虎国产精品免费久久 | 亚洲精品国产精品乱码视色 | 欧美自拍另类欧美综合图片区 | 精品国产成人一区二区三区 | 无遮无挡爽爽免费视频 | 巨爆乳无码视频在线观看 | 国产精品亚洲а∨无码播放麻豆 | 大肉大捧一进一出视频出来呀 | 成人精品一区二区三区中文字幕 | 中文无码成人免费视频在线观看 | 久久无码专区国产精品s | 日日天干夜夜狠狠爱 | 大色综合色综合网站 | 曰韩少妇内射免费播放 | 黑人粗大猛烈进出高潮视频 | 精品无码一区二区三区爱欲 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产艳妇av在线观看果冻传媒 | 国产av一区二区精品久久凹凸 | 又紧又大又爽精品一区二区 | 日本精品少妇一区二区三区 | 亚洲精品一区二区三区大桥未久 | 欧美 丝袜 自拍 制服 另类 | 国产亚洲视频中文字幕97精品 | 狠狠色色综合网站 | 超碰97人人做人人爱少妇 | 在线播放免费人成毛片乱码 | 亚洲色偷偷偷综合网 | ass日本丰满熟妇pics | 18黄暴禁片在线观看 | 老熟女重囗味hdxx69 | 国产午夜福利100集发布 | 日韩av无码一区二区三区不卡 | 天天综合网天天综合色 | 精品欧洲av无码一区二区三区 | 在线看片无码永久免费视频 | 亚洲爆乳大丰满无码专区 | 少妇人妻av毛片在线看 | 国产亚洲精品久久久久久 | 又粗又大又硬毛片免费看 | 亚洲精品www久久久 | 妺妺窝人体色www婷婷 | 亚洲综合在线一区二区三区 | 中文精品久久久久人妻不卡 | 粗大的内捧猛烈进出视频 | 亚洲精品一区国产 | 亚洲男人av天堂午夜在 | 无码乱肉视频免费大全合集 | 亚洲の无码国产の无码步美 | 国产香蕉97碰碰久久人人 | 三上悠亚人妻中文字幕在线 | 久久精品成人欧美大片 | 色欲人妻aaaaaaa无码 | 国产艳妇av在线观看果冻传媒 | 欧美大屁股xxxxhd黑色 | 欧美人妻一区二区三区 | 亚洲国产午夜精品理论片 | 中文字幕av伊人av无码av | 色综合视频一区二区三区 | 纯爱无遮挡h肉动漫在线播放 | 久久无码中文字幕免费影院蜜桃 | 中文字幕无码免费久久9一区9 | 人妻夜夜爽天天爽三区 | 无码播放一区二区三区 | 日韩人妻无码一区二区三区久久99 | 2019午夜福利不卡片在线 | 久久五月精品中文字幕 | 国产欧美精品一区二区三区 | 亚洲第一网站男人都懂 | 久久精品人人做人人综合试看 | 亚洲成a人片在线观看日本 | 精品无人区无码乱码毛片国产 | 51国偷自产一区二区三区 | 亚洲无人区午夜福利码高清完整版 | 无码人妻丰满熟妇区毛片18 | 亚洲天堂2017无码 | 少妇性俱乐部纵欲狂欢电影 | 婷婷六月久久综合丁香 | a在线亚洲男人的天堂 | 国产偷自视频区视频 | 人人超人人超碰超国产 | 久久综合给合久久狠狠狠97色 | 日产精品高潮呻吟av久久 | 国产成人无码专区 | 国产内射爽爽大片视频社区在线 | 欧美真人作爱免费视频 | 欧美xxxxx精品 | 装睡被陌生人摸出水好爽 | 亚洲国产欧美在线成人 | 97无码免费人妻超级碰碰夜夜 | 成熟妇人a片免费看网站 | 国产欧美精品一区二区三区 | 日本欧美一区二区三区乱码 | 强开小婷嫩苞又嫩又紧视频 | 婷婷综合久久中文字幕蜜桃三电影 | 精品国产麻豆免费人成网站 | 国产精品高潮呻吟av久久 | 捆绑白丝粉色jk震动捧喷白浆 | 久久99精品久久久久久 | 亚洲国产精品毛片av不卡在线 | 日日天日日夜日日摸 | 欧美猛少妇色xxxxx | 嫩b人妻精品一区二区三区 | 国产精品久久久午夜夜伦鲁鲁 | 国产亚洲人成a在线v网站 | 久久人人爽人人爽人人片ⅴ | 日日噜噜噜噜夜夜爽亚洲精品 | 国产福利视频一区二区 | 伊人久久婷婷五月综合97色 | 青青草原综合久久大伊人精品 | 领导边摸边吃奶边做爽在线观看 | 久久久久国色av免费观看性色 | 亚洲综合无码一区二区三区 | 国产 精品 自在自线 | 人妻少妇精品视频专区 | 午夜福利不卡在线视频 | 无码人妻精品一区二区三区下载 | 人人妻人人澡人人爽精品欧美 | 欧美日韩久久久精品a片 | 精品成在人线av无码免费看 | 亚洲精品一区二区三区在线观看 | 久久久久国色av免费观看性色 | 娇妻被黑人粗大高潮白浆 | 国产人妻人伦精品1国产丝袜 | 女人被男人爽到呻吟的视频 | 真人与拘做受免费视频 | 免费观看又污又黄的网站 | 日本一卡2卡3卡四卡精品网站 | 欧美人与物videos另类 | 熟女俱乐部五十路六十路av | 亚洲人成影院在线无码按摩店 | 一本一道久久综合久久 | 久久久久久久人妻无码中文字幕爆 | 黑人巨大精品欧美黑寡妇 | 久久精品一区二区三区四区 | 国产成人人人97超碰超爽8 | 日韩精品无码一区二区中文字幕 | 日本精品人妻无码免费大全 | 中国大陆精品视频xxxx | 性生交片免费无码看人 | 亚洲成av人综合在线观看 | 国产av人人夜夜澡人人爽麻豆 | 亚洲一区二区三区国产精华液 | 久久久婷婷五月亚洲97号色 | 伦伦影院午夜理论片 | 最近中文2019字幕第二页 | 中文字幕中文有码在线 | 亚洲一区二区三区在线观看网站 | 亚洲综合在线一区二区三区 | 亚洲第一无码av无码专区 | 亚洲熟妇自偷自拍另类 | 自拍偷自拍亚洲精品被多人伦好爽 | 99久久精品午夜一区二区 | 日韩精品乱码av一区二区 | 红桃av一区二区三区在线无码av | 高潮毛片无遮挡高清免费视频 | 无遮挡国产高潮视频免费观看 | 人人妻人人澡人人爽精品欧美 | 国产成人精品视频ⅴa片软件竹菊 | 强辱丰满人妻hd中文字幕 | 人妻aⅴ无码一区二区三区 | 强伦人妻一区二区三区视频18 | 牲交欧美兽交欧美 | 性色av无码免费一区二区三区 | 伊在人天堂亚洲香蕉精品区 | 亚洲日韩中文字幕在线播放 | 高清无码午夜福利视频 | 日日干夜夜干 | www国产亚洲精品久久久日本 | www国产亚洲精品久久久日本 | 中文字幕+乱码+中文字幕一区 | 亚洲a无码综合a国产av中文 | 国产一精品一av一免费 | 中文字幕中文有码在线 | 一区二区三区乱码在线 | 欧洲 | 亚洲の无码国产の无码步美 | 久久久久成人片免费观看蜜芽 | 天天av天天av天天透 | 全黄性性激高免费视频 | 成年美女黄网站色大免费视频 | 少妇邻居内射在线 | 久久久久久国产精品无码下载 | 强奷人妻日本中文字幕 | 男人扒开女人内裤强吻桶进去 | 精品久久久久久亚洲精品 | 丰满少妇弄高潮了www | 免费无码肉片在线观看 | 少妇人妻大乳在线视频 | 免费人成在线观看网站 | 欧美人与物videos另类 | 九九久久精品国产免费看小说 | 极品尤物被啪到呻吟喷水 | 欧美三级不卡在线观看 | 久久成人a毛片免费观看网站 | 欧美成人免费全部网站 | 中文字幕乱码中文乱码51精品 | 丰满人妻精品国产99aⅴ | 中文无码精品a∨在线观看不卡 | 精品无码一区二区三区的天堂 | 欧美成人午夜精品久久久 | 超碰97人人做人人爱少妇 | 东京热无码av男人的天堂 | 人人妻人人澡人人爽欧美一区 | 人妻有码中文字幕在线 | 天天摸天天透天天添 | 国内精品久久毛片一区二区 | 1000部夫妻午夜免费 | 国产亚洲视频中文字幕97精品 | 国产乱人伦av在线无码 | 亚洲第一无码av无码专区 | 男女性色大片免费网站 | 国产精品久久久久久无码 | 领导边摸边吃奶边做爽在线观看 | 少妇无码一区二区二三区 | 一二三四在线观看免费视频 | 在线观看欧美一区二区三区 | 少妇被粗大的猛进出69影院 | 国产成人精品久久亚洲高清不卡 | 国产精品人人妻人人爽 | 野外少妇愉情中文字幕 | 九月婷婷人人澡人人添人人爽 | 男女超爽视频免费播放 | 色欲av亚洲一区无码少妇 | 久久精品99久久香蕉国产色戒 | 成人无码视频在线观看网站 | 国产成人无码av一区二区 | 少妇被粗大的猛进出69影院 | 高潮毛片无遮挡高清免费 | 日韩欧美成人免费观看 | 大地资源网第二页免费观看 | 亚洲国产欧美国产综合一区 | 日本丰满熟妇videos | 性欧美大战久久久久久久 | 精品乱子伦一区二区三区 | 色欲综合久久中文字幕网 | 欧美 日韩 亚洲 在线 | 国产精品久久福利网站 | 97久久精品无码一区二区 | 一本一道久久综合久久 | 樱花草在线播放免费中文 | 日日碰狠狠躁久久躁蜜桃 | 高清国产亚洲精品自在久久 | 亚洲自偷精品视频自拍 | 久久久久久久久888 | 我要看www免费看插插视频 | 国产乡下妇女做爰 | 久久亚洲中文字幕无码 | 国产熟女一区二区三区四区五区 | 人人爽人人澡人人高潮 | 亚洲精品一区二区三区婷婷月 | 少妇性荡欲午夜性开放视频剧场 | 国产电影无码午夜在线播放 | 国产97人人超碰caoprom | 国产精品嫩草久久久久 | 久久久中文字幕日本无吗 | 亚洲呦女专区 | 性欧美熟妇videofreesex | 精品偷拍一区二区三区在线看 | 乱码午夜-极国产极内射 | 成年美女黄网站色大免费全看 | 最新版天堂资源中文官网 | 熟妇人妻无乱码中文字幕 | 99久久久无码国产精品免费 | 麻花豆传媒剧国产免费mv在线 | 国产欧美亚洲精品a | 日本肉体xxxx裸交 | 久久精品视频在线看15 | 欧美人妻一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 久久综合久久自在自线精品自 | 成熟妇人a片免费看网站 | 99精品久久毛片a片 | 亚洲欧美色中文字幕在线 | 国产色视频一区二区三区 | 激情内射亚州一区二区三区爱妻 | 国产av久久久久精东av | 麻豆精品国产精华精华液好用吗 | 1000部啪啪未满十八勿入下载 | 国内少妇偷人精品视频免费 | 国产成人精品一区二区在线小狼 | 99视频精品全部免费免费观看 | 免费人成网站视频在线观看 | 日本成熟视频免费视频 | 国产亚洲精品久久久久久久 | 国产综合久久久久鬼色 | 亚洲乱码日产精品bd | 老头边吃奶边弄进去呻吟 | 国产精品二区一区二区aⅴ污介绍 | 久久成人a毛片免费观看网站 | 欧美成人午夜精品久久久 | 中文字幕无线码 | 少妇激情av一区二区 | 国产精品视频免费播放 | 欧美激情一区二区三区成人 | 国产精品久久国产三级国 | v一区无码内射国产 | 欧美国产日产一区二区 | 日日摸天天摸爽爽狠狠97 | 亚洲va中文字幕无码久久不卡 | 国产真实乱对白精彩久久 | 精品无码一区二区三区爱欲 | 好屌草这里只有精品 | 四虎永久在线精品免费网址 | 亚洲七七久久桃花影院 | 国产精品亚洲专区无码不卡 | 精品人妻人人做人人爽 | 人妻与老人中文字幕 | 又色又爽又黄的美女裸体网站 | 丰满少妇人妻久久久久久 | 日本一卡二卡不卡视频查询 | 四虎国产精品免费久久 | 纯爱无遮挡h肉动漫在线播放 | 亚洲春色在线视频 | 白嫩日本少妇做爰 | 午夜无码区在线观看 | 无码一区二区三区在线观看 | www国产精品内射老师 | 特级做a爰片毛片免费69 | 白嫩日本少妇做爰 | 欧美日韩一区二区综合 | 国产人成高清在线视频99最全资源 | 强开小婷嫩苞又嫩又紧视频 | 中文无码成人免费视频在线观看 | 国产成人无码午夜视频在线观看 | 日韩av无码一区二区三区 | 天堂亚洲2017在线观看 | 亚洲日本va中文字幕 | 精品国产青草久久久久福利 | 欧美成人午夜精品久久久 | 精品无码国产一区二区三区av | 狂野欧美性猛xxxx乱大交 | 好爽又高潮了毛片免费下载 | 免费无码一区二区三区蜜桃大 | 久久久久久av无码免费看大片 | 最近的中文字幕在线看视频 | 欧洲精品码一区二区三区免费看 | 亚洲国产精华液网站w | 性色欲网站人妻丰满中文久久不卡 | 天天av天天av天天透 | 成人精品天堂一区二区三区 | 老头边吃奶边弄进去呻吟 | 天天躁夜夜躁狠狠是什么心态 | 人妻无码久久精品人妻 | 男人的天堂2018无码 | 成熟妇人a片免费看网站 | 中文字幕日韩精品一区二区三区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 免费看男女做好爽好硬视频 | 色噜噜亚洲男人的天堂 | 99精品视频在线观看免费 | 中文字幕无码av激情不卡 | 性啪啪chinese东北女人 | 久久精品女人的天堂av | 国产熟女一区二区三区四区五区 | 双乳奶水饱满少妇呻吟 | 亚洲欧美综合区丁香五月小说 | 伦伦影院午夜理论片 | 亚洲 高清 成人 动漫 | 亚洲精品成人av在线 | 99er热精品视频 | 六月丁香婷婷色狠狠久久 | 人妻少妇精品久久 | 中文无码伦av中文字幕 | 中国大陆精品视频xxxx | 亚洲欧美日韩国产精品一区二区 | 波多野结衣 黑人 | 久久精品国产99精品亚洲 | 成人欧美一区二区三区黑人免费 | 国模大胆一区二区三区 | 久久精品人妻少妇一区二区三区 | 99久久久无码国产精品免费 | 好爽又高潮了毛片免费下载 | 水蜜桃av无码 | 妺妺窝人体色www婷婷 | 少妇人妻大乳在线视频 | 国产真人无遮挡作爱免费视频 | 国产乱人伦av在线无码 | 成人毛片一区二区 | 亚洲中文字幕无码一久久区 | 无码国内精品人妻少妇 | 强开小婷嫩苞又嫩又紧视频 | 欧美大屁股xxxxhd黑色 | 精品乱子伦一区二区三区 | 亚洲精品美女久久久久久久 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 一二三四社区在线中文视频 | 激情人妻另类人妻伦 | 熟妇激情内射com | 午夜无码人妻av大片色欲 | 国产超碰人人爽人人做人人添 | 欧美精品无码一区二区三区 | 少妇性俱乐部纵欲狂欢电影 | 少妇的肉体aa片免费 | 成人免费视频在线观看 | 欧美日韩人成综合在线播放 | 少妇人妻偷人精品无码视频 | av在线亚洲欧洲日产一区二区 | 国产av无码专区亚洲awww | 天海翼激烈高潮到腰振不止 | 国语精品一区二区三区 | 少妇厨房愉情理9仑片视频 | 久热国产vs视频在线观看 | 国产一区二区不卡老阿姨 | 久久人人爽人人爽人人片ⅴ | 99久久久无码国产精品免费 | 久久久久成人精品免费播放动漫 | 色偷偷人人澡人人爽人人模 | 国内揄拍国内精品人妻 | 性色欲网站人妻丰满中文久久不卡 | 国产人妻久久精品二区三区老狼 | 亚洲国产高清在线观看视频 | 国产熟妇另类久久久久 | 97久久精品无码一区二区 | 婷婷丁香五月天综合东京热 | 香港三级日本三级妇三级 | 国产成人无码午夜视频在线观看 | 欧美性生交活xxxxxdddd | 色一情一乱一伦一区二区三欧美 | 成人精品天堂一区二区三区 | 欧美xxxx黑人又粗又长 | 婷婷丁香五月天综合东京热 | 成人精品视频一区二区三区尤物 | 亚洲中文字幕在线无码一区二区 | 男女作爱免费网站 | 精品午夜福利在线观看 | 未满小14洗澡无码视频网站 | 亚洲色www成人永久网址 | 日日天干夜夜狠狠爱 | 偷窥村妇洗澡毛毛多 | 人妻尝试又大又粗久久 | 性色av无码免费一区二区三区 | 精品一区二区不卡无码av | 中文字幕无码乱人伦 | 亚洲日本一区二区三区在线 | 免费观看的无遮挡av | av人摸人人人澡人人超碰下载 | 久久亚洲国产成人精品性色 | 中文字幕av无码一区二区三区电影 | 自拍偷自拍亚洲精品10p | 少妇太爽了在线观看 | 亚洲精品欧美二区三区中文字幕 | 国产sm调教视频在线观看 | 午夜性刺激在线视频免费 | 99久久精品无码一区二区毛片 | 牲欲强的熟妇农村老妇女视频 | 国产婷婷色一区二区三区在线 | 巨爆乳无码视频在线观看 | 国产精品亚洲а∨无码播放麻豆 | 欧美丰满少妇xxxx性 | 亚洲欧洲日本综合aⅴ在线 | 国产sm调教视频在线观看 | 国产乱人无码伦av在线a | 国产人妖乱国产精品人妖 | 精品一区二区不卡无码av | 国产精品对白交换视频 | 亚洲熟妇色xxxxx欧美老妇 | 国产人妻精品一区二区三区不卡 | 国产婷婷色一区二区三区在线 | 国产亚洲日韩欧美另类第八页 | 一本久久伊人热热精品中文字幕 | 玩弄人妻少妇500系列视频 | 免费无码一区二区三区蜜桃大 | 中文字幕无码av波多野吉衣 | aⅴ在线视频男人的天堂 | 大乳丰满人妻中文字幕日本 | 亚洲日韩乱码中文无码蜜桃臀网站 | 中文无码精品a∨在线观看不卡 | 欧美丰满老熟妇xxxxx性 | 欧美性猛交xxxx富婆 | a在线亚洲男人的天堂 | 精品国产麻豆免费人成网站 | 亚洲天堂2017无码 | 午夜精品一区二区三区的区别 | 欧美激情综合亚洲一二区 | 成 人 免费观看网站 | 国产精品久久精品三级 | 装睡被陌生人摸出水好爽 | 高清不卡一区二区三区 | 亚洲国产精品毛片av不卡在线 | 东京热男人av天堂 | 日产精品高潮呻吟av久久 | 婷婷六月久久综合丁香 | 伊人久久大香线蕉av一区二区 | 国产精品毛片一区二区 | 男人和女人高潮免费网站 | 少妇性l交大片 | 国产精品亚洲专区无码不卡 | 无遮挡啪啪摇乳动态图 | 亚洲 a v无 码免 费 成 人 a v | 久久综合色之久久综合 | 亚洲中文字幕乱码av波多ji | 久久精品国产99精品亚洲 | 亚洲一区二区三区四区 | 东京无码熟妇人妻av在线网址 | 一本一道久久综合久久 | 一本大道久久东京热无码av | 麻豆果冻传媒2021精品传媒一区下载 | 强奷人妻日本中文字幕 | 亚洲爆乳精品无码一区二区三区 | 精品久久久无码中文字幕 | 2020最新国产自产精品 | 狠狠躁日日躁夜夜躁2020 | 色窝窝无码一区二区三区色欲 | 台湾无码一区二区 | 蜜臀av在线播放 久久综合激激的五月天 | 亚洲区小说区激情区图片区 | 亚洲国产精品毛片av不卡在线 | 99精品无人区乱码1区2区3区 | 98国产精品综合一区二区三区 | 荫蒂被男人添的好舒服爽免费视频 | 野外少妇愉情中文字幕 | 免费乱码人妻系列无码专区 | 四虎永久在线精品免费网址 | 暴力强奷在线播放无码 | 国内精品九九久久久精品 | 亚洲小说图区综合在线 | 日韩无码专区 | 免费人成在线视频无码 | 妺妺窝人体色www在线小说 | 久久午夜无码鲁丝片秋霞 | 亚洲欧美精品伊人久久 | 欧美激情内射喷水高潮 | 国产精品久久久久久亚洲影视内衣 | 久久精品国产精品国产精品污 | 97se亚洲精品一区 | 正在播放老肥熟妇露脸 | 在线亚洲高清揄拍自拍一品区 | 又色又爽又黄的美女裸体网站 | 亚洲另类伦春色综合小说 | 在线精品国产一区二区三区 | www国产亚洲精品久久网站 | 一本久久a久久精品亚洲 | 日韩精品成人一区二区三区 | 中文精品无码中文字幕无码专区 | 亚洲精品综合一区二区三区在线 | 国产莉萝无码av在线播放 | 久久精品女人的天堂av | 中文字幕无码av波多野吉衣 | 在线观看国产午夜福利片 | 国产乱人无码伦av在线a | 激情内射亚州一区二区三区爱妻 | 亚洲欧美日韩综合久久久 | 国产内射爽爽大片视频社区在线 | 女高中生第一次破苞av | 日本乱偷人妻中文字幕 | 国产性生交xxxxx无码 | 无码帝国www无码专区色综合 | 免费无码av一区二区 | 99久久精品无码一区二区毛片 | aa片在线观看视频在线播放 | 久久精品视频在线看15 | 欧美性猛交xxxx富婆 | a片在线免费观看 | 永久免费精品精品永久-夜色 | 欧美日韩综合一区二区三区 | 日本熟妇人妻xxxxx人hd | 在线 国产 欧美 亚洲 天堂 | 国产舌乚八伦偷品w中 | 少妇性俱乐部纵欲狂欢电影 | 日韩人妻无码一区二区三区久久99 | 日本精品高清一区二区 | 久久久久久国产精品无码下载 | 亚洲精品久久久久中文第一幕 | 国产精品久久久久久无码 | 亚洲va欧美va天堂v国产综合 | 无码精品人妻一区二区三区av | 图片区 小说区 区 亚洲五月 | 午夜精品一区二区三区的区别 | 又色又爽又黄的美女裸体网站 | 久久精品中文闷骚内射 | 亚洲国产精品一区二区第一页 | 中文字幕无码av波多野吉衣 | 久久久久久久女国产乱让韩 | 亚洲综合另类小说色区 | 图片小说视频一区二区 | 久久精品中文字幕大胸 | 少妇高潮喷潮久久久影院 | 午夜福利试看120秒体验区 | 伊人久久大香线焦av综合影院 | 亚洲精品午夜无码电影网 | 女人高潮内射99精品 | 少妇的肉体aa片免费 | 欧美 日韩 人妻 高清 中文 | 国产无套内射久久久国产 | 女人被男人爽到呻吟的视频 | 欧美精品无码一区二区三区 | 日本护士xxxxhd少妇 | 中文字幕无码日韩专区 | 亚洲无人区午夜福利码高清完整版 | 久久久精品人妻久久影视 | 亚洲阿v天堂在线 | 久久这里只有精品视频9 | 久久99精品国产.久久久久 | 人妻有码中文字幕在线 | 亚洲国产精品毛片av不卡在线 | 黄网在线观看免费网站 | 国精产品一区二区三区 | 亚洲日韩精品欧美一区二区 | 性欧美大战久久久久久久 | 一本久道久久综合婷婷五月 | 日韩精品无码一区二区中文字幕 | 成人精品视频一区二区 | 精品久久久中文字幕人妻 | 中文字幕人妻丝袜二区 | 国产凸凹视频一区二区 | 一本色道久久综合亚洲精品不卡 | 亚洲а∨天堂久久精品2021 | 老司机亚洲精品影院 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品久久久久9999小说 | 国产精品人人爽人人做我的可爱 | 中文字幕乱码人妻无码久久 | 欧美精品无码一区二区三区 | 日韩人妻系列无码专区 | 亚洲大尺度无码无码专区 | 中文无码成人免费视频在线观看 | 少妇被粗大的猛进出69影院 | 大肉大捧一进一出好爽视频 | 在线 国产 欧美 亚洲 天堂 | 18黄暴禁片在线观看 | 国产亚洲日韩欧美另类第八页 | 在线欧美精品一区二区三区 | 亚洲中文字幕在线无码一区二区 | 国产精品亚洲五月天高清 | 亚洲国产精品一区二区第一页 | 我要看www免费看插插视频 | www一区二区www免费 | 久久久久亚洲精品中文字幕 | 牲欲强的熟妇农村老妇女视频 | 日韩欧美中文字幕公布 | 欧美xxxx黑人又粗又长 | 水蜜桃亚洲一二三四在线 | 噜噜噜亚洲色成人网站 | 99久久精品日本一区二区免费 | 色婷婷综合中文久久一本 | 少妇性l交大片 | 扒开双腿吃奶呻吟做受视频 | 国产99久久精品一区二区 | 午夜熟女插插xx免费视频 | 色婷婷av一区二区三区之红樱桃 | 亚洲一区二区三区国产精华液 | 午夜精品一区二区三区在线观看 | 欧美日韩人成综合在线播放 | 中文字幕无码日韩专区 | 又粗又大又硬毛片免费看 | 欧美日本精品一区二区三区 | 亚洲色欲久久久综合网东京热 | 国产精品18久久久久久麻辣 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲乱亚洲乱妇50p | 无码人妻av免费一区二区三区 | 久激情内射婷内射蜜桃人妖 | 成人无码精品1区2区3区免费看 | 亚洲自偷自偷在线制服 | 日本熟妇浓毛 | 亚洲综合久久一区二区 | 强开小婷嫩苞又嫩又紧视频 | 十八禁视频网站在线观看 | 国产区女主播在线观看 | 一区二区三区高清视频一 | 国产色xx群视频射精 | 亚洲欧美日韩综合久久久 | 欧美色就是色 | 2019午夜福利不卡片在线 | 中文字幕无码日韩欧毛 | 日本肉体xxxx裸交 | 国产激情精品一区二区三区 | 性做久久久久久久久 | 中文字幕av日韩精品一区二区 | 性欧美熟妇videofreesex | 国产成人无码区免费内射一片色欲 | 激情国产av做激情国产爱 | 熟妇人妻无乱码中文字幕 | 亚洲日韩av一区二区三区中文 | 3d动漫精品啪啪一区二区中 | 精品久久久久久人妻无码中文字幕 | 精品国产成人一区二区三区 | 无码人妻出轨黑人中文字幕 | 亚洲日韩精品欧美一区二区 | 久久97精品久久久久久久不卡 | 领导边摸边吃奶边做爽在线观看 | 精品无人国产偷自产在线 | 国产精品无码久久av | 无套内谢的新婚少妇国语播放 | 精品无码av一区二区三区 | 成 人 网 站国产免费观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 牲交欧美兽交欧美 | 四虎影视成人永久免费观看视频 | 国产精品无码一区二区三区不卡 | 久久99久久99精品中文字幕 | 黑人巨大精品欧美黑寡妇 | 丰满少妇人妻久久久久久 | 欧洲精品码一区二区三区免费看 | 99视频精品全部免费免费观看 | 国产办公室秘书无码精品99 | 亚洲色成人中文字幕网站 | 亚洲成a人片在线观看日本 | 精品成人av一区二区三区 | 国产xxx69麻豆国语对白 | 成人女人看片免费视频放人 | 亚洲国产精品一区二区第一页 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 曰本女人与公拘交酡免费视频 | 成人无码影片精品久久久 | 日韩视频 中文字幕 视频一区 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲gv猛男gv无码男同 | 午夜丰满少妇性开放视频 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲精品国偷拍自产在线观看蜜桃 | 麻豆国产丝袜白领秘书在线观看 | 97人妻精品一区二区三区 | 亚洲中文字幕乱码av波多ji | 亚洲一区av无码专区在线观看 | 欧美性黑人极品hd | 少妇高潮一区二区三区99 | 亚洲一区二区三区无码久久 | 狠狠色色综合网站 | 日本一本二本三区免费 | 无码人妻精品一区二区三区不卡 | 99精品无人区乱码1区2区3区 | 国产精品无码成人午夜电影 | 日韩成人一区二区三区在线观看 | 亚洲国产精华液网站w | 亚洲精品国产第一综合99久久 | 影音先锋中文字幕无码 | 亚洲天堂2017无码 | 嫩b人妻精品一区二区三区 | 国产精品欧美成人 | 欧美精品在线观看 | 成人欧美一区二区三区黑人 | 极品嫩模高潮叫床 | 色婷婷综合中文久久一本 | 国产麻豆精品一区二区三区v视界 | 人人妻人人藻人人爽欧美一区 | 丰满人妻被黑人猛烈进入 | 99视频精品全部免费免费观看 | 亚洲va中文字幕无码久久不卡 | 成人无码视频免费播放 | 亚洲综合精品香蕉久久网 | 永久免费观看美女裸体的网站 | 国产三级精品三级男人的天堂 | 性色av无码免费一区二区三区 | 精品人妻人人做人人爽 | 久久成人a毛片免费观看网站 | 人妻aⅴ无码一区二区三区 | 亚洲精品一区二区三区在线 | 久久国产精品_国产精品 | 国产在线一区二区三区四区五区 | 欧美日韩一区二区综合 | 国产在热线精品视频 | 牲欲强的熟妇农村老妇女 | 亚洲一区二区三区在线观看网站 | 精品国偷自产在线视频 | 300部国产真实乱 | 久9re热视频这里只有精品 | 日日碰狠狠躁久久躁蜜桃 | 少妇性俱乐部纵欲狂欢电影 | 3d动漫精品啪啪一区二区中 | 国产一区二区不卡老阿姨 | 日本熟妇大屁股人妻 | 国产亚洲美女精品久久久2020 | 99久久久无码国产精品免费 | 国产在线精品一区二区高清不卡 | 水蜜桃色314在线观看 | 亚洲国产精品无码一区二区三区 | 成年女人永久免费看片 | 18精品久久久无码午夜福利 | 国产三级久久久精品麻豆三级 | 久久综合九色综合97网 | 伊在人天堂亚洲香蕉精品区 | 狠狠cao日日穞夜夜穞av | 中国女人内谢69xxxxxa片 | 国产精品-区区久久久狼 | 精品国产青草久久久久福利 | 无码一区二区三区在线观看 | 天堂亚洲2017在线观看 | 国精产品一区二区三区 | 乱人伦人妻中文字幕无码 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品a成v人在线播放 | 中文字幕av无码一区二区三区电影 | 少妇性l交大片欧洲热妇乱xxx | 欧美野外疯狂做受xxxx高潮 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲综合无码久久精品综合 | 久久综合狠狠综合久久综合88 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲欧洲日本综合aⅴ在线 | 久久亚洲日韩精品一区二区三区 | 乱码av麻豆丝袜熟女系列 | 精品国偷自产在线视频 | 国产色视频一区二区三区 | 欧美老熟妇乱xxxxx | 国产精品久久久久久久9999 | 国产一区二区三区精品视频 | 亚洲一区二区三区在线观看网站 | 成人无码视频在线观看网站 | 在线播放免费人成毛片乱码 | 午夜精品一区二区三区在线观看 | 老头边吃奶边弄进去呻吟 | 激情内射亚州一区二区三区爱妻 | 香港三级日本三级妇三级 | 免费无码av一区二区 | 一二三四社区在线中文视频 | 久久久久久久久蜜桃 | 亚洲狠狠色丁香婷婷综合 | 久久99热只有频精品8 | 人妻互换免费中文字幕 | 性欧美疯狂xxxxbbbb | 又大又黄又粗又爽的免费视频 | 蜜桃臀无码内射一区二区三区 | 欧美日韩色另类综合 | 国产九九九九九九九a片 | 一个人看的www免费视频在线观看 | 中文字幕无码av波多野吉衣 | 一二三四在线观看免费视频 | 国产午夜无码精品免费看 | av无码电影一区二区三区 | 久久亚洲国产成人精品性色 | 国产午夜亚洲精品不卡下载 | 亚洲第一无码av无码专区 | 欧美丰满熟妇xxxx性ppx人交 | 男人的天堂av网站 | 国产精品高潮呻吟av久久4虎 | 亚洲一区二区观看播放 | 亚洲一区二区三区四区 | 国产 浪潮av性色四虎 | 国产精品国产三级国产专播 | 国产精品va在线观看无码 | 成人无码视频在线观看网站 | 亚洲熟熟妇xxxx | 伊人久久大香线蕉午夜 | 欧美成人午夜精品久久久 | 久久综合狠狠综合久久综合88 | 人人妻人人澡人人爽人人精品 | 97久久精品无码一区二区 | 欧美xxxx黑人又粗又长 | 国产乡下妇女做爰 | 无码国产乱人伦偷精品视频 | 国产乱人伦av在线无码 | 娇妻被黑人粗大高潮白浆 | 任你躁国产自任一区二区三区 | 亚洲一区二区三区四区 | 亚洲经典千人经典日产 | 国产免费久久久久久无码 | а√资源新版在线天堂 | 国产成人无码a区在线观看视频app | 亚洲中文字幕无码中字 | 台湾无码一区二区 | 久久zyz资源站无码中文动漫 | 亚洲va中文字幕无码久久不卡 | 成人欧美一区二区三区黑人免费 | 色窝窝无码一区二区三区色欲 | 亚洲一区二区三区无码久久 | 国产精品国产自线拍免费软件 | 午夜福利一区二区三区在线观看 | 亚洲一区二区三区香蕉 | 国产精品多人p群无码 | 日日碰狠狠丁香久燥 | 久久久久成人片免费观看蜜芽 | 熟女少妇人妻中文字幕 | 亚洲成色在线综合网站 | 7777奇米四色成人眼影 | 欧美肥老太牲交大战 | 性欧美熟妇videofreesex | 午夜性刺激在线视频免费 | 欧美亚洲日韩国产人成在线播放 | 国产偷抇久久精品a片69 | 理论片87福利理论电影 | 无码人中文字幕 | 亚洲の无码国产の无码步美 | 欧美freesex黑人又粗又大 | 精品乱子伦一区二区三区 | 激情五月综合色婷婷一区二区 | 日韩av无码一区二区三区不卡 | 精品国产aⅴ无码一区二区 | 亚洲爆乳精品无码一区二区三区 | 嫩b人妻精品一区二区三区 | 牲欲强的熟妇农村老妇女视频 | 18禁止看的免费污网站 | 日本一卡二卡不卡视频查询 | 日韩人妻无码中文字幕视频 | 午夜丰满少妇性开放视频 | 无码av中文字幕免费放 | 欧美午夜特黄aaaaaa片 | 国产绳艺sm调教室论坛 | 中文字幕无码日韩专区 | 精品午夜福利在线观看 | 中文字幕人成乱码熟女app | 亚洲一区二区三区无码久久 | 老子影院午夜伦不卡 | 国产成人无码av在线影院 | 装睡被陌生人摸出水好爽 | 久久久婷婷五月亚洲97号色 | 中文精品久久久久人妻不卡 | 日欧一片内射va在线影院 | 大肉大捧一进一出好爽视频 | 奇米影视7777久久精品人人爽 | 久久久久久a亚洲欧洲av冫 | 精品欧美一区二区三区久久久 | 夜夜高潮次次欢爽av女 | 中文字幕日韩精品一区二区三区 | 国产va免费精品观看 | 亚洲欧洲无卡二区视頻 | 宝宝好涨水快流出来免费视频 | 欧洲极品少妇 | 日日摸日日碰夜夜爽av | 久久精品国产99久久6动漫 | 国产成人无码午夜视频在线观看 | 日韩av无码一区二区三区不卡 | 国精产品一区二区三区 | 亚洲中文字幕av在天堂 | 亚洲国产日韩a在线播放 | 久久综合给合久久狠狠狠97色 | 国产激情无码一区二区 | 亚洲国产成人a精品不卡在线 | 97久久精品无码一区二区 | 大地资源网第二页免费观看 | 亚洲色无码一区二区三区 | 无码一区二区三区在线 | 国产性生大片免费观看性 | 亚洲中文字幕乱码av波多ji | 欧美成人高清在线播放 | 日韩精品久久久肉伦网站 | 日韩亚洲欧美中文高清在线 | 日韩精品无码一本二本三本色 | 中文字幕无码日韩专区 | 男女作爱免费网站 | 国产午夜精品一区二区三区嫩草 | 亚洲色无码一区二区三区 | 国产国语老龄妇女a片 | 国产av一区二区精品久久凹凸 | 国产精品人人爽人人做我的可爱 | 麻豆蜜桃av蜜臀av色欲av | 免费国产黄网站在线观看 | 无套内谢的新婚少妇国语播放 | 亚洲区欧美区综合区自拍区 | 亚洲一区二区三区含羞草 | 久久无码专区国产精品s | 欧美丰满熟妇xxxx性ppx人交 | 国产精华av午夜在线观看 | 精品无人区无码乱码毛片国产 | 少妇性荡欲午夜性开放视频剧场 | 白嫩日本少妇做爰 | 无码人妻丰满熟妇区毛片18 | 国产成人一区二区三区在线观看 | 久久99国产综合精品 | 欧美丰满老熟妇xxxxx性 | 亚洲精品美女久久久久久久 | 激情人妻另类人妻伦 | 久久久久久久女国产乱让韩 | 鲁鲁鲁爽爽爽在线视频观看 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲成av人片在线观看无码不卡 | 无码一区二区三区在线观看 | 成熟妇人a片免费看网站 | 超碰97人人做人人爱少妇 | 亚洲成av人片在线观看无码不卡 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 熟女俱乐部五十路六十路av | 色综合久久中文娱乐网 | 亚洲欧美日韩国产精品一区二区 | 天堂在线观看www | 色噜噜亚洲男人的天堂 | 给我免费的视频在线观看 | 欧美xxxx黑人又粗又长 | 成 人影片 免费观看 | av人摸人人人澡人人超碰下载 | 男女下面进入的视频免费午夜 | 大屁股大乳丰满人妻 | 亚洲综合久久一区二区 | 亚洲伊人久久精品影院 | 无码人妻av免费一区二区三区 | 国产热a欧美热a在线视频 | 国产亚洲精品久久久久久国模美 | 国产精品久久久久影院嫩草 | 中文字幕无码人妻少妇免费 | 久久 国产 尿 小便 嘘嘘 | 欧美成人免费全部网站 | 蜜桃视频韩日免费播放 | 亚洲人成人无码网www国产 | 少妇人妻偷人精品无码视频 | 天堂在线观看www | 国产成人精品视频ⅴa片软件竹菊 | v一区无码内射国产 | 亚洲日韩av一区二区三区四区 | 成人精品视频一区二区 | 亚洲乱码日产精品bd | 蜜桃av抽搐高潮一区二区 | 一本无码人妻在中文字幕免费 | 东京热无码av男人的天堂 | 久久99久久99精品中文字幕 | 亚洲一区二区三区偷拍女厕 | 色婷婷av一区二区三区之红樱桃 | 一本久久伊人热热精品中文字幕 | 日本肉体xxxx裸交 | 午夜福利一区二区三区在线观看 | 免费无码一区二区三区蜜桃大 | 色综合久久网 | 无套内谢的新婚少妇国语播放 | 久久久国产精品无码免费专区 | 亚洲 激情 小说 另类 欧美 | 中文字幕av无码一区二区三区电影 | 嫩b人妻精品一区二区三区 | 久久精品国产大片免费观看 | 国内精品一区二区三区不卡 | 亚洲国产综合无码一区 | 亚洲成av人影院在线观看 | 久久精品中文闷骚内射 | 男人扒开女人内裤强吻桶进去 | 久久伊人色av天堂九九小黄鸭 | 日本乱人伦片中文三区 | 性啪啪chinese东北女人 | 国产做国产爱免费视频 | 人妻少妇精品无码专区二区 | 亚洲色无码一区二区三区 | 国产情侣作爱视频免费观看 | 亚洲精品久久久久avwww潮水 | 中文字幕无码日韩专区 | 98国产精品综合一区二区三区 | 欧美性猛交内射兽交老熟妇 | 亚洲综合伊人久久大杳蕉 | 亚洲男人av天堂午夜在 | 日本精品高清一区二区 | av香港经典三级级 在线 | 国产黑色丝袜在线播放 | 高潮喷水的毛片 | 漂亮人妻洗澡被公强 日日躁 | 欧洲精品码一区二区三区免费看 | 国产两女互慰高潮视频在线观看 | 99久久亚洲精品无码毛片 | 亚洲人成影院在线观看 | 国产成人精品一区二区在线小狼 | 久久无码人妻影院 | 激情内射日本一区二区三区 | 久久人人97超碰a片精品 | 最新国产麻豆aⅴ精品无码 | 亚拍精品一区二区三区探花 | 久久精品人妻少妇一区二区三区 | 免费看男女做好爽好硬视频 | 樱花草在线播放免费中文 | 玩弄人妻少妇500系列视频 | 黄网在线观看免费网站 | 曰本女人与公拘交酡免费视频 | 人妻夜夜爽天天爽三区 | 乱中年女人伦av三区 | 精品国产成人一区二区三区 | 精品偷拍一区二区三区在线看 | 国精品人妻无码一区二区三区蜜柚 | 丰满少妇弄高潮了www | 欧美放荡的少妇 | 亚洲精品一区二区三区四区五区 | 国产精品久久久久久久9999 | 波多野42部无码喷潮在线 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲中文字幕无码中字 | 国产精品99爱免费视频 | 国产精品高潮呻吟av久久4虎 | 久久精品人人做人人综合 | 兔费看少妇性l交大片免费 | yw尤物av无码国产在线观看 | 精品国精品国产自在久国产87 | 国内综合精品午夜久久资源 | 无码国产色欲xxxxx视频 | 国产精品人人爽人人做我的可爱 | 麻豆果冻传媒2021精品传媒一区下载 | 性生交片免费无码看人 | 久久午夜夜伦鲁鲁片无码免费 | 无码人中文字幕 | 国产午夜亚洲精品不卡下载 | 亚洲精品一区三区三区在线观看 | 人妻少妇精品久久 | 在线欧美精品一区二区三区 | 波多野结衣av一区二区全免费观看 | 亚洲小说春色综合另类 | 欧美人与牲动交xxxx | 清纯唯美经典一区二区 | 乌克兰少妇性做爰 | 亚洲中文字幕无码中文字在线 | 成人精品视频一区二区三区尤物 | 国产精品久久久久7777 | 人妻体内射精一区二区三四 | 欧美 丝袜 自拍 制服 另类 | 国产精品18久久久久久麻辣 | 水蜜桃亚洲一二三四在线 | 特级做a爰片毛片免费69 | 一本色道久久综合狠狠躁 | 午夜福利试看120秒体验区 | 亚洲国产日韩a在线播放 | 久久久成人毛片无码 | 真人与拘做受免费视频一 | 日本va欧美va欧美va精品 | 18精品久久久无码午夜福利 | 玩弄人妻少妇500系列视频 | 18黄暴禁片在线观看 | 免费无码的av片在线观看 | 麻豆精产国品 | 亚洲理论电影在线观看 | 亚洲中文字幕成人无码 | 色五月五月丁香亚洲综合网 | 中文字幕无码免费久久99 | 97久久精品无码一区二区 | 高潮毛片无遮挡高清免费视频 | 精品国产一区二区三区av 性色 | 人妻少妇精品视频专区 | 亚洲日韩av一区二区三区中文 | 亚洲男人av天堂午夜在 | 国产成人无码区免费内射一片色欲 | 天堂久久天堂av色综合 | 国产乱子伦视频在线播放 | 日韩欧美中文字幕在线三区 | 久久99精品久久久久久动态图 | 国产精品国产自线拍免费软件 | 无套内射视频囯产 | 国产舌乚八伦偷品w中 | 日本丰满熟妇videos | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产午夜福利亚洲第一 | 久久久久久久女国产乱让韩 | 国产在线精品一区二区三区直播 | 最新国产麻豆aⅴ精品无码 | 在线视频网站www色 | 欧美日韩色另类综合 | 国产成人无码午夜视频在线观看 | 国产精品亚洲综合色区韩国 | 午夜福利一区二区三区在线观看 | 午夜精品久久久久久久久 | 免费人成在线视频无码 | 真人与拘做受免费视频一 | 狠狠色欧美亚洲狠狠色www | 成人无码精品1区2区3区免费看 | 免费乱码人妻系列无码专区 | 免费观看激色视频网站 | 精品水蜜桃久久久久久久 | 日韩欧美中文字幕公布 | 午夜成人1000部免费视频 | 国产精品嫩草久久久久 | 人人妻人人澡人人爽欧美一区 | 99久久人妻精品免费一区 | 日日碰狠狠躁久久躁蜜桃 | 国产无av码在线观看 | 成人影院yy111111在线观看 | 亚洲国产av精品一区二区蜜芽 | 国产亚洲视频中文字幕97精品 | 亚洲国产精品无码久久久久高潮 | 亚洲自偷精品视频自拍 | 久久精品国产一区二区三区肥胖 | 伊人久久婷婷五月综合97色 | 亚洲综合另类小说色区 | 欧美精品无码一区二区三区 | 午夜不卡av免费 一本久久a久久精品vr综合 | 精品偷自拍另类在线观看 | 亚洲色成人中文字幕网站 | 色一情一乱一伦一视频免费看 | 午夜精品久久久久久久 | 亚洲精品午夜无码电影网 | 亚洲色欲色欲欲www在线 | 国产97在线 | 亚洲 | 亚洲精品综合一区二区三区在线 | 国产精品亚洲а∨无码播放麻豆 | 美女黄网站人色视频免费国产 | 思思久久99热只有频精品66 | 男女下面进入的视频免费午夜 | 99国产精品白浆在线观看免费 | 影音先锋中文字幕无码 | 亚洲成a人片在线观看无码3d | 亚洲国产精品成人久久蜜臀 | 激情爆乳一区二区三区 | 中文字幕久久久久人妻 | 人妻有码中文字幕在线 | 99久久亚洲精品无码毛片 | 久久成人a毛片免费观看网站 | 国产熟妇另类久久久久 | 中文字幕无码免费久久99 | 少妇邻居内射在线 | 5858s亚洲色大成网站www | 少妇性荡欲午夜性开放视频剧场 | 成人无码视频在线观看网站 | 欧美国产日韩亚洲中文 | 精品 日韩 国产 欧美 视频 | 欧美自拍另类欧美综合图片区 | 4hu四虎永久在线观看 | 偷窥日本少妇撒尿chinese | 亚洲中文字幕乱码av波多ji | 少妇高潮一区二区三区99 | 国产成人无码a区在线观看视频app | 精品国产成人一区二区三区 | 男人和女人高潮免费网站 | 国产sm调教视频在线观看 | 久久国产36精品色熟妇 | 在线观看免费人成视频 | 无码精品人妻一区二区三区av | 亚洲啪av永久无码精品放毛片 | 丰满人妻精品国产99aⅴ | 偷窥日本少妇撒尿chinese | 乌克兰少妇xxxx做受 | 亚洲一区二区三区无码久久 | 天堂久久天堂av色综合 | a在线观看免费网站大全 | 欧美怡红院免费全部视频 | 国内精品久久久久久中文字幕 | 日本精品久久久久中文字幕 | 粗大的内捧猛烈进出视频 | 亚洲а∨天堂久久精品2021 | 亚洲欧洲日本无在线码 | 99riav国产精品视频 | 免费观看的无遮挡av | 国产明星裸体无码xxxx视频 | 久久国产精品偷任你爽任你 | 国产精品va在线播放 | 人妻无码αv中文字幕久久琪琪布 | 精品偷自拍另类在线观看 | 国产精品亚洲综合色区韩国 | 免费网站看v片在线18禁无码 | 亚洲日韩av一区二区三区四区 | 国产香蕉97碰碰久久人人 | 18禁黄网站男男禁片免费观看 | 色欲人妻aaaaaaa无码 | 东京无码熟妇人妻av在线网址 | 午夜肉伦伦影院 | 久久久精品国产sm最大网站 | 亚洲gv猛男gv无码男同 | 欧美黑人性暴力猛交喷水 | 一本精品99久久精品77 | 中文亚洲成a人片在线观看 | 日本饥渴人妻欲求不满 | 呦交小u女精品视频 | 日产精品99久久久久久 | 亚洲精品成人福利网站 | 99精品无人区乱码1区2区3区 | 国产综合久久久久鬼色 | 夜先锋av资源网站 | 人妻插b视频一区二区三区 | 夜夜高潮次次欢爽av女 | 在线观看免费人成视频 | 男女下面进入的视频免费午夜 | 国产在线精品一区二区高清不卡 | 黑森林福利视频导航 | 亚洲中文字幕成人无码 | 在线视频网站www色 | 成人免费视频在线观看 | 粗大的内捧猛烈进出视频 | 久久国语露脸国产精品电影 | 欧美人妻一区二区三区 | 欧美日韩综合一区二区三区 | 377p欧洲日本亚洲大胆 | 少妇的肉体aa片免费 | 久久久久久a亚洲欧洲av冫 | 日日麻批免费40分钟无码 | 亚洲精品欧美二区三区中文字幕 | 图片小说视频一区二区 | 国产免费久久精品国产传媒 | 中文字幕无码av激情不卡 | 国产一区二区三区日韩精品 | 精品国产一区二区三区av 性色 | 日韩精品成人一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 强开小婷嫩苞又嫩又紧视频 | 日韩精品无码免费一区二区三区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 亚洲精品一区二区三区婷婷月 | 国产一区二区三区精品视频 | 女人被男人躁得好爽免费视频 | 日韩视频 中文字幕 视频一区 | 美女毛片一区二区三区四区 | 少妇高潮一区二区三区99 | 色婷婷av一区二区三区之红樱桃 | 无码av中文字幕免费放 | 男女作爱免费网站 | 国产成人精品久久亚洲高清不卡 | 少妇性l交大片欧洲热妇乱xxx | 亚洲区欧美区综合区自拍区 | 欧美变态另类xxxx | 国产97人人超碰caoprom | 无码成人精品区在线观看 | 精品 日韩 国产 欧美 视频 | 国产在线精品一区二区三区直播 | 国产一区二区三区日韩精品 | 亚洲理论电影在线观看 | 色欲综合久久中文字幕网 | 久久综合狠狠综合久久综合88 | 亚洲成a人一区二区三区 | 久久久成人毛片无码 | 夜夜躁日日躁狠狠久久av | 免费观看的无遮挡av | 亚洲国产精品一区二区美利坚 | 国产熟妇高潮叫床视频播放 | 精品欧洲av无码一区二区三区 | 精品人人妻人人澡人人爽人人 | 免费网站看v片在线18禁无码 | 久久久久国色av免费观看性色 | 国产一精品一av一免费 | 亚洲成色www久久网站 | 国产成人精品无码播放 | 无码播放一区二区三区 | 国产农村妇女高潮大叫 | 国产精品第一区揄拍无码 | 一本大道久久东京热无码av | 亚洲熟妇色xxxxx欧美老妇 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产精品人人妻人人爽 | 国产亚洲tv在线观看 | 美女扒开屁股让男人桶 | 九九久久精品国产免费看小说 | 综合激情五月综合激情五月激情1 | 国产亚洲精品久久久久久久久动漫 | 国模大胆一区二区三区 | 国语精品一区二区三区 | 欧美真人作爱免费视频 | 成人试看120秒体验区 | 亚洲呦女专区 | 99久久人妻精品免费二区 | 露脸叫床粗话东北少妇 | 色婷婷久久一区二区三区麻豆 | 国产人妻精品一区二区三区不卡 | 性欧美疯狂xxxxbbbb | 99精品久久毛片a片 | 亚洲综合另类小说色区 | 综合激情五月综合激情五月激情1 | 成人影院yy111111在线观看 | 中文字幕人成乱码熟女app | 久久久亚洲欧洲日产国码αv | 性生交大片免费看女人按摩摩 | 亚洲国产精品久久人人爱 | 亚洲一区二区三区偷拍女厕 | 清纯唯美经典一区二区 | 正在播放东北夫妻内射 | 少妇被黑人到高潮喷出白浆 | 亚洲欧美日韩成人高清在线一区 | 2020久久超碰国产精品最新 | av无码久久久久不卡免费网站 | 国产精品无码一区二区三区不卡 | 亚洲欧美精品aaaaaa片 | 国内综合精品午夜久久资源 | 久9re热视频这里只有精品 | 丰满妇女强制高潮18xxxx | 国产精品香蕉在线观看 | 亚洲中文字幕久久无码 | 日本乱人伦片中文三区 | 撕开奶罩揉吮奶头视频 | 国产精品久久久一区二区三区 | 一区二区传媒有限公司 | 亚洲欧洲日本无在线码 | 又湿又紧又大又爽a视频国产 | 无码av最新清无码专区吞精 | 中文字幕乱妇无码av在线 | 性啪啪chinese东北女人 | 亚洲人成网站免费播放 | 亚洲娇小与黑人巨大交 | 中文字幕人成乱码熟女app | 青青草原综合久久大伊人精品 | 又粗又大又硬毛片免费看 | 77777熟女视频在线观看 а天堂中文在线官网 | 黑人巨大精品欧美黑寡妇 | 精品无码av一区二区三区 | 亚洲中文字幕av在天堂 | 亚洲呦女专区 | 久久久久国色av免费观看性色 | 欧美性猛交xxxx富婆 | 中文字幕人妻无码一区二区三区 | 无码任你躁久久久久久久 | 久久人人爽人人爽人人片av高清 | 久久99精品国产.久久久久 | 国色天香社区在线视频 | av人摸人人人澡人人超碰下载 | 无码精品国产va在线观看dvd | 亚洲熟悉妇女xxx妇女av | 天天拍夜夜添久久精品 | 免费无码肉片在线观看 | 九九在线中文字幕无码 | 一本一道久久综合久久 | 国产精品丝袜黑色高跟鞋 | 国产精品久久久久9999小说 | 性欧美大战久久久久久久 | 精品无人区无码乱码毛片国产 | 国模大胆一区二区三区 | 亚洲s色大片在线观看 | 欧美熟妇另类久久久久久多毛 | 日本爽爽爽爽爽爽在线观看免 | 麻豆国产人妻欲求不满谁演的 | 黑人巨大精品欧美黑寡妇 | 亚洲一区二区三区在线观看网站 | 人妻熟女一区 | 国产精品久久久 | 理论片87福利理论电影 | 亚洲精品无码国产 | 免费网站看v片在线18禁无码 | 国产精品免费大片 | 国产三级久久久精品麻豆三级 | 亚洲中文字幕在线无码一区二区 | 天下第一社区视频www日本 | 欧美午夜特黄aaaaaa片 | а√天堂www在线天堂小说 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 狠狠色丁香久久婷婷综合五月 | 九月婷婷人人澡人人添人人爽 | 亚洲人成网站在线播放942 | 人妻熟女一区 | 内射老妇bbwx0c0ck | 日本高清一区免费中文视频 | 成人无码精品1区2区3区免费看 | 精品亚洲韩国一区二区三区 | 秋霞成人午夜鲁丝一区二区三区 | 欧美放荡的少妇 | 中文无码成人免费视频在线观看 | 夜先锋av资源网站 | 国产乱码精品一品二品 | 精品一区二区不卡无码av | 国产激情艳情在线看视频 | 国产尤物精品视频 | 中文无码成人免费视频在线观看 | 亚洲 另类 在线 欧美 制服 | 亚洲欧美色中文字幕在线 | 丰满妇女强制高潮18xxxx | 夜夜影院未满十八勿进 | 美女黄网站人色视频免费国产 | 国产亚洲精品久久久ai换 | 国产人妖乱国产精品人妖 | 三级4级全黄60分钟 | 精品久久久久香蕉网 | 六月丁香婷婷色狠狠久久 | aⅴ在线视频男人的天堂 | 色五月五月丁香亚洲综合网 | 好爽又高潮了毛片免费下载 | 蜜桃臀无码内射一区二区三区 | 九九热爱视频精品 | 精品一区二区三区无码免费视频 | 亚洲一区二区三区国产精华液 | 国产乱人伦偷精品视频 | 人人澡人人透人人爽 | 国产成人综合美国十次 | 狠狠躁日日躁夜夜躁2020 | 亚洲欧洲中文日韩av乱码 | 伊人久久婷婷五月综合97色 | 国产精品高潮呻吟av久久4虎 | 人人爽人人澡人人人妻 | 国产真人无遮挡作爱免费视频 | 亚洲欧洲日本综合aⅴ在线 | 草草网站影院白丝内射 | 亚洲va中文字幕无码久久不卡 | 久久久久亚洲精品中文字幕 | 奇米影视7777久久精品人人爽 | 国精品人妻无码一区二区三区蜜柚 | 天天做天天爱天天爽综合网 | 国产成人无码av在线影院 | 精品熟女少妇av免费观看 | 精品人妻人人做人人爽 | 成人免费视频在线观看 | 国产精品嫩草久久久久 | 成人精品天堂一区二区三区 | 精品国产精品久久一区免费式 | 在线播放亚洲第一字幕 | 中文字幕人妻无码一区二区三区 | 国产sm调教视频在线观看 | 影音先锋中文字幕无码 | 亚洲高清偷拍一区二区三区 | 天堂无码人妻精品一区二区三区 | 狠狠cao日日穞夜夜穞av | 在线视频网站www色 | 国产精品亚洲五月天高清 | 无码精品人妻一区二区三区av | 成人亚洲精品久久久久 | 精品久久久中文字幕人妻 | 国产成人综合色在线观看网站 | 国产精品国产三级国产专播 | 漂亮人妻洗澡被公强 日日躁 | 日韩欧美中文字幕公布 | 真人与拘做受免费视频 | 国产在热线精品视频 | 特黄特色大片免费播放器图片 | 狂野欧美性猛交免费视频 | 久久久久久亚洲精品a片成人 | 伦伦影院午夜理论片 | 日韩精品a片一区二区三区妖精 | 高清无码午夜福利视频 | 国产成人无码av片在线观看不卡 | 狠狠色欧美亚洲狠狠色www | 国产亚洲精品久久久久久国模美 | 亚洲综合在线一区二区三区 | 国产精品久久久久久久9999 | 婷婷六月久久综合丁香 | 久久久无码中文字幕久... | 国产精品无码一区二区桃花视频 | 蜜桃视频插满18在线观看 | 性生交片免费无码看人 | 美女扒开屁股让男人桶 | 国产乱人伦偷精品视频 | 中文字幕无码视频专区 | 沈阳熟女露脸对白视频 | 黄网在线观看免费网站 | 欧美老熟妇乱xxxxx | 美女张开腿让人桶 | 精品一区二区三区无码免费视频 | 欧美老妇与禽交 | 亚洲色欲色欲欲www在线 | 亚洲无人区一区二区三区 | 久久久精品欧美一区二区免费 | 国产又爽又猛又粗的视频a片 | 欧洲熟妇色 欧美 | 亚洲无人区午夜福利码高清完整版 | 久久五月精品中文字幕 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产精品办公室沙发 | 国产精品99爱免费视频 | 无码人妻少妇伦在线电影 | 亚洲成色在线综合网站 | 国产精品久久国产三级国 | 色综合天天综合狠狠爱 | 国产精品-区区久久久狼 | 人妻体内射精一区二区三四 | 欧美日本精品一区二区三区 | 国产疯狂伦交大片 | 波多野结衣 黑人 | 乌克兰少妇xxxx做受 | 国产亚av手机在线观看 | 日本www一道久久久免费榴莲 | 国产精品久久久久7777 | 亚洲精品成人av在线 | 欧美熟妇另类久久久久久多毛 | √天堂资源地址中文在线 | 精品国产一区二区三区av 性色 | 精品无码一区二区三区爱欲 | 十八禁真人啪啪免费网站 | 成人欧美一区二区三区 | 久久99精品久久久久婷婷 | 国产精品va在线观看无码 | 国产黄在线观看免费观看不卡 | 蜜桃视频插满18在线观看 | 久9re热视频这里只有精品 | 少妇激情av一区二区 | 欧美国产日韩亚洲中文 | av人摸人人人澡人人超碰下载 | 在线观看免费人成视频 | 国产成人精品必看 | 网友自拍区视频精品 | 国产精品成人av在线观看 | 国产性生交xxxxx无码 | 亚洲中文字幕av在天堂 |