久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    亚洲精品中文字幕乱码 | yw尤物av无码国产在线观看 | 欧美一区二区三区视频在线观看 | 精品久久久久久人妻无码中文字幕 | 大屁股大乳丰满人妻 | 377p欧洲日本亚洲大胆 | 国产69精品久久久久app下载 | 日韩在线不卡免费视频一区 | 少妇高潮一区二区三区99 | 18无码粉嫩小泬无套在线观看 | 欧美日本免费一区二区三区 | 日日碰狠狠躁久久躁蜜桃 | 女人被男人躁得好爽免费视频 | 在线欧美精品一区二区三区 | 色一情一乱一伦 | 无码帝国www无码专区色综合 | 两性色午夜视频免费播放 | 国内老熟妇对白xxxxhd | 日日天干夜夜狠狠爱 | 色情久久久av熟女人妻网站 | 国产在热线精品视频 | 天干天干啦夜天干天2017 | 亚洲第一无码av无码专区 | 九九久久精品国产免费看小说 | 久久久亚洲欧洲日产国码αv | 99精品国产综合久久久久五月天 | 免费国产成人高清在线观看网站 | 天堂а√在线地址中文在线 | 欧美丰满老熟妇xxxxx性 | 色诱久久久久综合网ywww | 成 人影片 免费观看 | 亚洲中文字幕无码中字 | 国内精品人妻无码久久久影院 | 日本一本二本三区免费 | 国产精品无码mv在线观看 | 国产va免费精品观看 | 麻豆国产丝袜白领秘书在线观看 | 亚洲成a人片在线观看日本 | 午夜精品久久久内射近拍高清 | 精品国产一区二区三区四区在线看 | 亚洲精品午夜无码电影网 | 亚洲 另类 在线 欧美 制服 | 乌克兰少妇xxxx做受 | 2020久久超碰国产精品最新 | 亚洲成a人片在线观看无码 | 激情爆乳一区二区三区 | 国产极品美女高潮无套在线观看 | 奇米影视7777久久精品人人爽 | 免费看少妇作爱视频 | 亚洲爆乳精品无码一区二区三区 | 国产在线aaa片一区二区99 | 红桃av一区二区三区在线无码av | 国产做国产爱免费视频 | 亚洲成熟女人毛毛耸耸多 | 性做久久久久久久免费看 | 漂亮人妻洗澡被公强 日日躁 | 曰韩无码二三区中文字幕 | 日韩欧美中文字幕公布 | 久久99精品国产麻豆 | 精品午夜福利在线观看 | 伊人久久大香线蕉亚洲 | 无码一区二区三区在线 | 娇妻被黑人粗大高潮白浆 | 欧美 亚洲 国产 另类 | 欧美日韩一区二区综合 | 亚洲 激情 小说 另类 欧美 | 又紧又大又爽精品一区二区 | 欧美日韩亚洲国产精品 | 高潮毛片无遮挡高清免费视频 | 国内精品一区二区三区不卡 | 国产内射老熟女aaaa | 欧美肥老太牲交大战 | 国产综合色产在线精品 | 99久久精品无码一区二区毛片 | 国产69精品久久久久app下载 | 欧美性黑人极品hd | 午夜福利一区二区三区在线观看 | 国产精品无码mv在线观看 | 亚洲爆乳无码专区 | 窝窝午夜理论片影院 | 精品欧美一区二区三区久久久 | 内射巨臀欧美在线视频 | 美女极度色诱视频国产 | 亚洲国产高清在线观看视频 | 国产内射爽爽大片视频社区在线 | 狠狠色噜噜狠狠狠7777奇米 | 日韩视频 中文字幕 视频一区 | 欧美丰满老熟妇xxxxx性 | 色妞www精品免费视频 | 亚洲日韩精品欧美一区二区 | 亚洲精品国产精品乱码视色 | 成人影院yy111111在线观看 | 亚洲а∨天堂久久精品2021 | 色爱情人网站 | 天天摸天天透天天添 | 亚洲一区二区三区偷拍女厕 | 丰满肥臀大屁股熟妇激情视频 | 国产香蕉尹人综合在线观看 | 色欲人妻aaaaaaa无码 | 色欲综合久久中文字幕网 | 九九久久精品国产免费看小说 | 国产av一区二区精品久久凹凸 | 色综合久久久无码中文字幕 | 国产莉萝无码av在线播放 | 欧美大屁股xxxxhd黑色 | 国产成人无码av一区二区 | 国产午夜手机精彩视频 | 无码成人精品区在线观看 | 精品无人国产偷自产在线 | 欧美成人高清在线播放 | 九九综合va免费看 | 欧美大屁股xxxxhd黑色 | 男人扒开女人内裤强吻桶进去 | 无码人妻丰满熟妇区五十路百度 | 国产精品久久久久久亚洲毛片 | 国产人妻精品一区二区三区不卡 | 老熟妇仑乱视频一区二区 | 亚洲成色www久久网站 | 荫蒂添的好舒服视频囗交 | 国产色xx群视频射精 | 国产两女互慰高潮视频在线观看 | 亚洲自偷自偷在线制服 | 亚洲a无码综合a国产av中文 | 日本肉体xxxx裸交 | 亚洲一区二区三区四区 | 特级做a爰片毛片免费69 | 国产精品18久久久久久麻辣 | 国产色视频一区二区三区 | 麻豆国产97在线 | 欧洲 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产精品亚洲综合色区韩国 | 久久精品国产99精品亚洲 | 大肉大捧一进一出视频出来呀 | 在线观看国产午夜福利片 | 欧美第一黄网免费网站 | 久久亚洲精品成人无码 | 毛片内射-百度 | 欧美性猛交内射兽交老熟妇 | 日本乱人伦片中文三区 | 色 综合 欧美 亚洲 国产 | 人妻体内射精一区二区三四 | 黑人巨大精品欧美一区二区 | 国产成人无码a区在线观看视频app | 无码av中文字幕免费放 | 精品人妻人人做人人爽夜夜爽 | 国产97色在线 | 免 | 国产成人精品一区二区在线小狼 | 99久久精品无码一区二区毛片 | 综合激情五月综合激情五月激情1 | 欧洲vodafone精品性 | 六十路熟妇乱子伦 | 国产精品亚洲五月天高清 | 性生交片免费无码看人 | 国产精品人妻一区二区三区四 | 国产精品对白交换视频 | 亚洲乱码国产乱码精品精 | 学生妹亚洲一区二区 | 国产午夜亚洲精品不卡下载 | 国产亚洲美女精品久久久2020 | 高清国产亚洲精品自在久久 | 色婷婷综合中文久久一本 | 麻豆人妻少妇精品无码专区 | 精品欧美一区二区三区久久久 | 亚洲精品一区二区三区在线 | 夜精品a片一区二区三区无码白浆 | 国产精品理论片在线观看 | 欧美国产日产一区二区 | 国产av一区二区精品久久凹凸 | 人妻少妇精品视频专区 | 中文字幕久久久久人妻 | 任你躁国产自任一区二区三区 | 无码毛片视频一区二区本码 | 久精品国产欧美亚洲色aⅴ大片 | 天堂无码人妻精品一区二区三区 | 久久久久亚洲精品中文字幕 | 在线精品国产一区二区三区 | 久久综合狠狠综合久久综合88 | 久久99精品国产.久久久久 | 精品国偷自产在线 | 成人女人看片免费视频放人 | 荫蒂添的好舒服视频囗交 | 国语自产偷拍精品视频偷 | 国产明星裸体无码xxxx视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 老子影院午夜精品无码 | 2020久久超碰国产精品最新 | 亚洲区小说区激情区图片区 | 成人无码影片精品久久久 | 色综合久久久无码中文字幕 | 精品国产一区二区三区四区 | 日本一卡2卡3卡四卡精品网站 | 亚洲日本va中文字幕 | 精品无人区无码乱码毛片国产 | 精品久久久无码人妻字幂 | 国产美女极度色诱视频www | 2020最新国产自产精品 | 夜夜影院未满十八勿进 | 国产亚洲精品久久久久久国模美 | 人人澡人人透人人爽 | 中文字幕人妻无码一夲道 | 亚洲日韩一区二区 | 久久久久亚洲精品中文字幕 | 蜜桃视频韩日免费播放 | 水蜜桃av无码 | 国产午夜无码精品免费看 | 成人综合网亚洲伊人 | 欧美黑人性暴力猛交喷水 | 久久综合九色综合欧美狠狠 | 久久97精品久久久久久久不卡 | 牲欲强的熟妇农村老妇女视频 | 亚洲性无码av中文字幕 | 久精品国产欧美亚洲色aⅴ大片 | 久久精品国产大片免费观看 | 97久久国产亚洲精品超碰热 | 欧美午夜特黄aaaaaa片 | 欧美亚洲日韩国产人成在线播放 | 国产va免费精品观看 | 亚洲精品美女久久久久久久 | 俺去俺来也www色官网 | 2019午夜福利不卡片在线 | 丝袜 中出 制服 人妻 美腿 | 无人区乱码一区二区三区 | 亚洲精品中文字幕 | 成熟妇人a片免费看网站 | 在线精品亚洲一区二区 | 丰满人妻精品国产99aⅴ | 国产一区二区三区日韩精品 | 亚洲午夜福利在线观看 | ass日本丰满熟妇pics | 欧美老妇交乱视频在线观看 | 久久五月精品中文字幕 | 亚洲午夜福利在线观看 | www成人国产高清内射 | 老司机亚洲精品影院无码 | 又粗又大又硬又长又爽 | 亚洲国产精品一区二区第一页 | 性色欲情网站iwww九文堂 | 性开放的女人aaa片 | aa片在线观看视频在线播放 | 99re在线播放 | 两性色午夜免费视频 | 少妇的肉体aa片免费 | 婷婷丁香五月天综合东京热 | 欧美亚洲国产一区二区三区 | 欧美freesex黑人又粗又大 | 国产精品亚洲а∨无码播放麻豆 | av无码久久久久不卡免费网站 | 日日橹狠狠爱欧美视频 | 精品久久久无码中文字幕 | 色窝窝无码一区二区三区色欲 | 色情久久久av熟女人妻网站 | 国产人成高清在线视频99最全资源 | 少妇性l交大片 | 久久aⅴ免费观看 | 国产精品怡红院永久免费 | 大胆欧美熟妇xx | 无码人妻丰满熟妇区毛片18 | 成年美女黄网站色大免费全看 | 久久精品人人做人人综合 | 国内精品一区二区三区不卡 | 国产精品二区一区二区aⅴ污介绍 | 蜜桃视频韩日免费播放 | 永久免费观看美女裸体的网站 | 亚洲爆乳大丰满无码专区 | 丰满岳乱妇在线观看中字无码 | 狠狠色色综合网站 | 色婷婷香蕉在线一区二区 | 蜜桃臀无码内射一区二区三区 | 国产sm调教视频在线观看 | 精品久久综合1区2区3区激情 | 最近免费中文字幕中文高清百度 | 人妻少妇被猛烈进入中文字幕 | 久久 国产 尿 小便 嘘嘘 | 乱人伦中文视频在线观看 | 亚洲狠狠婷婷综合久久 | 色婷婷综合中文久久一本 | 国产绳艺sm调教室论坛 | 成人试看120秒体验区 | 中文字幕乱妇无码av在线 | 亚洲精品国产精品乱码视色 | 亚洲国产精品无码久久久久高潮 | 亚洲精品美女久久久久久久 | 国语精品一区二区三区 | 成人精品天堂一区二区三区 | 熟妇女人妻丰满少妇中文字幕 | 亚洲国产高清在线观看视频 | 夫妻免费无码v看片 | 人人妻人人藻人人爽欧美一区 | 国产香蕉尹人综合在线观看 | 天干天干啦夜天干天2017 | 伊人久久大香线蕉午夜 | 久久无码专区国产精品s | 黑人巨大精品欧美一区二区 | www成人国产高清内射 | 成人欧美一区二区三区黑人免费 | 亚洲日韩精品欧美一区二区 | 西西人体www44rt大胆高清 | 国产精品永久免费视频 | 国产又爽又猛又粗的视频a片 | 激情国产av做激情国产爱 | 日韩欧美成人免费观看 | 麻豆国产人妻欲求不满谁演的 | 无码av最新清无码专区吞精 | 97久久精品无码一区二区 | 免费男性肉肉影院 | 青草视频在线播放 | 亚洲日本va午夜在线电影 | 无码精品国产va在线观看dvd | 亚洲精品美女久久久久久久 | 秋霞成人午夜鲁丝一区二区三区 | 国产精品无码一区二区桃花视频 | 中文字幕av日韩精品一区二区 | 久久久久人妻一区精品色欧美 | 无码精品人妻一区二区三区av | 欧洲极品少妇 | 亚洲日韩中文字幕在线播放 | 国精产品一区二区三区 | 77777熟女视频在线观看 а天堂中文在线官网 | 激情人妻另类人妻伦 | 国产人成高清在线视频99最全资源 | 婷婷六月久久综合丁香 | 国内精品人妻无码久久久影院蜜桃 | 国产成人综合色在线观看网站 | 国产无遮挡又黄又爽免费视频 | 久久久av男人的天堂 | 欧美国产亚洲日韩在线二区 | 精品久久久久久人妻无码中文字幕 | 99er热精品视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 无码人妻精品一区二区三区下载 | v一区无码内射国产 | 少妇无码av无码专区在线观看 | 波多野42部无码喷潮在线 | 人人妻人人澡人人爽人人精品 | 欧美熟妇另类久久久久久多毛 | 少妇邻居内射在线 | www成人国产高清内射 | 久久久久久久久蜜桃 | 免费乱码人妻系列无码专区 | аⅴ资源天堂资源库在线 | 无码人妻精品一区二区三区下载 | 国产精品二区一区二区aⅴ污介绍 | 久久精品国产一区二区三区肥胖 | 亚洲日本在线电影 | 欧美性猛交内射兽交老熟妇 | 亚洲综合久久一区二区 | 国产综合色产在线精品 | 国产另类ts人妖一区二区 | 色 综合 欧美 亚洲 国产 | 国产成人一区二区三区在线观看 | 图片区 小说区 区 亚洲五月 | 蜜桃视频韩日免费播放 | 亚洲色成人中文字幕网站 | 高中生自慰www网站 | 综合人妻久久一区二区精品 | 色五月丁香五月综合五月 | 亚洲综合精品香蕉久久网 | 亚洲精品成a人在线观看 | 成人免费视频视频在线观看 免费 | 午夜无码人妻av大片色欲 | 久久人人爽人人爽人人片av高清 | 久久成人a毛片免费观看网站 | 国产人妻精品一区二区三区不卡 | 成在人线av无码免观看麻豆 | 国产亚洲日韩欧美另类第八页 | 亚洲综合无码久久精品综合 | 内射欧美老妇wbb | 麻豆国产丝袜白领秘书在线观看 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲国产精品久久久久久 | 东京热男人av天堂 | 无码吃奶揉捏奶头高潮视频 | 网友自拍区视频精品 | 国产美女极度色诱视频www | 黑人巨大精品欧美黑寡妇 | 欧美人与禽猛交狂配 | 久久久久免费看成人影片 | 玩弄少妇高潮ⅹxxxyw | 国产网红无码精品视频 | 娇妻被黑人粗大高潮白浆 | 亚洲一区二区三区偷拍女厕 | 国产av一区二区精品久久凹凸 | 亚洲自偷精品视频自拍 | 性开放的女人aaa片 | 国产香蕉97碰碰久久人人 | 国产特级毛片aaaaaaa高清 | 天堂а√在线地址中文在线 | 无码国模国产在线观看 | 水蜜桃av无码 | 色综合天天综合狠狠爱 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 纯爱无遮挡h肉动漫在线播放 | 在线欧美精品一区二区三区 | 国产特级毛片aaaaaaa高清 | 成人免费视频一区二区 | 久久国内精品自在自线 | 国内精品人妻无码久久久影院 | 无码人妻黑人中文字幕 | 丰满少妇弄高潮了www | 亚洲性无码av中文字幕 | 在线亚洲高清揄拍自拍一品区 | 精品无码一区二区三区爱欲 | 国产黑色丝袜在线播放 | 九九久久精品国产免费看小说 | 中文字幕无码免费久久9一区9 | 久久精品国产精品国产精品污 | 亚洲一区av无码专区在线观看 | 成 人 网 站国产免费观看 | a国产一区二区免费入口 | 日本爽爽爽爽爽爽在线观看免 | 成人动漫在线观看 | 欧美freesex黑人又粗又大 | 国产精品怡红院永久免费 | 日日摸夜夜摸狠狠摸婷婷 | 在线看片无码永久免费视频 | 曰本女人与公拘交酡免费视频 | 日本成熟视频免费视频 | 色综合久久久无码网中文 | 天海翼激烈高潮到腰振不止 | 国产口爆吞精在线视频 | 久久久婷婷五月亚洲97号色 | 国产精品无码久久av | 亚洲春色在线视频 | 日韩精品一区二区av在线 | 在线观看国产午夜福利片 | 一本一道久久综合久久 | 人人妻人人澡人人爽欧美精品 | 国产色在线 | 国产 | 色噜噜亚洲男人的天堂 | 天堂在线观看www | 荫蒂被男人添的好舒服爽免费视频 | 日本精品高清一区二区 | 中文字幕中文有码在线 | 国产精品亚洲综合色区韩国 | 永久免费观看美女裸体的网站 | 亚洲日韩av一区二区三区中文 | 成人精品天堂一区二区三区 | 国产精品亚洲五月天高清 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲人交乣女bbw | 2019午夜福利不卡片在线 | 亚洲另类伦春色综合小说 | 国产成人综合在线女婷五月99播放 | 精品一二三区久久aaa片 | 亚洲成av人片天堂网无码】 | 亚洲成av人片天堂网无码】 | 丰满岳乱妇在线观看中字无码 | 国产极品美女高潮无套在线观看 | 国产超级va在线观看视频 | 婷婷丁香六月激情综合啪 | 综合网日日天干夜夜久久 | 97无码免费人妻超级碰碰夜夜 | 99麻豆久久久国产精品免费 | 十八禁真人啪啪免费网站 | 丝袜 中出 制服 人妻 美腿 | 国产精品-区区久久久狼 | 性色av无码免费一区二区三区 | 水蜜桃av无码 | 久久亚洲a片com人成 | 水蜜桃色314在线观看 | 在线播放免费人成毛片乱码 | 国产人妻久久精品二区三区老狼 | 婷婷色婷婷开心五月四房播播 | 久久综合激激的五月天 | 性生交大片免费看女人按摩摩 | 一本色道久久综合亚洲精品不卡 | 日日橹狠狠爱欧美视频 | 大胆欧美熟妇xx | 国产精品亚洲一区二区三区喷水 | 99久久人妻精品免费一区 | 亚洲国产欧美在线成人 | 精品国产成人一区二区三区 | 久久无码中文字幕免费影院蜜桃 | 人妻中文无码久热丝袜 | 国产又爽又黄又刺激的视频 | 国产精品99久久精品爆乳 | 国产激情无码一区二区app | 国产精品美女久久久网av | 中文字幕无线码免费人妻 | 欧美肥老太牲交大战 | 大地资源中文第3页 | 熟妇女人妻丰满少妇中文字幕 | 丰腴饱满的极品熟妇 | aⅴ亚洲 日韩 色 图网站 播放 | 无遮挡国产高潮视频免费观看 | 99久久精品国产一区二区蜜芽 | 在线精品亚洲一区二区 | 无码精品人妻一区二区三区av | 亚洲成av人影院在线观看 | 激情内射亚州一区二区三区爱妻 | 国产午夜无码精品免费看 | 精品无码国产自产拍在线观看蜜 | 国产精品久久久午夜夜伦鲁鲁 | 成人无码精品1区2区3区免费看 | 久久综合给久久狠狠97色 | 久久亚洲a片com人成 | 99麻豆久久久国产精品免费 | 日本一卡2卡3卡四卡精品网站 | 国产精品欧美成人 | 精品国产一区二区三区av 性色 | 久久精品中文字幕大胸 | 人人妻人人澡人人爽欧美一区九九 | 中文字幕人妻无码一区二区三区 | 亚洲爆乳大丰满无码专区 | 成人免费无码大片a毛片 | 成熟妇人a片免费看网站 | 国产乱人伦偷精品视频 | 久精品国产欧美亚洲色aⅴ大片 | 中文字幕无码乱人伦 | 天堂无码人妻精品一区二区三区 | 无码福利日韩神码福利片 | 国产精品国产自线拍免费软件 | 成人精品天堂一区二区三区 | 无遮挡国产高潮视频免费观看 | 日本大香伊一区二区三区 | 亚洲精品www久久久 | 亚洲の无码国产の无码影院 | 一本久久a久久精品亚洲 | 免费无码一区二区三区蜜桃大 | 久久www免费人成人片 | 内射后入在线观看一区 | 国产免费久久久久久无码 | 无码任你躁久久久久久久 | 亚洲中文字幕无码一久久区 | 激情国产av做激情国产爱 | 久久久精品成人免费观看 | 女人被男人躁得好爽免费视频 | 精品人人妻人人澡人人爽人人 | 精品久久综合1区2区3区激情 | 无码精品国产va在线观看dvd | 国产电影无码午夜在线播放 | 国产免费久久精品国产传媒 | 亚洲色无码一区二区三区 | 日本大乳高潮视频在线观看 | 99er热精品视频 | 亚洲精品国产精品乱码不卡 | 成人一区二区免费视频 | 久在线观看福利视频 | 国产sm调教视频在线观看 | 无码人妻av免费一区二区三区 | 国产午夜手机精彩视频 | 内射老妇bbwx0c0ck | 色噜噜亚洲男人的天堂 | 中文字幕乱码中文乱码51精品 | 日日天干夜夜狠狠爱 | 成年美女黄网站色大免费视频 | 亚洲精品一区二区三区在线 | 大胆欧美熟妇xx | 无码人妻精品一区二区三区不卡 | 人人爽人人澡人人人妻 | 又黄又爽又色的视频 | 亚洲综合精品香蕉久久网 | 乱码av麻豆丝袜熟女系列 | 久久国产36精品色熟妇 | 精品成人av一区二区三区 | 福利一区二区三区视频在线观看 | 97久久精品无码一区二区 | 久久精品女人天堂av免费观看 | 国产麻豆精品一区二区三区v视界 | 国产熟女一区二区三区四区五区 | 无码人妻久久一区二区三区不卡 | 色欲综合久久中文字幕网 | 又紧又大又爽精品一区二区 | 久久久久亚洲精品中文字幕 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲爆乳精品无码一区二区三区 | 无套内谢的新婚少妇国语播放 | 国产精品亚洲а∨无码播放麻豆 | 极品嫩模高潮叫床 | 日产精品99久久久久久 | 少妇被粗大的猛进出69影院 | 狠狠色欧美亚洲狠狠色www | 未满小14洗澡无码视频网站 | 爆乳一区二区三区无码 | 久久五月精品中文字幕 | 日韩在线不卡免费视频一区 | 无码福利日韩神码福利片 | 1000部夫妻午夜免费 | 日韩人妻系列无码专区 | 精品人妻人人做人人爽 | 国产九九九九九九九a片 | 日本肉体xxxx裸交 | 俄罗斯老熟妇色xxxx | 一个人看的视频www在线 | 亚洲国产精品无码一区二区三区 | 日韩亚洲欧美精品综合 | 精品久久久无码中文字幕 | 成人综合网亚洲伊人 | 任你躁国产自任一区二区三区 | 自拍偷自拍亚洲精品被多人伦好爽 | 久久国产精品萌白酱免费 | 亚洲乱码日产精品bd | 成人亚洲精品久久久久 | 荫蒂添的好舒服视频囗交 | 日韩在线不卡免费视频一区 | 一本色道久久综合亚洲精品不卡 | 久久久久成人精品免费播放动漫 | 男人和女人高潮免费网站 | 亚洲综合色区中文字幕 | 国产成人精品必看 | 精品国产精品久久一区免费式 | 色婷婷久久一区二区三区麻豆 | 日本精品久久久久中文字幕 | 少妇厨房愉情理9仑片视频 | 国产精品亚洲五月天高清 | 日韩欧美中文字幕公布 | 99精品国产综合久久久久五月天 | 欧美熟妇另类久久久久久不卡 | 亚洲日韩一区二区三区 | 一个人看的www免费视频在线观看 | 久久五月精品中文字幕 | 欧美成人家庭影院 | 国产人妻精品午夜福利免费 | 伊人久久大香线蕉亚洲 | 亚洲国产av精品一区二区蜜芽 | 日产国产精品亚洲系列 | 一本精品99久久精品77 | 欧美肥老太牲交大战 | 欧美自拍另类欧美综合图片区 | 国产精品-区区久久久狼 | 久久午夜无码鲁丝片 | 十八禁视频网站在线观看 | 久久zyz资源站无码中文动漫 | yw尤物av无码国产在线观看 | 国产亲子乱弄免费视频 | 中文字幕无码日韩欧毛 | 精品国精品国产自在久国产87 | 无码午夜成人1000部免费视频 | 国产激情精品一区二区三区 | a片在线免费观看 | 东京一本一道一二三区 | 中文字幕无码乱人伦 | 国产黑色丝袜在线播放 | 国产口爆吞精在线视频 | 久久国产自偷自偷免费一区调 | 清纯唯美经典一区二区 | 97无码免费人妻超级碰碰夜夜 | 久久精品国产日本波多野结衣 | 一区二区三区乱码在线 | 欧洲 | av在线亚洲欧洲日产一区二区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 全黄性性激高免费视频 | 精品久久久中文字幕人妻 | 婷婷色婷婷开心五月四房播播 | 日韩精品成人一区二区三区 | 中文字幕人妻丝袜二区 | 成人片黄网站色大片免费观看 | 亚洲精品久久久久久一区二区 | 亚洲午夜久久久影院 | 久久久精品国产sm最大网站 | 麻豆人妻少妇精品无码专区 | 精品少妇爆乳无码av无码专区 | 久久99精品国产麻豆蜜芽 | 好爽又高潮了毛片免费下载 | 一二三四社区在线中文视频 | 国产午夜无码精品免费看 | 欧美精品在线观看 | 精品国产福利一区二区 | 天天躁日日躁狠狠躁免费麻豆 | 久久国产自偷自偷免费一区调 | 熟妇人妻无乱码中文字幕 | 精品国产一区av天美传媒 | 成在人线av无码免观看麻豆 | 亚洲欧美色中文字幕在线 | 欧美xxxx黑人又粗又长 | 偷窥日本少妇撒尿chinese | 国产精品沙发午睡系列 | 在线精品国产一区二区三区 | 欧美成人家庭影院 | 久久久久久九九精品久 | 欧美freesex黑人又粗又大 | 亚洲综合久久一区二区 | 精品国产av色一区二区深夜久久 | 成人欧美一区二区三区 | 国产午夜无码精品免费看 | 影音先锋中文字幕无码 | 欧美激情一区二区三区成人 | 内射巨臀欧美在线视频 | 久久精品国产99久久6动漫 | 精品国产av色一区二区深夜久久 | 人人澡人人妻人人爽人人蜜桃 | 高清国产亚洲精品自在久久 | 少妇人妻偷人精品无码视频 | 中文字幕+乱码+中文字幕一区 | 国产精品久久精品三级 | 人人澡人人透人人爽 | 在教室伦流澡到高潮hnp视频 | 亚洲人成无码网www | 久久国内精品自在自线 | 久久久精品成人免费观看 | 在线精品国产一区二区三区 | 网友自拍区视频精品 | 久久国语露脸国产精品电影 | 久久综合网欧美色妞网 | 久久人人97超碰a片精品 | 又大又硬又爽免费视频 | 福利一区二区三区视频在线观看 | 动漫av一区二区在线观看 | 亚洲欧美日韩综合久久久 | 色窝窝无码一区二区三区色欲 | av无码久久久久不卡免费网站 | 中文字幕中文有码在线 | 久久久久人妻一区精品色欧美 | 国产成人一区二区三区在线观看 | 人妻少妇精品久久 | 天天综合网天天综合色 | 亚洲精品成人福利网站 | 亚洲男人av天堂午夜在 | 国产真实伦对白全集 | 蜜臀av无码人妻精品 | 巨爆乳无码视频在线观看 | 亚洲精品美女久久久久久久 | 国产精品自产拍在线观看 | 国产精品人人妻人人爽 | 日日鲁鲁鲁夜夜爽爽狠狠 | 欧美熟妇另类久久久久久不卡 | 国产精品igao视频网 | 午夜精品久久久久久久久 | 2019nv天堂香蕉在线观看 | 老司机亚洲精品影院无码 | 午夜精品久久久久久久 | 青青草原综合久久大伊人精品 | 国产人妻人伦精品 | 久久久精品456亚洲影院 | 三级4级全黄60分钟 | 国产一区二区三区四区五区加勒比 | 国产一区二区三区四区五区加勒比 | 亚洲午夜久久久影院 | 欧美人与物videos另类 | 亚洲 日韩 欧美 成人 在线观看 | 久久精品女人天堂av免费观看 | 牛和人交xxxx欧美 | 国产三级精品三级男人的天堂 | 国产精品多人p群无码 | 夜夜夜高潮夜夜爽夜夜爰爰 | 天天av天天av天天透 | 欧美丰满熟妇xxxx性ppx人交 | 久久精品中文字幕大胸 | 国产尤物精品视频 | 乱人伦人妻中文字幕无码久久网 | 久久综合狠狠综合久久综合88 | 蜜桃无码一区二区三区 | 久久国产精品萌白酱免费 | 久久综合给久久狠狠97色 | 无码任你躁久久久久久久 | 国产熟妇高潮叫床视频播放 | 国产激情无码一区二区app | 中国女人内谢69xxxxxa片 | 日本www一道久久久免费榴莲 | 国产97人人超碰caoprom | 老司机亚洲精品影院 | 色欲人妻aaaaaaa无码 | 国产精品久久久久影院嫩草 | 成人免费视频视频在线观看 免费 | 亚洲中文字幕在线观看 | 欧美乱妇无乱码大黄a片 | 国産精品久久久久久久 | 国产 浪潮av性色四虎 | 国产成人精品久久亚洲高清不卡 | 亚欧洲精品在线视频免费观看 | 免费无码一区二区三区蜜桃大 | 波多野结衣 黑人 | 中文字幕乱妇无码av在线 | 亚洲乱亚洲乱妇50p | 亚洲а∨天堂久久精品2021 | 日韩欧美群交p片內射中文 | 国产精品久久国产精品99 | 野外少妇愉情中文字幕 | 18禁黄网站男男禁片免费观看 | а天堂中文在线官网 | 精品人人妻人人澡人人爽人人 | 水蜜桃亚洲一二三四在线 | 高清无码午夜福利视频 | 欧美人妻一区二区三区 | 日韩亚洲欧美中文高清在线 | 亚洲国产av美女网站 | 亚洲综合另类小说色区 | 又粗又大又硬又长又爽 | 亚洲爆乳精品无码一区二区三区 | 精品偷自拍另类在线观看 | 亚洲精品久久久久久久久久久 | 久久久亚洲欧洲日产国码αv | 97精品国产97久久久久久免费 | 国产在线精品一区二区三区直播 | 国产sm调教视频在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 精品国精品国产自在久国产87 | 无码午夜成人1000部免费视频 | 亚洲国产一区二区三区在线观看 | 国产午夜亚洲精品不卡下载 | 俺去俺来也www色官网 | 女人被爽到呻吟gif动态图视看 | 中文字幕乱码中文乱码51精品 | 亚洲综合伊人久久大杳蕉 | 国产内射爽爽大片视频社区在线 | 最近免费中文字幕中文高清百度 | 久久久久久久女国产乱让韩 | 久久综合给久久狠狠97色 | 丝袜人妻一区二区三区 | 国产情侣作爱视频免费观看 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 永久免费精品精品永久-夜色 | 最新国产麻豆aⅴ精品无码 | 中文字幕无线码 | 亚洲日韩精品欧美一区二区 | 久久天天躁狠狠躁夜夜免费观看 | 国内精品一区二区三区不卡 | 黄网在线观看免费网站 | 在线播放无码字幕亚洲 | 午夜免费福利小电影 | 精品国产aⅴ无码一区二区 | 国产猛烈高潮尖叫视频免费 | 中文字幕人成乱码熟女app | 欧美野外疯狂做受xxxx高潮 | 天堂无码人妻精品一区二区三区 | 国产成人人人97超碰超爽8 | 丰满人妻被黑人猛烈进入 | 日本精品人妻无码77777 天堂一区人妻无码 | 少妇人妻av毛片在线看 | 欧美兽交xxxx×视频 | 久久久中文字幕日本无吗 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国内丰满熟女出轨videos | 永久免费观看国产裸体美女 | 99视频精品全部免费免费观看 | 老熟妇仑乱视频一区二区 | 麻豆蜜桃av蜜臀av色欲av | 精品偷自拍另类在线观看 | www国产亚洲精品久久久日本 | 国产av无码专区亚洲awww | 99久久人妻精品免费二区 | 5858s亚洲色大成网站www | 蜜臀av无码人妻精品 | 性欧美videos高清精品 | 中文字幕 人妻熟女 | 国产香蕉尹人视频在线 | 最新国产乱人伦偷精品免费网站 | 亚洲一区二区观看播放 | 亚洲va中文字幕无码久久不卡 | 女人被爽到呻吟gif动态图视看 | 国产av一区二区精品久久凹凸 | 2020久久超碰国产精品最新 | 国产网红无码精品视频 | 一二三四在线观看免费视频 | 成人一在线视频日韩国产 | 久久久久亚洲精品中文字幕 | 亚洲а∨天堂久久精品2021 | 扒开双腿吃奶呻吟做受视频 | 国产精品igao视频网 | 国产另类ts人妖一区二区 | 性做久久久久久久久 | 精品国产av色一区二区深夜久久 | 亚洲爆乳精品无码一区二区三区 | 天天躁日日躁狠狠躁免费麻豆 | 欧美兽交xxxx×视频 | 亚洲欧美综合区丁香五月小说 | 久久综合网欧美色妞网 | 中文精品久久久久人妻不卡 | 麻豆蜜桃av蜜臀av色欲av | 国产av剧情md精品麻豆 | 色婷婷久久一区二区三区麻豆 | 伊人久久大香线蕉午夜 | 内射老妇bbwx0c0ck | 国产成人精品无码播放 | 免费男性肉肉影院 | 久久aⅴ免费观看 | 亚洲国产午夜精品理论片 | 少妇性俱乐部纵欲狂欢电影 | 国产成人午夜福利在线播放 | 动漫av一区二区在线观看 | 欧美三级不卡在线观看 | 波多野42部无码喷潮在线 | 成人毛片一区二区 | 无码人妻精品一区二区三区不卡 | 婷婷丁香六月激情综合啪 | 无遮无挡爽爽免费视频 | 熟女俱乐部五十路六十路av | 无码av岛国片在线播放 | 亚洲一区二区三区四区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 中文字幕 人妻熟女 | 亚洲日韩中文字幕在线播放 | 人人妻人人澡人人爽人人精品浪潮 | 国产农村乱对白刺激视频 | 性欧美熟妇videofreesex | 久久久久久国产精品无码下载 | 日日摸日日碰夜夜爽av | 色婷婷综合中文久久一本 | 我要看www免费看插插视频 | 亚洲国产精品一区二区美利坚 | 亚洲一区二区三区 | 精品国产一区二区三区四区在线看 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲日韩中文字幕在线播放 | 性欧美牲交在线视频 | 内射老妇bbwx0c0ck | 欧美老人巨大xxxx做受 | 麻豆国产人妻欲求不满谁演的 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 在线成人www免费观看视频 | 又粗又大又硬又长又爽 | 精品偷自拍另类在线观看 | 无码一区二区三区在线观看 | 无码国产色欲xxxxx视频 | 久久综合给合久久狠狠狠97色 | 丝袜 中出 制服 人妻 美腿 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲熟妇色xxxxx欧美老妇 | 兔费看少妇性l交大片免费 | 黑人大群体交免费视频 | 精品久久久无码中文字幕 | 在线精品亚洲一区二区 | 亚洲一区二区三区偷拍女厕 | 国产九九九九九九九a片 | 久久久久久久久蜜桃 | 欧洲vodafone精品性 | 人人妻人人澡人人爽欧美一区九九 | 永久免费观看美女裸体的网站 | 久久久精品人妻久久影视 | 国产真实伦对白全集 | 狠狠色欧美亚洲狠狠色www | 国产欧美亚洲精品a | 国产成人精品久久亚洲高清不卡 | 国产农村妇女高潮大叫 | 窝窝午夜理论片影院 | 中文字幕日韩精品一区二区三区 | 东京无码熟妇人妻av在线网址 | 国产亚洲美女精品久久久2020 | 久青草影院在线观看国产 | 久久久中文久久久无码 | 欧美精品一区二区精品久久 | 精品人妻人人做人人爽 | 久久国产36精品色熟妇 | 免费网站看v片在线18禁无码 | 久久99精品久久久久婷婷 | 国产偷抇久久精品a片69 | 国产人妻精品午夜福利免费 | 国产精品久久国产三级国 | 久久午夜夜伦鲁鲁片无码免费 | 少妇一晚三次一区二区三区 | 国産精品久久久久久久 | 性色欲情网站iwww九文堂 | 夜精品a片一区二区三区无码白浆 | 国产成人午夜福利在线播放 | 欧美xxxxx精品 | 无码人妻精品一区二区三区下载 | 美女扒开屁股让男人桶 | 亚洲国产精华液网站w | 国产精品无码久久av | 国产色视频一区二区三区 | 一二三四社区在线中文视频 | 欧洲美熟女乱又伦 | 亚洲第一无码av无码专区 | 一本色道婷婷久久欧美 | 精品偷拍一区二区三区在线看 | 国产区女主播在线观看 | 亚洲小说图区综合在线 | 99久久99久久免费精品蜜桃 | 亚洲国产av美女网站 | 波多野结衣 黑人 | 中文字幕乱码中文乱码51精品 | 熟妇人妻中文av无码 | 午夜熟女插插xx免费视频 | 欧美老妇与禽交 | 中文无码成人免费视频在线观看 | 国产欧美亚洲精品a | 婷婷丁香六月激情综合啪 | 成人免费视频在线观看 | 丰满少妇弄高潮了www | 中文字幕亚洲情99在线 | 四虎影视成人永久免费观看视频 | 波多野结衣av一区二区全免费观看 | 成人三级无码视频在线观看 | 澳门永久av免费网站 | 亚洲精品成a人在线观看 | 国产人妻人伦精品 | 欧美老妇交乱视频在线观看 | 亚洲国产精品一区二区第一页 | 欧美国产日产一区二区 | 亚洲国产精品一区二区第一页 | 久久99精品国产.久久久久 | 国产97人人超碰caoprom | 亚洲精品国偷拍自产在线麻豆 | 真人与拘做受免费视频一 | 久9re热视频这里只有精品 | 欧美成人午夜精品久久久 | 亚洲精品无码人妻无码 | av无码久久久久不卡免费网站 | 中文字幕日产无线码一区 | 色一情一乱一伦一区二区三欧美 | 成人欧美一区二区三区黑人 | 久热国产vs视频在线观看 | 麻豆国产97在线 | 欧洲 | 久激情内射婷内射蜜桃人妖 | 国产偷抇久久精品a片69 | 色窝窝无码一区二区三区色欲 | 色一情一乱一伦一区二区三欧美 | 亚洲小说春色综合另类 | 国产精品美女久久久网av | 日本熟妇乱子伦xxxx | 精品日本一区二区三区在线观看 | 国产无遮挡又黄又爽又色 | 日日麻批免费40分钟无码 | 日韩av无码一区二区三区不卡 | 色婷婷av一区二区三区之红樱桃 | 少女韩国电视剧在线观看完整 | 丰满人妻翻云覆雨呻吟视频 | 国产麻豆精品一区二区三区v视界 | 在线观看免费人成视频 | 沈阳熟女露脸对白视频 | 国产美女精品一区二区三区 | www成人国产高清内射 | 亚洲综合在线一区二区三区 | 粉嫩少妇内射浓精videos | 99久久人妻精品免费二区 | 波多野结衣一区二区三区av免费 | 亚洲大尺度无码无码专区 | 国产人妖乱国产精品人妖 | 精品水蜜桃久久久久久久 | 欧美 丝袜 自拍 制服 另类 | 日韩欧美中文字幕在线三区 | 乱中年女人伦av三区 | 青青青手机频在线观看 | 国产乱人无码伦av在线a | 全黄性性激高免费视频 | 亚洲综合精品香蕉久久网 | 97久久超碰中文字幕 | 日日橹狠狠爱欧美视频 | 亚洲性无码av中文字幕 | 一本大道久久东京热无码av | 对白脏话肉麻粗话av | 人人超人人超碰超国产 | 国产亚洲精品久久久久久久久动漫 | 亚洲日本va中文字幕 | 一区二区三区乱码在线 | 欧洲 | 日日噜噜噜噜夜夜爽亚洲精品 | a在线亚洲男人的天堂 | 色综合久久久久综合一本到桃花网 | 麻豆国产人妻欲求不满 | 亚洲精品午夜无码电影网 | 亚洲乱码中文字幕在线 | 四虎国产精品免费久久 | 免费观看的无遮挡av | a在线观看免费网站大全 | 日产精品高潮呻吟av久久 | 国产精品多人p群无码 | √天堂中文官网8在线 | 精品人妻中文字幕有码在线 | 中国大陆精品视频xxxx | 天堂а√在线中文在线 | 青草视频在线播放 | 成人无码影片精品久久久 | 成人欧美一区二区三区黑人 | 天天综合网天天综合色 | 国产精品亚洲一区二区三区喷水 | 色综合天天综合狠狠爱 | 国产午夜精品一区二区三区嫩草 | 精品国产乱码久久久久乱码 | 无码人妻久久一区二区三区不卡 | 亚洲日本va午夜在线电影 | 亚洲 激情 小说 另类 欧美 | 爽爽影院免费观看 | 欧美怡红院免费全部视频 | 婷婷六月久久综合丁香 | 少妇人妻偷人精品无码视频 | 亚洲精品无码人妻无码 | 亚洲国产精品无码一区二区三区 | 图片区 小说区 区 亚洲五月 | 久久国产劲爆∧v内射 | 久久99精品国产麻豆 | 奇米影视7777久久精品人人爽 | 99久久人妻精品免费二区 | 日本一卡二卡不卡视频查询 | 国产97人人超碰caoprom | 欧美性猛交xxxx富婆 | 丰满人妻翻云覆雨呻吟视频 | 免费乱码人妻系列无码专区 | 在线精品亚洲一区二区 | 狠狠色丁香久久婷婷综合五月 | 荫蒂添的好舒服视频囗交 | 精品aⅴ一区二区三区 | 我要看www免费看插插视频 | 国产精品-区区久久久狼 | 天天爽夜夜爽夜夜爽 | 在线a亚洲视频播放在线观看 | 18黄暴禁片在线观看 | 性色欲网站人妻丰满中文久久不卡 | aⅴ亚洲 日韩 色 图网站 播放 | 岛国片人妻三上悠亚 | 暴力强奷在线播放无码 | 男女作爱免费网站 | 午夜男女很黄的视频 | 欧洲欧美人成视频在线 | 国产亚洲精品久久久久久 | 久久无码人妻影院 | 久久久精品人妻久久影视 | 免费无码午夜福利片69 | 乱人伦人妻中文字幕无码 | 亚洲精品久久久久avwww潮水 | 欧美 亚洲 国产 另类 | 国产午夜亚洲精品不卡下载 | 妺妺窝人体色www在线小说 | 亚洲国产精品无码一区二区三区 | 撕开奶罩揉吮奶头视频 | 波多野结衣高清一区二区三区 | 国产办公室秘书无码精品99 | 亚洲熟悉妇女xxx妇女av | 国内精品人妻无码久久久影院 | 色五月五月丁香亚洲综合网 | www国产亚洲精品久久久日本 | 国产97在线 | 亚洲 | 久久天天躁狠狠躁夜夜免费观看 | 国产午夜无码视频在线观看 | 伊人色综合久久天天小片 | 内射欧美老妇wbb | 免费人成在线观看网站 | 久久亚洲中文字幕精品一区 | 图片小说视频一区二区 | 久久国产自偷自偷免费一区调 | 国产成人无码av在线影院 | 少妇厨房愉情理9仑片视频 | 精品国产福利一区二区 | 国产人成高清在线视频99最全资源 | 国产综合久久久久鬼色 | 伊人久久大香线焦av综合影院 | 中文字幕精品av一区二区五区 | 久久天天躁夜夜躁狠狠 | 美女张开腿让人桶 | 露脸叫床粗话东北少妇 | 久久久久免费精品国产 | 内射老妇bbwx0c0ck | 国产精品理论片在线观看 | 成人精品视频一区二区三区尤物 | 精品国产一区二区三区四区在线看 | 亚洲小说春色综合另类 | 久久久久av无码免费网 | 中文精品无码中文字幕无码专区 | 狠狠cao日日穞夜夜穞av | 久在线观看福利视频 | 精品无码国产一区二区三区av | 夜夜夜高潮夜夜爽夜夜爰爰 | 久久久久人妻一区精品色欧美 | 曰韩无码二三区中文字幕 | 欧美日韩久久久精品a片 | 1000部啪啪未满十八勿入下载 | 午夜肉伦伦影院 | 欧美日韩亚洲国产精品 | 人妻夜夜爽天天爽三区 | 亚洲自偷自拍另类第1页 | 精品少妇爆乳无码av无码专区 | 国产无遮挡又黄又爽又色 | 亚洲成在人网站无码天堂 | 四十如虎的丰满熟妇啪啪 | 亚洲爆乳大丰满无码专区 | 丁香啪啪综合成人亚洲 | 久久久久久久女国产乱让韩 | 色老头在线一区二区三区 | 玩弄中年熟妇正在播放 | 55夜色66夜色国产精品视频 | 亚洲一区av无码专区在线观看 | 成人欧美一区二区三区 | 久久久久国色av免费观看性色 | 伊人久久大香线蕉av一区二区 | 色婷婷综合激情综在线播放 | 色诱久久久久综合网ywww | 国产精品亚洲lv粉色 | 国产区女主播在线观看 | 亚洲成熟女人毛毛耸耸多 | 大地资源网第二页免费观看 | 日日碰狠狠躁久久躁蜜桃 | 99视频精品全部免费免费观看 | 国产亚洲精品久久久久久久久动漫 | 成人动漫在线观看 | 无码人妻久久一区二区三区不卡 | 国产网红无码精品视频 | 捆绑白丝粉色jk震动捧喷白浆 | 国语自产偷拍精品视频偷 | 国内精品人妻无码久久久影院蜜桃 | 久久99精品久久久久久动态图 | 国产深夜福利视频在线 | 亚洲第一无码av无码专区 | 亚洲色大成网站www国产 | 综合人妻久久一区二区精品 | 日产精品高潮呻吟av久久 | 国产精品资源一区二区 | 免费无码的av片在线观看 | 婷婷六月久久综合丁香 | 中文字幕人妻无码一区二区三区 | 精品日本一区二区三区在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 精品成在人线av无码免费看 | 国产又爽又黄又刺激的视频 | 亚洲一区二区三区在线观看网站 | 日韩在线不卡免费视频一区 | 国产口爆吞精在线视频 | 国产精品.xx视频.xxtv | 人人妻人人澡人人爽精品欧美 | 亚洲人成人无码网www国产 | 蜜桃视频插满18在线观看 | 亚洲日韩av一区二区三区四区 | 18禁黄网站男男禁片免费观看 | 亚洲国产高清在线观看视频 | 精品国产青草久久久久福利 | 丰满岳乱妇在线观看中字无码 | 99久久久国产精品无码免费 | 国产美女精品一区二区三区 | 国产人成高清在线视频99最全资源 | 无套内射视频囯产 | 无码帝国www无码专区色综合 | 最近中文2019字幕第二页 | 久久久精品欧美一区二区免费 | 任你躁在线精品免费 | 无码国产乱人伦偷精品视频 | 午夜免费福利小电影 | 精品日本一区二区三区在线观看 | 国产精品无码一区二区三区不卡 | 天天爽夜夜爽夜夜爽 | 中文字幕av无码一区二区三区电影 | 亚洲熟妇色xxxxx欧美老妇y | 高清国产亚洲精品自在久久 | 成人无码视频在线观看网站 | 欧洲精品码一区二区三区免费看 | 免费国产黄网站在线观看 | 国产精品资源一区二区 | 欧美 亚洲 国产 另类 | 国产成人综合在线女婷五月99播放 | 丰满少妇女裸体bbw | 国产精品亚洲综合色区韩国 | 国产乱子伦视频在线播放 | 欧美猛少妇色xxxxx | 亚洲色大成网站www | 亚洲精品一区三区三区在线观看 | 国产人成高清在线视频99最全资源 | 无码人妻丰满熟妇区毛片18 | 免费观看的无遮挡av | 中文毛片无遮挡高清免费 | 永久黄网站色视频免费直播 | 久久人人爽人人爽人人片av高清 | 国产午夜亚洲精品不卡 | 精品乱码久久久久久久 | 综合激情五月综合激情五月激情1 | 丝袜 中出 制服 人妻 美腿 | 亚洲一区av无码专区在线观看 | а√天堂www在线天堂小说 | 国产又粗又硬又大爽黄老大爷视 | 亚洲欧美日韩成人高清在线一区 | 国产一区二区三区影院 | 国产亚洲欧美在线专区 | 纯爱无遮挡h肉动漫在线播放 | 女人被爽到呻吟gif动态图视看 | 超碰97人人做人人爱少妇 | 亚洲一区二区三区在线观看网站 | 狠狠色欧美亚洲狠狠色www | 国产人妻人伦精品 | 熟妇人妻激情偷爽文 | 国产精品久久久久9999小说 | 亚洲中文字幕无码中字 | 久热国产vs视频在线观看 | 色偷偷人人澡人人爽人人模 | 亚洲精品久久久久久久久久久 | 欧美猛少妇色xxxxx | 男人和女人高潮免费网站 | 日韩亚洲欧美中文高清在线 | 久久综合激激的五月天 | 一本一道久久综合久久 | 欧美国产日韩亚洲中文 | 国产人妻人伦精品1国产丝袜 | 高潮毛片无遮挡高清免费 | 中文字幕无码免费久久99 | 婷婷五月综合缴情在线视频 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲无人区午夜福利码高清完整版 | 欧美刺激性大交 | 欧美性生交活xxxxxdddd | 欧美日韩精品 | 黑人巨大精品欧美一区二区 | 漂亮人妻洗澡被公强 日日躁 | 人妻插b视频一区二区三区 | 亚洲综合无码一区二区三区 | 欧美丰满老熟妇xxxxx性 | 国产九九九九九九九a片 | 97久久精品无码一区二区 | 亚洲国产精品一区二区第一页 | 亚洲s码欧洲m码国产av | 成人三级无码视频在线观看 | 人妻少妇精品无码专区动漫 | 无码成人精品区在线观看 | 国产香蕉尹人视频在线 | 日韩av无码中文无码电影 | 亚洲欧洲无卡二区视頻 | 无码任你躁久久久久久久 | 亚洲精品一区三区三区在线观看 | 少妇被粗大的猛进出69影院 | 欧美肥老太牲交大战 | 激情人妻另类人妻伦 | 欧美日韩一区二区免费视频 | 又粗又大又硬毛片免费看 | 亚洲aⅴ无码成人网站国产app | 精品国产一区二区三区四区 | 亚洲中文字幕成人无码 | 久久99精品国产麻豆蜜芽 | 亚洲精品成a人在线观看 | 十八禁真人啪啪免费网站 | 欧洲精品码一区二区三区免费看 | 亚洲欧洲日本无在线码 | 亚洲人成网站色7799 | 国产精品.xx视频.xxtv | 高潮毛片无遮挡高清免费视频 | 久久精品一区二区三区四区 | 久久久久99精品国产片 | 久久99精品久久久久久动态图 | 欧美老妇交乱视频在线观看 | 97精品国产97久久久久久免费 | 国产av久久久久精东av | 欧洲美熟女乱又伦 | 99在线 | 亚洲 | 又大又硬又爽免费视频 | 国产精华av午夜在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 99久久人妻精品免费二区 | 成熟人妻av无码专区 | 久久婷婷五月综合色国产香蕉 | 色婷婷久久一区二区三区麻豆 | 国产激情无码一区二区 | 婷婷丁香五月天综合东京热 | 日本精品久久久久中文字幕 | 鲁鲁鲁爽爽爽在线视频观看 | 啦啦啦www在线观看免费视频 | 久久久精品人妻久久影视 | 亚洲第一无码av无码专区 | 久久精品国产日本波多野结衣 | 内射老妇bbwx0c0ck | 熟妇女人妻丰满少妇中文字幕 | 无遮挡国产高潮视频免费观看 | 国产成人精品三级麻豆 | 欧美性生交活xxxxxdddd | 99riav国产精品视频 | 在线观看免费人成视频 | 欧美一区二区三区视频在线观看 | 亚洲日韩av一区二区三区中文 | 亚洲人成人无码网www国产 | 88国产精品欧美一区二区三区 | 亚洲综合在线一区二区三区 | 97资源共享在线视频 | 亚洲性无码av中文字幕 | 精品久久久久久人妻无码中文字幕 | 2019午夜福利不卡片在线 | 亚洲成a人一区二区三区 | 欧美 日韩 亚洲 在线 | 精品国产一区二区三区四区在线看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 亚洲国产欧美日韩精品一区二区三区 | 久久久精品人妻久久影视 | 久久久久久久人妻无码中文字幕爆 | 成熟人妻av无码专区 | 窝窝午夜理论片影院 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲成a人一区二区三区 | 久久熟妇人妻午夜寂寞影院 | 内射欧美老妇wbb | 无码一区二区三区在线 | 少妇高潮喷潮久久久影院 | 3d动漫精品啪啪一区二区中 | 精品国精品国产自在久国产87 | 国产精品视频免费播放 | 少妇一晚三次一区二区三区 | 高清国产亚洲精品自在久久 | 永久免费观看国产裸体美女 | 亚洲欧美国产精品久久 | 国产偷国产偷精品高清尤物 | 99久久亚洲精品无码毛片 | 成在人线av无码免观看麻豆 | 日本精品久久久久中文字幕 | 国产在线精品一区二区高清不卡 | 一本无码人妻在中文字幕免费 | 中文字幕精品av一区二区五区 | 精品午夜福利在线观看 | www国产亚洲精品久久网站 | 蜜桃无码一区二区三区 | 国产乡下妇女做爰 | 日韩成人一区二区三区在线观看 | 国产精品丝袜黑色高跟鞋 | 毛片内射-百度 | 国产成人人人97超碰超爽8 | 又大又紧又粉嫩18p少妇 | 国产激情无码一区二区app | 我要看www免费看插插视频 | 乌克兰少妇性做爰 | aa片在线观看视频在线播放 | 蜜桃av抽搐高潮一区二区 | 中文字幕av伊人av无码av | 色诱久久久久综合网ywww | 久热国产vs视频在线观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 免费网站看v片在线18禁无码 | 午夜无码人妻av大片色欲 | v一区无码内射国产 | 午夜精品久久久久久久 | 欧美精品一区二区精品久久 | 欧美老人巨大xxxx做受 | 亚洲码国产精品高潮在线 | 欧洲精品码一区二区三区免费看 | 无码人妻出轨黑人中文字幕 | yw尤物av无码国产在线观看 | 人人爽人人澡人人高潮 | 午夜熟女插插xx免费视频 | 一个人免费观看的www视频 | 精品无码国产一区二区三区av | 久久精品中文闷骚内射 | av香港经典三级级 在线 | 精品夜夜澡人妻无码av蜜桃 | 无码免费一区二区三区 | 国产suv精品一区二区五 | 图片区 小说区 区 亚洲五月 | 亚洲天堂2017无码 | 日韩成人一区二区三区在线观看 | 精品无码国产自产拍在线观看蜜 | 亚洲国产午夜精品理论片 | 国产亚洲欧美在线专区 | 欧美国产亚洲日韩在线二区 | 色窝窝无码一区二区三区色欲 | 国产熟女一区二区三区四区五区 | 人妻夜夜爽天天爽三区 | 色 综合 欧美 亚洲 国产 | 午夜福利一区二区三区在线观看 | 国产尤物精品视频 | 强伦人妻一区二区三区视频18 | 国产深夜福利视频在线 | 性生交大片免费看女人按摩摩 | 97久久超碰中文字幕 | 性生交大片免费看l | 亚洲欧美综合区丁香五月小说 | 久久精品99久久香蕉国产色戒 | 国产小呦泬泬99精品 | 亚无码乱人伦一区二区 | 丁香花在线影院观看在线播放 | 欧美35页视频在线观看 | 久久国产36精品色熟妇 | 国产办公室秘书无码精品99 | 亚洲另类伦春色综合小说 | 十八禁真人啪啪免费网站 | 兔费看少妇性l交大片免费 | 人妻无码αv中文字幕久久琪琪布 | 国产色视频一区二区三区 | 亚洲日韩av片在线观看 | 亚洲一区二区三区无码久久 | 欧美性黑人极品hd | 亚洲娇小与黑人巨大交 | 黑人巨大精品欧美一区二区 | 精品无码一区二区三区爱欲 | 久久视频在线观看精品 | 亚洲精品无码人妻无码 | 国产成人无码午夜视频在线观看 | 亚洲国产综合无码一区 | 亚洲国产av精品一区二区蜜芽 | 麻豆蜜桃av蜜臀av色欲av | 天天躁夜夜躁狠狠是什么心态 | 亚洲无人区一区二区三区 | 少妇高潮喷潮久久久影院 | 97色伦图片97综合影院 | 国精产品一区二区三区 | 中文字幕人妻丝袜二区 | 一本久久伊人热热精品中文字幕 | 欧美人与牲动交xxxx | 日本熟妇大屁股人妻 | 精品熟女少妇av免费观看 | 久久午夜无码鲁丝片 | 亚洲欧美日韩成人高清在线一区 | 亚洲男人av香蕉爽爽爽爽 | 装睡被陌生人摸出水好爽 | 欧美日韩视频无码一区二区三 | 人妻夜夜爽天天爽三区 | 日韩av无码中文无码电影 | 国产欧美熟妇另类久久久 | 99精品久久毛片a片 | 青草视频在线播放 | 成人无码影片精品久久久 | 在线播放无码字幕亚洲 | 亚洲精品一区三区三区在线观看 | 亚洲七七久久桃花影院 | а√天堂www在线天堂小说 | 欧美激情内射喷水高潮 | 婷婷五月综合激情中文字幕 | 亚洲日本一区二区三区在线 | 成人综合网亚洲伊人 | 成年美女黄网站色大免费视频 | 少妇邻居内射在线 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲成av人在线观看网址 | 日本成熟视频免费视频 | 男人和女人高潮免费网站 | 国产精品美女久久久久av爽李琼 | 一个人看的视频www在线 | 亚洲经典千人经典日产 | 亚拍精品一区二区三区探花 | 中文精品无码中文字幕无码专区 | 国产亚洲精品久久久久久久久动漫 | 99re在线播放 | 人妻少妇精品视频专区 | 成人欧美一区二区三区 | 国产精品第一国产精品 | 国产又爽又猛又粗的视频a片 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产人妻精品一区二区三区 | 高清无码午夜福利视频 | 国产av无码专区亚洲awww | 波多野42部无码喷潮在线 | 国产婷婷色一区二区三区在线 | 日韩欧美中文字幕在线三区 | 国产精品亚洲综合色区韩国 | 国产明星裸体无码xxxx视频 | 亚洲国产av美女网站 | 无套内射视频囯产 | 亚洲欧美日韩国产精品一区二区 | 精品久久久久香蕉网 | 欧美日韩人成综合在线播放 | 亚洲精品久久久久avwww潮水 | 久激情内射婷内射蜜桃人妖 | 国内丰满熟女出轨videos | 领导边摸边吃奶边做爽在线观看 | 国产精品久久精品三级 | 窝窝午夜理论片影院 | 77777熟女视频在线观看 а天堂中文在线官网 | 色一情一乱一伦一区二区三欧美 | 国产97人人超碰caoprom | 99视频精品全部免费免费观看 | 99精品国产综合久久久久五月天 | 成年美女黄网站色大免费视频 | 欧美日本免费一区二区三区 | 亚洲一区av无码专区在线观看 | 亚洲aⅴ无码成人网站国产app | 久久午夜无码鲁丝片秋霞 | 任你躁国产自任一区二区三区 | 国语自产偷拍精品视频偷 | 亚洲日韩一区二区 | 国产人妖乱国产精品人妖 | 麻豆人妻少妇精品无码专区 | 欧美国产日韩久久mv | 久久这里只有精品视频9 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 激情综合激情五月俺也去 | 成人精品视频一区二区 | 亚洲熟熟妇xxxx | 无码人中文字幕 | 丝袜人妻一区二区三区 | 久久午夜无码鲁丝片秋霞 | 中文字幕无码乱人伦 | 色欲综合久久中文字幕网 | 无遮无挡爽爽免费视频 | 国产福利视频一区二区 | 久久亚洲国产成人精品性色 | 国产精品内射视频免费 | 成人综合网亚洲伊人 | 疯狂三人交性欧美 | 国产在线精品一区二区高清不卡 | 免费人成在线视频无码 | 久久精品人人做人人综合试看 | 人妻少妇精品视频专区 | 久久精品人妻少妇一区二区三区 | 荫蒂添的好舒服视频囗交 | 性啪啪chinese东北女人 | 男女作爱免费网站 | 日本熟妇大屁股人妻 | 免费无码av一区二区 | 久久综合色之久久综合 | 人人妻人人澡人人爽人人精品浪潮 | 日韩人妻无码一区二区三区久久99 | 久久久精品国产sm最大网站 | 色婷婷av一区二区三区之红樱桃 | 青青草原综合久久大伊人精品 | 小泽玛莉亚一区二区视频在线 | 国产激情无码一区二区 | 精品无码成人片一区二区98 | 乱人伦人妻中文字幕无码 | 成人性做爰aaa片免费看 | 午夜性刺激在线视频免费 | 国产内射老熟女aaaa | 亚洲春色在线视频 | 在线视频网站www色 | 国产精华av午夜在线观看 | 熟妇人妻激情偷爽文 | 久久久久av无码免费网 | 久久精品国产99久久6动漫 | 日本va欧美va欧美va精品 | 欧美日韩精品 | 亚洲中文字幕无码中字 | 国产福利视频一区二区 | 日韩av无码一区二区三区不卡 | 中文字幕无码av波多野吉衣 | 未满小14洗澡无码视频网站 | 亚洲色在线无码国产精品不卡 | 国产精品久久久av久久久 | 久久久久久久人妻无码中文字幕爆 | 国产又爽又黄又刺激的视频 | 欧美亚洲国产一区二区三区 | 欧美三级a做爰在线观看 | 国产精品-区区久久久狼 | 国产午夜无码视频在线观看 | 在线 国产 欧美 亚洲 天堂 | 亚洲a无码综合a国产av中文 | 99久久精品国产一区二区蜜芽 | 亚洲伊人久久精品影院 | 99久久精品国产一区二区蜜芽 | 国产精品理论片在线观看 | 国产激情无码一区二区 | 国产偷自视频区视频 | 夜夜影院未满十八勿进 | 男人的天堂2018无码 | 无码人妻少妇伦在线电影 | 精品人人妻人人澡人人爽人人 | 国产乱人偷精品人妻a片 | 九九在线中文字幕无码 | 无码国模国产在线观看 | 1000部啪啪未满十八勿入下载 | 国产成人无码专区 | 成人免费无码大片a毛片 | 日韩欧美中文字幕公布 | 无套内谢老熟女 | 伦伦影院午夜理论片 | 妺妺窝人体色www在线小说 | 亚洲精品成人av在线 | 人妻体内射精一区二区三四 | 日韩人妻无码一区二区三区久久99 | 成人免费无码大片a毛片 | 香蕉久久久久久av成人 | 亚洲 a v无 码免 费 成 人 a v | 领导边摸边吃奶边做爽在线观看 | 成人无码影片精品久久久 | 国产精品怡红院永久免费 | 丰满少妇高潮惨叫视频 | 国产激情精品一区二区三区 | 成 人 免费观看网站 | 中文字幕乱妇无码av在线 | 午夜精品久久久久久久久 | 欧美午夜特黄aaaaaa片 | 亚洲天堂2017无码中文 | 精品人人妻人人澡人人爽人人 | 黑人粗大猛烈进出高潮视频 | 麻豆果冻传媒2021精品传媒一区下载 | 国内揄拍国内精品人妻 | 美女扒开屁股让男人桶 | 日韩视频 中文字幕 视频一区 | aⅴ亚洲 日韩 色 图网站 播放 | 午夜不卡av免费 一本久久a久久精品vr综合 | 兔费看少妇性l交大片免费 | 亚洲日韩av一区二区三区四区 | 精品日本一区二区三区在线观看 | 精品久久久久久人妻无码中文字幕 | 在线播放亚洲第一字幕 | 俺去俺来也在线www色官网 | 欧美精品无码一区二区三区 | 蜜臀av无码人妻精品 | 亚洲人成人无码网www国产 | 亚洲精品一区国产 | 亚洲午夜福利在线观看 | 国产成人人人97超碰超爽8 | 暴力强奷在线播放无码 | 欧美日韩一区二区综合 | 丝袜人妻一区二区三区 | 在线视频网站www色 | 中文精品久久久久人妻不卡 | 成人性做爰aaa片免费看不忠 | 欧美人与动性行为视频 | 在线视频网站www色 | 亚洲无人区午夜福利码高清完整版 | 成熟妇人a片免费看网站 | 波多野结衣乳巨码无在线观看 | 免费无码av一区二区 | 乱码av麻豆丝袜熟女系列 | 成人欧美一区二区三区 | 久久久国产一区二区三区 | 久久人人爽人人爽人人片ⅴ | 黑人大群体交免费视频 | 免费国产黄网站在线观看 | 国产香蕉尹人综合在线观看 | 欧美阿v高清资源不卡在线播放 |