久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

瀏覽:151日期:2024-09-19 16:10:27

前言

這是一個使用HttpRunner開發(fā)接口平臺的簡單Demo。

新建Django項目

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

安裝依賴包

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

pip install httprunner=1.5.6 -i https://pypi.doubanio.com/simple/

模型規(guī)劃

項目Project:包含 名稱、創(chuàng)建時間、修改時間 測試套件TestSuite:對應HttpRunner的一個yaml文件,包含所屬項目、name、base_url、request請求配置、variables用戶自定義變量、創(chuàng)建時間、修改時間 測試用例TestCase:對應HttpRunner中的一個test段,包含所屬TestSuite、name、skip、request、validate、extract、創(chuàng)建時間、修改時間 測試結(jié)果TestResult:測試套件運行的一次結(jié)果信息,包含所屬TestSuite、HttpRunner運行summary中的時間信息、統(tǒng)計信息、平臺信息、詳情等

自定義YamlField

由于TestSuite中的request、variables以及用例中的request我們需要使用Python的字典格式,用例中的validate和extract需要使用Python的列表格式。而Django中這些只能按字符串格式TextField存儲。

我們編寫一個自定義YamlField,存庫時按字符串存,讀取時轉(zhuǎn)為Python字典或列表。

在apitest目錄下新建fields.py,內(nèi)容如下。

串存,讀取時轉(zhuǎn)為Python字典或列表。在apitest目錄下新建fields.py,內(nèi)容如下。

import yamlfrom django.db import modelsclass YamlField(models.TextField): def to_python(self, value): # 將數(shù)據(jù)庫內(nèi)容轉(zhuǎn)為python對象時調(diào)用 if not value: value = {} if isinstance(value, (list, dict)): return value return yaml.safe_load(value) def get_prep_value(self, value): # create時插入數(shù)據(jù), 轉(zhuǎn)為字符串存儲 return value if value is None else yaml.dump(value, default_flow_style=False) def from_db_value(self, value, expression, connection): # 從數(shù)據(jù)庫讀取字段是調(diào)用 return self.to_python(value)

使用抽象模型

由于好幾個項目、測試套件、測試用例都需要名稱、創(chuàng)建時間、修改時間三個屬性。為了簡化代碼,這里創(chuàng)建一個抽象模型ModelWithName,抽象模型用來通過繼承來復用屬性,并不會創(chuàng)建表。修改apitest/models.py,添加:

from django.db import modelsclass ModelWithName(models.Model): class Meta: abstract = True name = models.CharField('名稱', max_length=200) created = models.DateTimeField(’創(chuàng)建時間’, auto_now_add=True) modified = models.DateTimeField(’最后修改時間’, auto_now=True) def __str__(self): return self.name

編寫模型

修改apitest/models.py,添加:

class Project(ModelWithName): class Meta: verbose_name_plural = verbose_name = ’項目’class TestSuite(ModelWithName): '''對應httprunner的一個yaml文件''' class Meta: verbose_name_plural = verbose_name = ’測試套件’ project = models.ForeignKey(Project, verbose_name=’項目’, related_name=’suites’, on_delete=models.CASCADE) base_url = models.CharField(’域名’, max_length=500, blank=True, null=True) # 對應config/base_url request = YamlField(’請求默認配置’, blank=True) # 對應config/request variables = YamlField(’變量’, blank=True)class TestCase(ModelWithName): '''對應httprunner中的一個test''' class Meta: verbose_name_plural = verbose_name = ’測試用例’ suite = models.ForeignKey(TestSuite, verbose_name=’測試套件’, related_name=’tests’, on_delete=models.CASCADE) skip = models.BooleanField(’跳過’, default=False) request = YamlField(’請求數(shù)據(jù)’) # 對應config/request extract = YamlField(’提取請求’, blank=True) validate = YamlField(’斷言’, blank=True)class TestResult(models.Model): class Meta: verbose_name_plural = verbose_name = ’測試結(jié)果’ suite = models.ForeignKey(TestSuite, verbose_name=’測試套件’, related_name=’results’, on_delete=models.CASCADE) success = models.BooleanField(’成功’) start_at = models.DateTimeField(’開始時間’) duration = models.DurationField(’持續(xù)時間’) platform = models.TextField(’平臺信息’) test_run = models.SmallIntegerField(’運行’) successes = models.SmallIntegerField(’成功’) skipped = models.SmallIntegerField(’跳過’) failures = models.SmallIntegerField(’失敗’) errors = models.SmallIntegerField(’出錯’) expected_failures = models.SmallIntegerField(’預期失敗’) unexpected_successes = models.SmallIntegerField(’非預期成功’) details = models.TextField(’詳情’) created = models.DateTimeField(’創(chuàng)建時間’, auto_now_add=True) def __str__(self): return self.suite.name + ’-測試結(jié)果’

HttpRunner運行結(jié)果的summary的格式如下:

{’platform’: {’httprunner_version’: ’1.5.6’, ’platform’: ’Darwin-19.2.0-x86_64-i386-64bit’, ’python_version’: ’CPython 3.6.5’}, ’stat’: {’errors’: 0, ’expectedFailures’: 0,’failures’: 0,’skipped’: 0,’successes’: 1,’testsRun’: 1,’unexpectedSuccesses’: 0}, ’success’: True, ’time’: {’duration’: 2.2655465602874756, ’start_at’: 1587895780.3771362}} ’details’: [ # 每個對應一個測試套件 {’name’: ’套件名稱’, ’base_url’: ’https://httpbin.org’, ’stat’: {’errors’: 0, ’expectedFailures’: 0,’failures’: 0,’skipped’: 0,’successes’: 1,’testsRun’: 1,’unexpectedSuccesses’: 0}, ’success’: True, ’time’: {’duration’: 2.2655465602874756, ’start_at’: 1587895780.3771362}}, ’output’: [], ’records’: [ # 對應每一條用例 { ’name’: ’用例名’, ’status’: ’success’, ’meta_data’: {’request’: {’url’: ..., ’method’: ..., ’start_timestamp’: ...}, ’response’: {’content’: ..., ’text’: ..., ’json’: ..., ’headers’: ..., ’status_code’: ..., ’elapsed_ms’: ...}} ’attachment’: [’出錯信息’] } ] }

這里TestResult模型,對summary結(jié)果的信息做了簡單的拆解。

組裝用例數(shù)據(jù)

對于用例TestCase,我們需要將其name、skip、request、validate、extract組裝成HttpRunner的字典格式。在apitest/models.py的TestCase類中添加data屬性方法,代碼如下:

class TestCase(ModelWithName): .... @property def data(self): return dict(name=self.name,skip=self.skip,request=self.request,extract=self.extract,validate=self.validate)

一個套件最后解析后應該是包含name、config、apis、testcases的一個字典,我們需要將TestSuite對象及包含的所有TestCase對象組裝成如下格式。

{'name': '套件名稱', 'config' : {...}, 'apis': {}, 'testcases': []}

補充:加載debugtalk.py的方法config中可以指定一個yaml的path路徑,會自動加載該路徑下的debugtalk.py文件如

- utils - config.yaml # 空文件即可 - debugtalk.py

config的格式可以為:

config: name: ... request: ... variables: ... path: .../config.yaml

這樣可以自動加載debugtalk.py中的函數(shù)以供使用。

在apitest/models.py的TestSuite類中添加data屬性方法,代碼如下:

@property def data(self): request = self.request request[’base_url’] = self.base_url data = dict( name=self.name, config=dict(request=self.request, variables=self.variables), api={}, testcases=[test.data for test in self.tests.all()] ) return data

由于TestCase在外聯(lián)TestSuite時設(shè)置了關(guān)聯(lián)名稱tests,因此TestSuite對象可以通過self.tests.all()查詢出所有關(guān)聯(lián)它的用例。

注:HttpRunner-1.5.6版本的base_url是放在config/request中的,這里做了分離,要重新放入config/request中。

編寫套件運行方法

從 httprunner.task模塊中導入HttpRunner類,使用TestSuite數(shù)據(jù),運行即可。由于運行時是安多個TestSuite模式運行的,因此TestSuite的數(shù)據(jù)要放到一個列表中。

在apitest/models.py的TestSuite類添加run方法。

from httprunner.task import HttpRunner...class TestSuite(ModelWithName): ... def run(self): runner = HttpRunner().run([self.data]) summary = runner.summary if summary: # 保存結(jié)果到TestResult _time = summary[’time’] _stat = summary[’stat’] TestResult.objects.create(suite=self, success=summary[’success’],start_at=datetime.datetime.fromtimestamp(_time[’start_at’]),duration=datetime.timedelta(seconds=_time[’duration’]),test_run=_stat[’testsRun’], successes=_stat[’successes’], skipped=_stat[’skipped’], errors=_stat[’errors’],failures=_stat[’failures’], expected_failures=_stat[’expectedFailures’],unexpected_successes=_stat[’unexpectedSuccesses’],platform=json.dumps(summary[’platform’], indent=2, ensure_ascii=False),details=summary[’details’] ) return summary

運行后,解析summary并創(chuàng)建TestResult對象保存本次運行結(jié)果。

模型完整代碼

import datetimeimport jsonfrom django.db import modelsfrom httprunner.task import HttpRunnerfrom .fields import YamlFieldclass ModelWithName(models.Model): class Meta: abstract = True name = models.CharField('名稱', max_length=200) created = models.DateTimeField(’創(chuàng)建時間’, auto_now_add=True) modified = models.DateTimeField(’最后修改時間’, auto_now=True) def __str__(self): return self.nameclass Project(ModelWithName): class Meta: verbose_name_plural = verbose_name = ’項目’class TestSuite(ModelWithName): '''對應httprunner的一個yaml文件''' class Meta: verbose_name_plural = verbose_name = ’測試套件’ project = models.ForeignKey(Project, verbose_name=’項目’, related_name=’suites’, on_delete=models.CASCADE) base_url = models.CharField(’域名’, max_length=500, blank=True, null=True) # 對應config/base_url request = YamlField(’請求默認配置’, blank=True) # 對應config/request variables = YamlField(’變量’, blank=True) @property def data(self): request = self.request request[’base_url’] = self.base_url data = dict( name=self.name, config=dict(request=self.request, variables=self.variables), api={}, testcases=[test.data for test in self.tests.all()] ) return data def run(self): runner = HttpRunner().run([self.data]) summary = runner.summary if summary: # 保存結(jié)果到TestResult _time = summary[’time’] _stat = summary[’stat’] TestResult.objects.create(suite=self, success=summary[’success’],start_at=datetime.datetime.fromtimestamp(_time[’start_at’]),duration=datetime.timedelta(seconds=_time[’duration’]),test_run=_stat[’testsRun’], successes=_stat[’successes’], skipped=_stat[’skipped’], errors=_stat[’errors’],failures=_stat[’failures’], expected_failures=_stat[’expectedFailures’],unexpected_successes=_stat[’unexpectedSuccesses’],platform=json.dumps(summary[’platform’], indent=2, ensure_ascii=False),details=summary[’details’] ) return summaryclass TestCase(ModelWithName): '''對應httprunner中的一個test''' class Meta: verbose_name_plural = verbose_name = ’測試用例’ suite = models.ForeignKey(TestSuite, verbose_name=’測試套件’, related_name=’tests’, on_delete=models.CASCADE) skip = models.BooleanField(’跳過’, default=False) request = YamlField(’請求數(shù)據(jù)’) # 對應config/request extract = YamlField(’提取請求’, blank=True) validate = YamlField(’斷言’, blank=True) @property def data(self): return dict(name=self.name,skip=self.skip,request=self.request,extract=self.extract,validate=self.validate)class TestResult(models.Model): class Meta: verbose_name_plural = verbose_name = ’測試結(jié)果’ suite = models.ForeignKey(TestSuite, verbose_name=’測試套件’, related_name=’results’, on_delete=models.CASCADE) success = models.BooleanField(’成功’) start_at = models.DateTimeField(’開始時間’) duration = models.DurationField(’持續(xù)時間’) platform = models.TextField(’平臺信息’) test_run = models.SmallIntegerField(’運行’) successes = models.SmallIntegerField(’成功’) skipped = models.SmallIntegerField(’跳過’) failures = models.SmallIntegerField(’失敗’) errors = models.SmallIntegerField(’出錯’) expected_failures = models.SmallIntegerField(’預期失敗’) unexpected_successes = models.SmallIntegerField(’非預期成功’) details = models.TextField(’詳情’) created = models.DateTimeField(’創(chuàng)建時間’, auto_now_add=True) def __str__(self): return self.suite.name + ’-測試結(jié)果’

使用Django Admin

修改apitest/admin.py,代碼如下:

from django.contrib import adminfrom apitest import models@admin.register(models.Project)class ProjectAdmin(admin.ModelAdmin): list_display = (’name’, ’created’, ’modified’)class TestCaseInline(admin.StackedInline): model = models.TestCase extra = 1@admin.register(models.TestSuite)class TestSuiteAdmin(admin.ModelAdmin): inlines = [TestCaseInline] list_display = (’name’, ’project’, ’base_url’, ’created’, ’modified’) list_filter = (’project’, ) actions = ('run', ) def run(self, request, queryset): for suite in queryset: suite.run() run.short_description = '運行'@admin.register(models.TestResult)class TestResultAdmin(admin.ModelAdmin): readonly_fields = (’suite’, ’success’, ’start_at’, ’duration’, ’platform’, ’test_run’, ’successes’, ’skipped’, ’failures’, ’errors’, ’expected_failures’, ’unexpected_successes’, ’details’, ’created’) fields = ((’suite’, ’success’), (’start_at’, ’duration’), (’platform’,), (’test_run’, ’successes’, ’skipped’, ’failures’, ’errors’, ’expected_failures’, ’unexpected_successes’), (’details’,) ) list_display = (’suite’, ’success’, ’test_run’, ’successes’, ’errors’, ’failures’, ’start_at’, ’duration’) list_filter = (’suite’, )

這里將項目、測試套件、測試結(jié)果三個模型注冊到Admin后臺,測試用例則作為內(nèi)聯(lián)模型放到測試套件中進行編輯。在測試套件模型中,自定義了一個“運行”,操作,支持運行選中的用例。

運行并測試項目

打開terminal終端,執(zhí)行數(shù)據(jù)庫變更并創(chuàng)建超級管理員。

python3 manage.py makemigrationspython3 manage.py migratepython3 manage.py createsuperuser

運行開發(fā)服務(wù)器

python3 manage.py runserver

訪問http://127.0.0.1:8000/admin并登錄。

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

創(chuàng)建一個項目,測試項目,然后創(chuàng)建一個TestSuite,如下:

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

請求默認配置:

headers: x-text: abc123

變量:

a: 1b: 2

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

請求數(shù)據(jù):

url: /getmethod: GETparams: a: $a b: $b

提取請求:

- res_url: content.url

斷言:

- eq: [status_code, 200]

點擊保存。

回到TestSuite列表,選中測試套件,動作下拉框中選擇“運行”,點擊Go按鈕。

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

返回測試結(jié)果列表、查看測試結(jié)果。

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

通過Django Admin+HttpRunner1.5.6實現(xiàn)簡易接口測試平臺

程序代碼https://github.com/hanzhichao/apirunner

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Django
相關(guān)文章:
主站蜘蛛池模板: 欧美精品一区二区三区在线 | 日本高清视频在线播放 | 成人午夜视频在线观看 | 91精品国产综合久久福利软件 | 一区二区三区四区精品 | 国产欧美日韩精品在线 | 综合久久网 | 欧美日韩一区二区三区 | 日韩在线中文字幕 | 综合网视频 | 天天操夜夜操免费视频 | 国产精品一级 | 密室大逃脱第六季大神版在线观看 | 欧美日韩国产一区二区三区 | 91亚洲国产| 亚洲成人综合在线 | 国产精品美女久久久久久久久久久 | 久草精品视频 | 欧美亚洲另类在线 | 天天干天天曰天天操 | 国产综合视频在线播放 | 成人精品一区二区 | 中文字幕一区二区三区乱码在线 | 国产欧美日韩综合精品 | 成人黄色在线观看 | 在线观看中文 | 久一区二区三区 | 亚洲一区二区三区在线视频 | 人人爽在线 | av男人天堂网 | 九色porny国模私拍av | 色欧美综合 | 日韩中文字幕电影 | av在线成人| av免费网站 | 久久福利电影 | 久久精品一区二区 | 国产麻豆乱码精品一区二区三区 | 男女视频免费在线观看 | 国产午夜手机精彩视频 | 精品国产乱码久久久久久丨区2区 | 欧美日韩国产一区二区在线观看 | 中文字幕亚洲在线观看 | 午夜精品久久久久久久星辰影院 | 极品videossex中国妞hd | 亚洲艹 | 国产二区视频 | 国产美女视频网站 | 91九色最新 | 狠狠干av | 久久999视频 | 国产高清视频在线观看 | 精品国产999 | 亚洲tv久久爽久久爽 | 午夜不卡福利视频 | 波多野结衣先锋影音 | 亚洲高清视频在线观看 | 欧美日韩大陆 | 国产自产才c区 | igao视频| 日本精品一区二区三区在线观看视频 | 欧美日韩一区二区在线 | 日本爽快片毛片 | 久久中文字幕一区 | 欧洲一级视频 | 国产77777 | 国产主播一区 | 成人免费一区二区三区视频网站 | 日韩视频区 | 在线欧美视频 | 精品永久| 国产亚洲欧美在线 | 久久成人精品视频 | 91在线免费看 | 91精品一区二区 | 一区二区三区免费看 | 亚洲国产一区在线 | 欧美久久影视 | 狠狠操一区二区三区 | 国产成人在线网站 | 黑人巨大精品欧美一区二区免费 | 99视频在线播放 | 精品国产一区二区三区av片 | av在线视 | 91精品国产91综合久久蜜臀 | 欧美成人激情视频 | 精品一区二区三区四区 | 男人天堂av网 | 亚洲精品一区二三区不卡 | 国产精品视频播放 | 丁香婷婷久久久综合精品国产 | 羞羞色影院 | 国产精品一码二码三码在线 | 精品亚洲一区二区三区四区五区 | 日本黄色一级片免费看 | 2018狠狠干| 可以免费观看的av片 | 成人一区二区三区四区 | 一级日批片 | 青青草一区二区三区 | 成人免费在线视频 | 国产精品久久久久久久午夜片 | 国产四区| av久久| jizz欧美大片 | 精品在线视频观看 | 91精品一区二区三区久久久久久 | 一级黄色录象片 | 永久免费精品视频 | 久久久久久久国产 | 成人在线 | 精品在线视频观看 | 精品国产欧美一区二区三区成人 | 国产精品1区 | 一区二区三区久久久久久 | 亚洲黄色成人 | 日韩 国产 在线 | 成人精品视频在线观看 | 午夜视频网 | 欧美日韩国产在线播放 | 毛片免费看 | 国产黄色免费视频 | 高清国产一区二区三区 | 午夜精品导航 | 色综合一区 | 免费黄色网止 | 国产电影一区二区 | 精品国产黄色片 | 九一视频在线免费观看 | 电影91久久久 | 国产精品无码永久免费888 | 精品国产一区三区 | 国产成人自拍一区 | 国产 高清 在线 | 99re6在线视频精品免费 | 国产精品99在线观看 | 精品久久久久国产免费 | 精品国产精品三级精品av网址 | 欧美日韩一区二区三区在线观看 | 一区二区三区在线播放 | 久久久久久久国产精品视频 | 亚洲精品国产剧情久久9191 | av网站免费| 夜夜爽99久久国产综合精品女不卡 | 毛片真人毛毛片毛片 | 成人在线一区二区三区 | 日本视频网| 久久一区| 精品一二三区 | 天天干人人干 | 亚洲 欧美 日韩在线 | 国产日韩精品视频 | 亚洲成人高清 | 中文字幕一区二区三区四区五区 | 国产不卡视频 | 亚洲成av人片一区二区三区 | 97国产精品视频人人做人人爱 | 99精品九九 | 亚洲福利社区 | 久久黄网 | 中文字幕一区二区三区四区不卡 | 日韩在线精品强乱中文字幕 | 亚洲精品国产setv | 国产一区亚洲二区三区 | 国产欧美日韩在线观看 | h视频在线免费观看 | 午夜寂寞少妇aaa片毛片 | 国产乱码精品一区二区三区手机版 | 欧美a区 | 精品在线| 久久99国产一区二区三区 | 中文字幕 在线观看 | 久久精品久久久久久 | 夜夜骑av| 天天久久婷婷 | 岛国一区 | 亚洲欧美日韩国产综合精品二区 | 国户精品久久久久久久久久久不卡 | 人人av在线 | 日韩欧美在线视频 | 国产精品一区二区三区在线播放 | 日韩免费视频中文字幕 | 亚洲久久久 | 成人在线免费视频 | 国产成人精品亚洲日本在线观看 | 欧美国产日本一区 | 亚洲精品一区二区 | 中文字幕三区 | 久久不卡| 日韩视频在线一区二区 | 亚洲欧美在线观看 | 国产高清美女一级a毛片久久 | av免费观看网页 | 精品国产欧美一区二区三区成人 | 欧亚视频在线观看 | 成人av网页| 国产91精品在线 | 午夜精品久久久久久久久久久久久 | 国产精品久久久久一区二区三区 | 精品国产一区二区三区久久久蜜月 | 午夜影院18 | 成人av在线看 | 日日撸 | 日韩精品一二三区 | 高清国产午夜精品久久久久久 | 久久精品超碰 | 人人爽在线观看 | 狠狠干狠狠干 | 亚洲欧美aⅴ| 亚洲一区在线日韩在线深爱 | 日韩中文字幕在线 | 国产亚洲欧美一区二区 | 成年人毛片视频 | 国产在线一| 久久久久中文字幕 | 91久久精品久久国产性色也91 | 成人av免费观看 | 亚洲欧洲精品在线 | 99爱国产| 成人激情视频在线观看 | 色综合欧美| 欧美一区二区免费 | 欧美美乳 | 欧美日韩一区二区三区在线观看 | 成人精品视频在线观看 | 欧美日韩国产综合网 | 亚洲视频在线播放 | 国外成人在线视频网站 | 国产成人综合网 | 国产在线观看一区 | 久久久久网站 | 日韩欧美在线看 | 国精品一区 | 亚洲精品乱码久久久久久9色 | 日韩欧美手机在线 | 中文字幕日韩一区二区不卡 | 成人欧美一区二区三区黑人孕妇 | 欧美日韩福利视频 | 极品女神高潮呻吟av久久 | 成人一区二区在线 | 在线中文字幕av | 奇米二区 | 国产精品视频免费 | 国产精品一区久久久久 | 亚洲a在线观看 | 精品国产一区二区三区久久影院 | 久久天堂| 日韩中文字幕免费在线 | 天天操天天干天天干 | 国产一区色| 免费视频成人 | 91久久九色| 久久久久久综合 | 中文字幕在线第一页 | 91九色在线 | 成人三级网址 | 99视频免费看 | 日韩一区二区视频 | 一二三区字幕免费观看av | 精品一区二区电影 | 成人在线免费观看视频 | 亚洲高清视频在线观看 | 欧美综合网| 欧美成年网站 | 美女天堂网 | 亚洲第一色 | 日本在线不卡视频 | 欧美一区二区三区在线观看视频 | www.国产| 91九色网站 | 在线观看国产精品一区二区 | 91免费版在线观看 | 欧美久久视频 | 永久看片 | 免费视频一区二区 | 精品国产乱码一区二区三 | 激情国产 | www.avtt天堂网 | 精品一区二区三区在线视频 | 日韩成人免费在线 | 欧美激情精品久久久久久 | 天天操狠狠操网站 | 中文字幕在线三区 | 日韩三级网 | 成年免费观看视频 | 久草成人 | 狠狠插天天干 | 欧美男人的天堂 | 欧美一级片在线 | 亚洲成人自拍 | 色成人免费网站 | 中文字幕精品一区久久久久 | 日韩欧美专区 | 日本一区二区电影 | 国产视频一二区 | 国产高清精品一区二区三区 | 中文字幕精品视频在线观看 | 亚洲国产成人av | 免费观看一级毛片 | 国产日韩欧美一区 | 亚洲人成在线播放 | 欧美亚洲一区 | 夜夜操导航 | 黄色毛片在线观看 | 欧美成人午夜视频 | 欧美日韩精品免费观看视频 | 欧美一级做性受免费大片免费 | 欧美精品一区在线观看 | 久久久久久国产精品mv | 欧美一区二区三区精品 | 亚洲免费人成在线视频观看 | 黄色av网站在线免费观看 | 国产不卡精品视频 | 久久99国产精品久久99大师 | yy6080久久伦理一区二区 | www.成人| 91丨九色丨国产 | 一区二区三区视频 | 久综合网| 中文字幕 国产精品 | 精品久久久久一区二区国产 | a毛片在线免费观看 | 欧美在线网站 | 国产精品久久久久久久久久东京 | 国产成人免费 | 免费观看一级特黄欧美大片 | 亚洲国产视频一区 | 久久久久综合 | 亚洲欧洲一区二区三区 | 91久久国产综合久久91精品网站 | 亚洲福利小视频 | a毛片在线免费观看 | 一级毛片免费看 | av中文在线 | 狠久久 | 午夜精品久久久久久久久久久久久 | 久久99热精品免费观看牛牛 | 天天操操 | 99在线免费视频 | 色综久久 | 午夜在线电影 | 九一视频在线免费观看 | 在线国产一区 | 亚洲无吗电影 | 国产精品美女久久久久久久久久久 | 黄色毛片在线看 | 久草网站 | 日日爱999 | 欧美日韩国产不卡 | 国产视频三区 | 色婷婷综合久久 | 亚洲美女久久 | 国产精品成人国产乱一区 | 日本中文字幕一区 | 中文天堂av | 亚洲精品乱码久久久久久久 | 亚洲精品亚洲人成人网 | 国产精品一区在线观看你懂的 | 成人涩涩日本国产一区 | 欧美成人第一页 | 国产传媒一区 | 国产偷国产偷精品高清尤物 | 在线免费观看毛片 | 亚洲一区二区三区免费看 | 一级片免费视频 | 麻豆高清免费国产一区 | 国产中文字幕一区 | 色综合久久久久 | 欧美精品1区2区3区 国产女无套免费网站 | 国产ts余喵喵和直男多体位 | 91视频观看 | 香蕉久久久久久 | www.国产.com| 偷偷干夜夜拍 | 中文字幕第66页 | 在线久草| 成人免费国产 | 欧美狠狠操| 在线a视频| 日韩成人在线视频 | 欧美猛交ⅹxxx乱大交视频 | 国产小视频在线看 | 久综合网 | 中文字幕在线第二页 | av中文字幕网 | 精品久久久久久国产 | 精品人伦一区二区三区蜜桃视频 | 91精品国产综合久久久久久丝袜 | 亚洲精品午夜aaa久久久 | 黄色片网站在线看 | 亚洲网站视频 | 精品一区二区三区国产 | www日本在线 | 黄色国产精品 | 久久国产亚洲精品 | 国产a√ | 久草视频在线首页 | 久久成人免费 | 免费大黄网站 | 亚洲精品视频在线 | 九九热最新视频 | 一级黄色录象片 | 国产精品久久久一区二区 | 91亚洲国产成人久久精品网站 | 亚洲综合在线视频 | 亚洲成熟少妇视频在线观看 | 成人黄色av | 婷婷国产精品 | 婷婷毛片 | 亚洲午夜精品久久久久久app | 91国在线高清视频 | 亚洲精美视频 | 国产亚洲精品美女久久久久久久久久 | 久久精品亚洲一区二区 | 欧美精品一区在线发布 | 99这里只有精品视频 | 国产2区| 免费视频二区 | www.中文字幕 | 欧美日韩精品一区二区 | 日本久久网 | 精品国产一区二区三区久久 | 正在播放国产一区 | 97精品国产 | 亚洲精品免费在线观看 | 国产精品久久久久久久午夜片 | 亚洲成人av在线 | 成人久久久精品乱码一区二区三区 | 亚洲精品欧美精品 | 国产精品国产精品国产 | 成人免费视屏 | 欧美日韩第一 | 午夜大片网 | 在线a视频 | 久久久999精品视频 99国产精品久久久久久久 | 国产91在线播放精品91 | 亚洲精品1区 | 久久99精品久久久久婷婷暖91 | 欧美视频三区 | 国产视频一区二区 | 日本午夜在线 | 午夜精品久久久久久久久久久久久 | 精品国产一区二区三区日日嗨 | 日日干日日爽 | а√天堂中文在线资源8 | 欧美一区视频 | 男人天堂网av | 久久99久久久久 | 久久综合一区二区 | 欧美日韩一区二区在线播放 | 久久亚洲天堂 | 九九热在线免费视频 | 人人做人人爽 | 欧美日韩激情一区二区三区 | 国产精品美女久久久久久久久久久 | 国产精品伦理 | 亚洲精品一区久久久久久 | 日本久久综合 | 日韩国产欧美亚洲 | 色综合成人 | 日韩在线视频在线观看 | 国产一级毛片在线视频 | 国产亚洲一区二区三区在线观看 | 美女一级毛片 | 欧美激情一区二区三区在线观看 | xnxx 美女19| 日本1区2区 | 国产精品jizz在线观看麻豆 | 国产成人免费在线 | 国产成人午夜视频 | 日韩免费区 | 91精品国产一区二区三区四区在线 | 黄a免费 | 国产伦精品一区二区三区四区视频 | 成人一级视频在线观看 | 精品国产黄色片 | 亚洲成人二区 | 国产视频一区在线 | 欧美日韩在线视频观看 | 一区二区日韩精品 | 欧美伦理一区二区 | 在线观看亚洲视频 | 日本不卡精品 | 日韩国产一区二区 | 国产高潮好爽受不了了夜色 | 全免一级毛片 | 亚洲免费一区二区 | 欧美一区二区三区在线 | 色爱区综合 | 久久99一区二区 | 久草免费在线视频 | 黑色丝袜脚足j国产在线看68 | 精品国产不卡一区二区三区 | 久二影院| 国产精品久久久久久中文字 | 久久国产精品视频 | 草久久久 | 一区二区在线视频 | 午夜视频网站 | 激情五月婷婷综合 | 中文字幕在线看 | www.国产.com| 精品国产一级片 | 国精日本亚洲欧州国产中文久久 | 国产精品视频免费播放 | 在线视频中文字幕 | 成人在线激情 | 99精品国产在热久久 | 欧美日韩在线一区二区 | 久久国产精品视频观看 | 国产精品久久久久久久久久久久冷 | 中文字幕亚洲二区 | 国产在线一区二区三区 | 在线视频国产一区 | 亚洲一区二区三区爽爽爽爽爽 | 国产欧美在线观看 | 精品香蕉视频 | 欧美激情自拍偷拍 | а√天堂中文在线资源8 | 91av亚洲| 天天干天天操天天爽 | 久久精品小视频 | 日韩色综合 | 国产一区二区三区久久 | 成人高清视频在线观看 | 久久青草av | 久久综合狠狠综合久久 | 91精品区| 中国妞xxxhd露脸偷拍视频 | 日韩激情一区二区 | 国产情侣在线视频 | 亚洲视频中文字幕 | 人人澡人人草 | 剑来高清在线观看 | 国产精品美女av | 国产剧情一区二区 | 亚洲精品二三区 | 精品国产31久久久久久 | 国产精品视频一二三区 | 久久综合色视频 | 欧美日韩在线观看一区二区 | 久久精品免费一区二区三区 | 黄视频网址 | 国产一区二区在线视频观看 | 日本不卡一区二区 | 精品久久久久久亚洲精品 | 国产三级日本三级美三级 | 天天影视综合 | 超碰在线影院 | 91亚洲国产成人精品性色 | 91麻豆产精品久久久久久 | 在线一区观看 | 波多野结衣三区 | 天天天天天天操 | 国产日韩av在线 | 精品久久久一 | 日韩亚洲精品在线观看 | 国产精品婷婷午夜在线观看 | 亚洲tv久久爽久久爽 | 亚洲国产精品一区二区www | 欧美猛交ⅹxxx乱大交视频 | 欧美精品一二区 | 亚洲高清视频在线观看 | 成人国产在线观看 | 久草久草久草 | 色婷婷亚洲一区二区三区 | 奇米亚洲午夜久久精品 | 欧美天天 | 国产精品18久久久久久首页狼 | 91看片官网 | 夜夜草 | 一级性大片 | 欧美激情在线免费观看 | 国产精品一区二区三区免费视频 | 国产精品久久嫩一区二区 免费 | 日韩第一区 | 日本黄色的视频 | 天天操天天玩 | 国产乱码久久久久久一区二区 | 欧美视频二区 | 五月天婷婷社区 | 国产精品久久久久久久久免费高清 | 看黄网址 | 成人久久| 国产精品日韩专区 | 荷兰欧美一级毛片 | 69av在线视频 | 1000部羞羞视频在线看视频 | 国产精品美女视频一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 亚洲精品视频在线看 | 啵啵影院午夜男人免费视频 | 精品中文字幕一区 | 精品久久伊人 | 伊人艹 | 综合色婷婷一区二区亚洲欧美国产 | 日韩中文在线 | 国产精品手机在线 | 爱爱视频在线 | 欧美综合激情 | 在线色网| 久草电影网 | 亚洲乱码一区二区三区在线观看 | 国产精品欧美一区二区三区不卡 | jizzjizz亚洲中国少妇 | 日日日日干干干干 | 国产成人一区二区三区 | 色婷婷精品国产一区二区三区 | 久久九| 久久一| 久久久久国产精品午夜一区 | 精品国产乱码久久久久久久软件 | 久久日韩| 91麻豆精品国产91久久久资源速度 | 99小视频 |