日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python - HTMLTestRunner 测试报告模板设置

發(fā)布時(shí)間:2025/3/15 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python - HTMLTestRunner 测试报告模板设置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

python - HTMLTestRunner 測試報(bào)告模板設(shè)置

優(yōu)化模板下載地址:

http://download.csdn.net/download/chinayyj2010/10039097

?后又有所修改沒有更新,最近在群文件中

注意:HTMLTestRunner 對(duì)應(yīng)的 python2.x、pyhon3.x最新優(yōu)化后的模板文件放到了QQ群:193056556中,有需要的可以進(jìn)群自取。

?

從改地址下載下的模板運(yùn)行結(jié)果如下。 ?

?

其實(shí)該模板還有可以優(yōu)化的地方??梢愿鶕?jù)個(gè)人需要進(jìn)行修改,當(dāng)然這里需要有一定的前端技術(shù)基礎(chǔ)。

?

?

比如上圖中的錯(cuò)誤,竟然會(huì)有背景色,很不協(xié)調(diào)。

?

REPORT_TMPL = """ <p id='show_detail_line'> <a class="btn btn-primary" href='javascript:showCase(0)'>通過率 [%(passrate)s ]</a> <a class="btn btn-success" href='javascript:showCase(1)'>通過[ %(Pass)s ]</a> <a class="btn btn-error" href='javascript:showCase(2)' style="background-color:Gold;">錯(cuò)誤[ %(error)s ]</a> <a class="btn btn-danger" href='javascript:showCase(3)'>失敗[ %(fail)s ]</a> <a class="btn btn-info" href='javascript:showCase(4)'>所有[ %(count)s ]</a> </p> ... #<a class="btn btn-error" href='javascript:showCase(2)' style="background-color:Gold;">錯(cuò)誤[ %(error)s ]</a> # 這里因?yàn)樵瓉硎菦]有錯(cuò)誤展示的,是我自己添加上去的,所以沒有找的合適的樣式,就這樣先寫了一下,所以出現(xiàn)了上圖的背景色。

?

后查看了資料知道 ?class="btn btn-success" 是前端?Bootstrap 的技術(shù),所以就參考了

http://www.runoob.com/bootstrap/bootstrap-buttons.html ?Bootstrap?按鈕 中的按鈕樣式 ?class="btn btn-warning"

?代碼如下:

REPORT_TMPL = """ <p id='show_detail_line'> <a class="btn btn-primary" href='javascript:showCase(0)'>通過率 [%(passrate)s ]</a> <a class="btn btn-success" href='javascript:showCase(1)'>通過[ %(Pass)s ]</a> <a class="btn btn-warning" href='javascript:showCase(2)'>錯(cuò)誤[ %(error)s ]</a> <a class="btn btn-danger" href='javascript:showCase(3)'>失敗[ %(fail)s ]</a> <a class="btn btn-info" href='javascript:showCase(4)'>所有[ %(count)s ]</a> </p> ...

?

效果如圖

?

?其他修改可以根據(jù)修改 需要自行修改,如修改文字描述,符號(hào)展示等。

下面在把這次優(yōu)化后的源碼貼出來,方便今后使用。

#coding=utf-8 """ A TestRunner for use with the Python unit testing framework. It generates a HTML report to show the result at a glance.The simplest way to use this is to invoke its main method. E.g.import unittestimport HTMLTestRunner... define your tests ...if __name__ == '__main__':HTMLTestRunner.main()For more customization options, instantiates a HTMLTestRunner object. HTMLTestRunner is a counterpart to unittest's TextTestRunner. E.g.# output to a filefp = file('my_report.html', 'wb')runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='My unit test',description='This demonstrates the report output by HTMLTestRunner.')# Use an external stylesheet.# See the Template_mixin class for more customizable optionsrunner.STYLESHEET_TMPL = '<link rel="stylesheet" href="my_stylesheet.css" type="text/css">'# run the testrunner.run(my_test_suite)------------------------------------------------------------------------ Copyright (c) 2017-2027, Wai Yip Tung All rights reserved.Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:* Redistributions of source code must retain the above copyright notice,this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyrightnotice, this list of conditions and the following disclaimer in thedocumentation and/or other materials provided with the distribution. * Neither the name TesterYyj nor the names of its contributors may beused to endorse or promote products derived from this software withoutspecific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """# URL: http://tungwaiyip.info/software/HTMLTestRunner.html__author__ = "Wai Yip Tung, Yang Yao Jun" __version__ = "0.8.2.1"""" Change HistoryVersion 0.8.2.1 -Yang Yao Jun * 支持中文,漢化 * 調(diào)整樣式,美化(需要連入網(wǎng)絡(luò),使用的百度的Bootstrap.js) * 增加 通過分類顯示、測試人員、通過率的展示 * 優(yōu)化“詳細(xì)”與“收起”狀態(tài)的變換 * 增加返回頂部的錨點(diǎn)Version 0.8.2 * Show output inline instead of popup window (Viorel Lupu).Version in 0.8.1 * Validated XHTML (Wolfgang Borgert). * Added description of test classes and test cases.Version in 0.8.0 * Define Template_mixin class for customization. * Workaround a IE 6 bug that it does not treat <script> block as CDATA.Version in 0.7.1 * Back port to Python 2.3 (Frank Horowitz). * Fix missing scroll bars in detail log (Podi). """# TODO: color stderr # TODO: simplify javascript using ,ore than 1 class in the class attribute?import datetime import StringIO import sys import time import unittest from xml.sax import saxutils import sys reload(sys) sys.setdefaultencoding('utf-8')# ------------------------------------------------------------------------ # The redirectors below are used to capture output during testing. Output # sent to sys.stdout and sys.stderr are automatically captured. However # in some cases sys.stdout is already cached before HTMLTestRunner is # invoked (e.g. calling logging.basicConfig). In order to capture those # output, use the redirectors for the cached stream. # # e.g. # >>> logging.basicConfig(stream=HTMLTestRunner.stdout_redirector) # >>>class OutputRedirector(object):""" Wrapper to redirect stdout or stderr """def __init__(self, fp):self.fp = fpdef write(self, s):self.fp.write(s)def writelines(self, lines):self.fp.writelines(lines)def flush(self):self.fp.flush()stdout_redirector = OutputRedirector(sys.stdout) stderr_redirector = OutputRedirector(sys.stderr)# ---------------------------------------------------------------------- # Templateclass Template_mixin(object):"""Define a HTML template for report customerization and generation.Overall structure of an HTML reportHTML+------------------------+|<html> || <head> || || STYLESHEET || +----------------+ || | | || +----------------+ || || </head> || || <body> || || HEADING || +----------------+ || | | || +----------------+ || || REPORT || +----------------+ || | | || +----------------+ || || ENDING || +----------------+ || | | || +----------------+ || || </body> ||</html> |+------------------------+"""STATUS = {0: '通過',1: '失敗',2: '錯(cuò)誤',}#默認(rèn)測試標(biāo)題DEFAULT_TITLE = 'UI測試報(bào)告'DEFAULT_DESCRIPTION = ''#默認(rèn)測試人員DEFAULT_TESTER='Yang Yao Jun'# ------------------------------------------------------------------------# HTML Template HTML_TMPL = r"""<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>%(title)s</title><meta name="generator" content="%(generator)s"/><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"><script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script><script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>%(stylesheet)s </head> <body > <script language="javascript" type="text/javascript"> output_list = Array();/*level 調(diào)整增加只顯示通過用例的分類 --Yang Yao Jun 0:Summary //all hiddenRow 1:Failed //pt hiddenRow, ft none 2:Pass //pt none, ft hiddenRow 3:All //pt none, ft none */ function showCase(level) {trs = document.getElementsByTagName("tr");for (var i = 0; i < trs.length; i++) {tr = trs[i];id = tr.id;if (id.substr(0,2) == 'ft') {if (level == 2 || level == 0 ) {tr.className = 'hiddenRow';}else {tr.className = '';}}if (id.substr(0,2) == 'pt') {if (level < 2) {tr.className = 'hiddenRow';}else {tr.className = '';}}}//加入【詳細(xì)】切換文字變化 --Yang Yao Jundetail_class=document.getElementsByClassName('detail');//console.log(detail_class.length)if (level == 3) {for (var i = 0; i < detail_class.length; i++){detail_class[i].innerHTML="收起"}}else{for (var i = 0; i < detail_class.length; i++){detail_class[i].innerHTML="詳細(xì)"}} }function showClassDetail(cid, count) {var id_list = Array(count);var toHide = 1;for (var i = 0; i < count; i++) {//ID修改 點(diǎn) 為 下劃線 -Yang Yao Juntid0 = 't' + cid.substr(1) + '_' + (i+1);tid = 'f' + tid0;tr = document.getElementById(tid);if (!tr) {tid = 'p' + tid0;tr = document.getElementById(tid);}id_list[i] = tid;if (tr.className) {toHide = 0;}}for (var i = 0; i < count; i++) {tid = id_list[i];//修改點(diǎn)擊無法收起的BUG,加入【詳細(xì)】切換文字變化 --Yang Yao Junif (toHide) {document.getElementById(tid).className = 'hiddenRow';document.getElementById(cid).innerText = "詳細(xì)"}else {document.getElementById(tid).className = '';document.getElementById(cid).innerText = "收起"}} }function html_escape(s) {s = s.replace(/&/g,'&amp;');s = s.replace(/</g,'&lt;');s = s.replace(/>/g,'&gt;');return s; } </script> %(heading)s %(report)s %(ending)s</body> </html> """# variables: (title, generator, stylesheet, heading, report, ending)# ------------------------------------------------------------------------# Stylesheet# # alternatively use a <link> for external style sheet, e.g.# <link rel="stylesheet" href="$url" type="text/css"> STYLESHEET_TMPL = """ <style type="text/css" media="screen"> body { font-family: Microsoft Skyyj,Tahoma,arial,helvetica,sans-serif;padding: 20px; font-size: 80%; } table { font-size: 100%; }/* -- heading ---------------------------------------------------------------------- */ .heading {margin-top: 0ex;margin-bottom: 1ex; }.heading .description {margin-top: 4ex;margin-bottom: 6ex; }/* -- report ------------------------------------------------------------------------ */ #total_row { font-weight: bold; } .passCase { color: #5cb85c; } .failCase { color: #d9534f; font-weight: bold; } .errorCase { color: #f0ad4e; font-weight: bold; } .hiddenRow { display: none; } .testcase { margin-left: 2em; } </style> """# ------------------------------------------------------------------------# Heading# HEADING_TMPL = """<div class='heading'> <h1 style="font-family: Microsoft Skyyj">%(title)s</h1> %(parameters)s <p class='description'>%(description)s</p> </div>""" # variables: (title, parameters, description) HEADING_ATTRIBUTE_TMPL = """<p class='attribute'><strong>%(name)s : </strong> %(value)s</p> """ # variables: (name, value)# ------------------------------------------------------------------------# Report# # 漢化,加美化效果 --Yang Yao Jun# # 這里涉及到了 Bootstrap 前端技術(shù),Bootstrap 按鈕 資料介紹詳見:http://www.runoob.com/bootstrap/bootstrap-buttons.html# REPORT_TMPL = """ <p id='show_detail_line'> <a class="btn btn-primary" href='javascript:showCase(0)'>通過率 [%(passrate)s ]</a> <a class="btn btn-success" href='javascript:showCase(1)'>通過[ %(Pass)s ]</a> <a class="btn btn-warning" href='javascript:showCase(2)'>錯(cuò)誤[ %(error)s ]</a> <a class="btn btn-danger" href='javascript:showCase(3)'>失敗[ %(fail)s ]</a> <a class="btn btn-info" href='javascript:showCase(4)'>所有[ %(count)s ]</a> </p> <table id='result_table' class="table table-condensed table-bordered table-hover"> <colgroup> <col align='left' /> <col align='right' /> <col align='right' /> <col align='right' /> <col align='right' /> <col align='right' /> </colgroup> <tr id='header_row' class="text-center success" style="font-weight: bold;font-size: 14px;"><td>用例集/測試用例</td><td>總計(jì)</td><td>通過</td><td>錯(cuò)誤</td><td>失敗</td><td>詳細(xì)</td> </tr> %(test_list)s <tr id='total_row' class="text-center active"><td>總計(jì)</td><td>%(count)s</td><td>%(Pass)s</td><td>%(error)s</td><td>%(fail)s</td><td>通過率:%(passrate)s</td> </tr> </table> """ # variables: (test_list, count, Pass, fail, error ,passrate) REPORT_CLASS_TMPL = r""" <tr class='%(style)s warning'><td>%(desc)s</td><td class="text-center">%(count)s</td><td class="text-center">%(Pass)s</td><td class="text-center">%(error)s</td><td class="text-center">%(fail)s</td><td class="text-center"><a href="javascript:showClassDetail('%(cid)s',%(count)s)" class="detail" id='%(cid)s'>詳細(xì)</a></td> </tr> """ # variables: (style, desc, count, Pass, fail, error, cid)#失敗 的樣式,去掉原來JS效果,美化展示效果 -Yang Yao JunREPORT_TEST_WITH_OUTPUT_TMPL = r""" <tr id='%(tid)s' class='%(Class)s'><td class='%(style)s'><div class='testcase'>%(desc)s</div></td><td colspan='5' align='center'><!--默認(rèn)收起錯(cuò)誤信息 -Yang Yao Jun<button id='btn_%(tid)s' type="button" class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_%(tid)s'>%(status)s</button><div id='div_%(tid)s' class="collapse"> --><!-- 默認(rèn)展開錯(cuò)誤信息 -Yang Yao Jun --><button id='btn_%(tid)s' type="button" class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_%(tid)s'>%(status)s</button><div id='div_%(tid)s' class="collapse in"><pre>%(script)s</pre></div></td> </tr> """ # variables: (tid, Class, style, desc, status)# 通過 的樣式,加標(biāo)簽效果 -Yang Yao JunREPORT_TEST_NO_OUTPUT_TMPL = r""" <tr id='%(tid)s' class='%(Class)s'><td class='%(style)s'><div class='testcase'>%(desc)s</div></td><td colspan='5' align='center'><span class="label label-success success">%(status)s</span></td> </tr> """ # variables: (tid, Class, style, desc, status) REPORT_TEST_OUTPUT_TMPL = r""" %(id)s: %(output)s """ # variables: (id, output)# ------------------------------------------------------------------------# ENDING# # 增加返回頂部按鈕 --Yang Yao JunENDING_TMPL = """<div id='ending'>&nbsp;</div><div style=" position:fixed;right:50px; bottom:30px; width:20px; height:20px;cursor:pointer"><a href="#"><span class="glyphicon glyphicon-eject" style = "font-size:30px;" aria-hidden="true"></span></a></div>"""# -------------------- The end of the Template class ------------------- TestResult = unittest.TestResultclass _TestResult(TestResult):# note: _TestResult is a pure representation of results.# It lacks the output and reporting ability compares to unittest._TextTestResult.def __init__(self, verbosity=1):TestResult.__init__(self)self.stdout0 = Noneself.stderr0 = Noneself.success_count = 0self.failure_count = 0self.error_count = 0self.verbosity = verbosity# result is a list of result in 4 tuple# (# result code (0: success; 1: fail; 2: error),# TestCase object,# Test output (byte string),# stack trace,# )self.result = []#增加一個(gè)測試通過率 --Yang Yao Junself.passrate=float(0)def startTest(self, test):TestResult.startTest(self, test)# just one buffer for both stdout and stderrself.outputBuffer = StringIO.StringIO()stdout_redirector.fp = self.outputBufferstderr_redirector.fp = self.outputBufferself.stdout0 = sys.stdoutself.stderr0 = sys.stderrsys.stdout = stdout_redirectorsys.stderr = stderr_redirectordef complete_output(self):"""Disconnect output redirection and return buffer.Safe to call multiple times."""if self.stdout0:sys.stdout = self.stdout0sys.stderr = self.stderr0self.stdout0 = Noneself.stderr0 = Nonereturn self.outputBuffer.getvalue()def stopTest(self, test):# Usually one of addSuccess, addError or addFailure would have been called.# But there are some path in unittest that would bypass this.# We must disconnect stdout in stopTest(), which is guaranteed to be called. self.complete_output()def addSuccess(self, test):self.success_count += 1TestResult.addSuccess(self, test)output = self.complete_output()self.result.append((0, test, output, ''))if self.verbosity > 1:sys.stderr.write('ok ')sys.stderr.write(str(test))sys.stderr.write('\n')else:sys.stderr.write('.')def addError(self, test, err):self.error_count += 1TestResult.addError(self, test, err)_, _exc_str = self.errors[-1]output = self.complete_output()self.result.append((2, test, output, _exc_str))if self.verbosity > 1:sys.stderr.write('E ')sys.stderr.write(str(test))sys.stderr.write('\n')else:sys.stderr.write('E')def addFailure(self, test, err):self.failure_count += 1TestResult.addFailure(self, test, err)_, _exc_str = self.failures[-1]output = self.complete_output()self.result.append((1, test, output, _exc_str))if self.verbosity > 1:sys.stderr.write('F ')sys.stderr.write(str(test))sys.stderr.write('\n')else:sys.stderr.write('F')class HTMLTestRunner(Template_mixin):""""""def __init__(self, stream=sys.stdout, verbosity=1,title=None,description=None,tester=None):self.stream = streamself.verbosity = verbosityif title is None:self.title = self.DEFAULT_TITLEelse:self.title = titleif description is None:self.description = self.DEFAULT_DESCRIPTIONelse:self.description = descriptionif tester is None:self.tester = self.DEFAULT_TESTERelse:self.tester = testerself.startTime = datetime.datetime.now()def run(self, test):"Run the given test case or test suite."result = _TestResult(self.verbosity)test(result)self.stopTime = datetime.datetime.now()self.generateReport(test, result)print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)return resultdef sortResult(self, result_list):# unittest does not seems to run in any particular order.# Here at least we want to group them together by class.rmap = {}classes = []for n,t,o,e in result_list:cls = t.__class__if not rmap.has_key(cls):rmap[cls] = []classes.append(cls)rmap[cls].append((n,t,o,e))r = [(cls, rmap[cls]) for cls in classes]return r#替換測試結(jié)果status為通過率 --Yang Yao Jundef getReportAttributes(self, result):"""Return report attributes as a list of (name, value).Override this to add custom attributes."""startTime = str(self.startTime)[:19]duration = str(self.stopTime - self.startTime)status = []status.append('共 %s 條用例' % (result.success_count + result.failure_count + result.error_count))if result.success_count: status.append('通過 %s 條' % result.success_count)if result.failure_count: status.append('失敗 %s 條' % result.failure_count)if result.error_count: status.append('錯(cuò)誤 %s 條' % result.error_count )if status:status = ''.join(status)self.passrate = str("%.2f%%" % (float(result.success_count) / float(result.success_count + result.failure_count + result.error_count) * 100))else:status = 'none'return [(u'測試人員', self.tester),(u'開始時(shí)間',startTime),(u'合計(jì)耗時(shí)',duration),(u'測試結(jié)果',status + ",通過率= "+self.passrate),]def generateReport(self, test, result):report_attrs = self.getReportAttributes(result)generator = 'HTMLTestRunner %s' % __version__stylesheet = self._generate_stylesheet()heading = self._generate_heading(report_attrs)report = self._generate_report(result)ending = self._generate_ending()output = self.HTML_TMPL % dict(title = saxutils.escape(self.title),generator = generator,stylesheet = stylesheet,heading = heading,report = report,ending = ending,)self.stream.write(output.encode('utf8'))def _generate_stylesheet(self):return self.STYLESHEET_TMPL#增加Tester顯示 -Yang Yao Jundef _generate_heading(self, report_attrs):a_lines = []for name, value in report_attrs:line = self.HEADING_ATTRIBUTE_TMPL % dict(name = saxutils.escape(name),value = saxutils.escape(value),)a_lines.append(line)heading = self.HEADING_TMPL % dict(title = saxutils.escape(self.title),parameters = ''.join(a_lines),description = saxutils.escape(self.description),tester= saxutils.escape(self.tester),)return heading#生成報(bào)告 --Yang Yao Jun添加注釋def _generate_report(self, result):rows = []sortedResult = self.sortResult(result.result)for cid, (cls, cls_results) in enumerate(sortedResult):# subtotal for a classnp = nf = ne = 0for n,t,o,e in cls_results:if n == 0: np += 1elif n == 1: nf += 1else: ne += 1# format class descriptionif cls.__module__ == "__main__":name = cls.__name__else:name = "%s.%s" % (cls.__module__, cls.__name__)doc = cls.__doc__ and cls.__doc__.split("\n")[0] or ""desc = doc and '%s: %s' % (name, doc) or namerow = self.REPORT_CLASS_TMPL % dict(style = ne > 0 and 'errorClass' or nf > 0 and 'failClass' or 'passClass',desc = desc,count = np+nf+ne,Pass = np,fail = nf,error = ne,cid = 'c%s' % (cid+1),)rows.append(row)for tid, (n,t,o,e) in enumerate(cls_results):self._generate_report_test(rows, cid, tid, n, t, o, e)report = self.REPORT_TMPL % dict(test_list = ''.join(rows),count = str(result.success_count+result.failure_count+result.error_count),Pass = str(result.success_count),fail = str(result.failure_count),error = str(result.error_count),passrate =self.passrate,)return reportdef _generate_report_test(self, rows, cid, tid, n, t, o, e):# e.g. 'pt1.1', 'ft1.1', etchas_output = bool(o or e)# ID修改點(diǎn)為下劃線,支持Bootstrap折疊展開特效 - Yang Yao Juntid = (n == 0 and 'p' or 'f') + 't%s_%s' % (cid+1,tid+1)name = t.id().split('.')[-1]doc = t.shortDescription() or ""desc = doc and ('%s: %s' % (name, doc)) or nametmpl = has_output and self.REPORT_TEST_WITH_OUTPUT_TMPL or self.REPORT_TEST_NO_OUTPUT_TMPL# utf-8 支持中文 - Yang Yao Jun# o and e should be byte string because they are collected from stdout and stderr?if isinstance(o, str):# TODO: some problem with 'string_escape': it escape \n and mess up formating# uo = unicode(o.encode('string_escape'))# uo = o.decode('latin-1')uo = o.decode('utf-8')else:uo = oif isinstance(e, str):# TODO: some problem with 'string_escape': it escape \n and mess up formating# ue = unicode(e.encode('string_escape'))# ue = e.decode('latin-1')ue = e.decode('utf-8')else:ue = escript = self.REPORT_TEST_OUTPUT_TMPL % dict(id = tid,output = saxutils.escape(uo+ue),)row = tmpl % dict(tid = tid,Class = (n == 0 and 'hiddenRow' or 'none'),style = n == 2 and 'errorCase' or (n == 1 and 'failCase' or 'passCase'),desc = desc,script = script,status = self.STATUS[n],)rows.append(row)if not has_output:returndef _generate_ending(self):return self.ENDING_TMPL############################################################################## # Facilities for running tests from the command line ############################################################################### Note: Reuse unittest.TestProgram to launch test. In the future we may # build our own launcher to support more specific command line # parameters like test title, CSS, etc. class TestProgram(unittest.TestProgram):"""A variation of the unittest.TestProgram. Please refer to the baseclass for command line parameters."""def runTests(self):# Pick HTMLTestRunner as the default test runner.# base class's testRunner parameter is not useful because it means# we have to instantiate HTMLTestRunner before we know self.verbosity.if self.testRunner is None:self.testRunner = HTMLTestRunner(verbosity=self.verbosity)unittest.TestProgram.runTests(self)main = TestProgram############################################################################## # Executing this module from the command line ##############################################################################if __name__ == "__main__":main(module=None) HTMLTestRunner.py

?

注意:HTMLTestRunner 對(duì)應(yīng)的 python2.x、pyhon3.x最新優(yōu)化后的模板文件放到了QQ群:193056556中,有需要的可以進(jìn)群自取。

?

轉(zhuǎn)載于:https://www.cnblogs.com/BlueSkyyj/p/7729374.html

總結(jié)

以上是生活随笔為你收集整理的python - HTMLTestRunner 测试报告模板设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

麻豆视频在线看 | 天天干天天碰 | 国产成人av网址 | 玖玖爱国产在线 | 久久www免费视频 | 久久综合国产伦精品免费 | 玖玖在线精品 | 国产精品 国内视频 | 精品美女在线视频 | 99av国产精品欲麻豆 | 日韩欧美高清不卡 | 在线看v片成人 | 中文在线8资源库 | 日韩在线观 | 欧洲在线免费视频 | 九九热视频在线免费观看 | 久草香蕉在线视频 | 久久激情影院 | 精品在线免费观看 | 黄色不卡av| 狠狠操在线 | 国产伦精品一区二区三区… | 丁香六月综合网 | 久久久免费国产 | 国产片网站 | 欧美精品v国产精品v日韩精品 | 精品视频成人 | 国产黄色片一级三级 | 免费欧美高清视频 | 一性一交视频 | 欧美天天综合网 | 国产精品久久久久久久久毛片 | 91成人天堂久久成人 | 久久久免费国产 | av中文字幕剧情 | 97精品国产一二三产区 | 91麻豆精品国产自产在线 | 九九热在线观看 | 欧美日韩国产三级 | 国产亚洲精品久久久久久大师 | 精品久久电影 | 日韩大片免费观看 | 久久精品综合一区 | 一区二区激情视频 | 粉嫩av一区二区三区四区 | 久久撸在线视频 | 四虎影院在线观看av | 天堂av在线 | 欧美成人h版在线观看 | 欧美射射射 | 四虎成人在线 | 日韩黄在线观看 | 免费在线观看av | 天天插天天射 | 亚洲三级视频 | 久草免费在线 | 日本精品视频免费观看 | 一级α片 | 国产精品黄色 | 99热高清| 日韩av网站在线播放 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 亚洲电影免费 | 中文字幕亚洲在线观看 | 久久精品美女视频网站 | 日本黄色免费在线观看 | 国产不卡免费av | 国产又黄又爽无遮挡 | 国产成人l区 | 在线天堂中文www视软件 | 在线观看国产永久免费视频 | 81国产精品久久久久久久久久 | a级国产乱理论片在线观看 特级毛片在线观看 | 成人在线免费视频 | 久久久麻豆视频 | 九九视频免费观看视频精品 | 天天操比 | 婷香五月| 亚洲欧美视屏 | 国产精品九九久久久久久久 | 日韩在线三区 | 黄污视频大全 | 精品国产乱码久久久久久天美 | 欧美日性视频 | 色妞色视频一区二区三区四区 | 久久任你操| 国产精品精品久久久久久 | 久久综合九色综合97_ 久久久 | 色视频 在线| 久草在线视频看看 | 91最新国产 | 日韩理论影院 | 欧美精品中文字幕亚洲专区 | 精品乱码一区二区三四区 | 精品美女在线视频 | 久草在线资源观看 | 久久精品这里热有精品 | 国产精品免费久久久 | 国产精品一区二区在线 | 亚洲天天看 | 最近中文字幕视频完整版 | 国产一区二区播放 | 精品欧美小视频在线观看 | 午夜影院日本 | 免费高清在线观看成人 | 国产精品第二页 | 少妇性色午夜淫片aaaze | 国产精品久久久久久久久久久久久 | 激情五月在线观看 | 99这里精品 | 久久综合婷婷 | 色偷偷88888欧美精品久久久 | 中文字幕资源网 国产 | 国产亚洲va综合人人澡精品 | av中文字幕在线播放 | 黄色com| 亚洲精品在线视频播放 | 天天射天天干天天爽 | 综合激情av| 久久亚洲免费视频 | 日本护士三级少妇三级999 | 99久久精品免费看国产免费软件 | 欧美一级欧美一级 | 九九在线视频免费观看 | 亚州成人av在线 | 久亚洲精品 | 少妇做爰k8经典 | 91在线免费观看网站 | 日韩手机在线 | 玖操| 欧美va天堂va视频va在线 | 欧美日韩一区三区 | 99精品久久99久久久久 | 中文伊人 | 色射爱| 国产成人精品一区二区在线观看 | 天天射天天干 | 欧美久久久一区二区三区 | 欧美精品第一 | 麻豆91精品91久久久 | 黄视频网站大全 | 国产一区免费在线观看 | 久久超碰97| 国产精品久久久久久久久久直播 | 91成人亚洲 | 亚洲国产精品99久久久久久久久 | 欧美国产不卡 | 久久免费的精品国产v∧ | 伊人黄色网 | 国产精品久久久久久久午夜片 | 亚洲天堂毛片 | 97在线视| 在线亚洲激情 | av黄色在线观看 | 国产精品18久久久久久久网站 | 99精品视频在线播放免费 | 日本精品中文字幕在线观看 | 91在线色| 97人人超碰在线 | 在线免费观看欧美日韩 | avav99| 日韩视频www | 国产亚洲91 | 国产人成在线视频 | 欧美一区二区在线免费看 | 成人资源网 | 欧美 另类 交 | 亚洲国产成人在线 | 亚洲欧美国内爽妇网 | 一区二区影视 | 久久婷婷视频 | 欧美成天堂网地址 | 探花视频免费观看 | 色久av| 亚洲成人av免费 | 色久av| 狠狠操电影网 | 91av蜜桃| 成人av一区二区在线观看 | 97视频免费播放 | 日韩a在线播放 | 探花在线观看 | 天堂在线一区 | 欧美日韩高清国产 | 日韩久久电影 | 成人免费共享视频 | 午夜美女福利 | 欧美亚洲国产一卡 | 少妇视频在线播放 | 欧美精品中文在线免费观看 | 久草在线视频在线观看 | 91精品国产91久久久久福利 | 国产精品久久婷婷六月丁香 | 日韩精品字幕 | 久久艹国产视频 | 久久网站av| 成人在线网站观看 | 精品久久久久久综合日本 | 欧美性猛片 | 日韩欧美精品在线视频 | 美女网站视频免费黄 | 特级毛片网站 | 91.麻豆视频 | 久久视频| 丁香婷婷在线 | 在线精品观看国产 | 精品国产一区二区三区久久久蜜臀 | 国产一区二区在线看 | 在线中文字幕av观看 | 天天爽人人爽夜夜爽 | 麻豆av一区二区三区在线观看 | 精品99免费 | av高清免费在线 | 中文字幕一区在线观看视频 | av免费电影在线观看 | 在线免费黄网站 | 中文区中文字幕免费看 | 欧美色精品天天在线观看视频 | 黄色软件大全网站 | 国产一线二线三线在线观看 | 久久久久久久久福利 | 手机av资源| 久久久久国产一区二区三区 | 亚洲精品网站在线 | 人人澡人人模 | av免费观看高清 | 很黄很污的视频网站 | 国产1区在线| 中文字幕欧美日韩va免费视频 | 国产精品99久久久久人中文网介绍 | 夜夜骑日日 | 91精品国产一区二区在线观看 | av在线中文 | 久久国产影院 | 久久久久久久久久久久久影院 | 午夜在线日韩 | 日本不卡一区二区三区在线观看 | 超碰人人99 | 色午夜 | 天天射天天操天天干 | 天堂va在线观看 | 精品国产乱码一区二区三区在线 | 91人人网| 久久成年视频 | 天天做综合网 | 国内精品久久久久久久 | 精品国产乱码一区二 | 美女视频黄是免费的 | 国产高清免费在线播放 | 九九久久成人 | 久久久久久久久久影院 | 久久亚洲二区 | 在线观看视频在线观看 | 婷婷久久精品 | 六月激情网 | 狠狠操狠狠干天天操 | 天天综合成人网 | 亚洲精品成人免费 | 国产区av在线 | 国产九色91 | 婷五月激情 | 夜夜夜影院 | 88av网站| 亚洲视频 视频在线 | 国产视频色| 成年人看片网站 | 免费看片网址 | 激情久久小说 | 伊人狠狠色丁香婷婷综合 | 成人一区二区在线观看 | 精品视频免费久久久看 | 91精品1区2区 | 午夜黄色大片 | 久久精品精品电影网 | 97精品在线视频 | 亚洲成人999 | 国产伦理精品一区二区 | 久久国语 | 亚洲一区二区91 | 深爱激情五月网 | 精品一二 | 国产一级精品在线观看 | 在线91观看 | 99久久久久久国产精品 | 黄色三级免费观看 | 国产精品女人久久久久久 | 国产一级黄色av | 九九久久视频 | 探花视频免费观看高清视频 | 在线观看精品视频 | 丁香视频在线观看 | 亚洲乱码中文字幕综合 | 91亚洲精品乱码久久久久久蜜桃 | 91九色国产蝌蚪 | 高清不卡毛片 | 手机在线欧美 | 黄p网站在线观看 | 人人干在线 | 99麻豆视频 | 国产明星视频三级a三级点| 国内精品久久久精品电影院 | 中日韩欧美精彩视频 | 一区二区三区视频在线 | 片黄色毛片黄色毛片 | 久久精品—区二区三区 | 精品亚洲男同gayvideo网站 | 香蕉视频亚洲 | 国产精品久久久久一区二区三区共 | 国产一区视频导航 | 婷婷激情av | 色五月色开心色婷婷色丁香 | 午夜精品久久久久久久99水蜜桃 | 五月激情电影 | 精品久久九九 | 久草www | 中文字幕在线久一本久 | 激情久久五月天 | 日韩h在线观看 | 一本一本久久a久久精品综合小说 | 天堂av在线 | 狠狠躁天天躁综合网 | 久久精品国产一区 | 日韩一区二区在线免费观看 | 免费成人av| 久久精彩免费视频 | 色综合综合| 国产精品原创在线 | 国产成人av综合色 | 中国一级片在线 | 欧美 日韩 性 | 狠狠操欧美 | 四虎永久网站 | 超级碰视频 | av在线播放亚洲 | 久久看片网站 | 黄色软件视频大全免费下载 | 日韩一区在线播放 | 不卡电影一区二区三区 | 国产电影一区二区三区四区 | 在线久草视频 | 91精品国产乱码久久桃 | 91av网址 | 一区二区三区在线免费 | 一本一道久久a久久综合蜜桃 | 91精品少妇偷拍99 | 亚洲精品国产精品国自产在线 | 97人人模人人爽人人少妇 | 久久国产高清视频 | www.久久精品视频 | 人九九精品 | 91精品国产欧美一区二区 | 欧美日韩在线播放 | 在线成人中文字幕 | 97影视| 天天综合色 | 中文av资源站 | 在线观看视频在线观看 | 日韩精选在线观看 | 麻豆久久久 | 色婷婷免费视频 | 久久久99国产精品免费 | 激情久久久久久久久久久久久久久久 | 亚洲精品美女久久 | 日韩欧美电影在线 | 在线观看成人国产 | 欧美中文字幕第一页 | 亚洲乱码精品久久久 | 91九色老 | 男女激情麻豆 | 黄色福利网站 | 99热在线观看免费 | 日韩在线播放av | 日韩欧美区 | 美女黄久久 | 又大又硬又黄又爽视频在线观看 | 国产日韩欧美视频在线观看 | www.eeuss影院av撸 | 国产午夜精品免费一区二区三区视频 | 久草在线免费色站 | 91大神视频网站 | 国产在线视频一区二区三区 | 国产精品久久久久9999吃药 | 中文字幕乱码电影 | 欧美日韩国产页 | 国产麻豆精品一区二区 | 久av电影| 亚洲国产av精品毛片鲁大师 | 久久午夜免费观看 | 最近更新的中文字幕 | 亚洲开心色 | 99热国产在线中文 | 国产玖玖精品视频 | 丁香婷婷综合网 | 久草观看 | 久久黄色免费视频 | 日本中文字幕视频 | 久久久综合九色合综国产精品 | 亚洲干视频在线观看 | 欧美精品在线观看 | 久久国产午夜精品理论片最新版本 | 婷婷综合影院 | 丝袜美腿亚洲 | 成人免费观看完整版电影 | 国产午夜精品理论片在线 | 五月婷婷香蕉 | 国产高清视频免费最新在线 | 天天天天综合 | 成人在线免费视频 | 久久国产电影院 | 日躁夜躁狠狠躁2001 | www91在线 | 999成人网 | 国产91免费在线观看 | 国产精品欧美一区二区三区不卡 | 亚洲精品午夜久久久 | 91自拍视频在线观看 | 亚洲精品色视频 | av在线中文 | 亚洲,国产成人av | 在线视频一区观看 | 国产成人99av超碰超爽 | 手机在线看永久av片免费 | 天干啦夜天干天干在线线 | 色综合久久88色综合天天免费 | 狠狠色丁香久久婷婷综 | 一区二区三区日韩精品 | 久久99精品久久久久久 | 六月丁香婷 | 亚洲一区网 | 91视频免费观看 | 91激情视频在线观看 | 婷婷色五 | 在线久热 | 肉色欧美久久久久久久免费看 | 中文字幕4 | 91成人精品一区在线播放 | 久久久久久久国产精品影院 | 中文字幕电影在线 | 精品免费久久 | 五月婷婷久| 91在线一区二区 | 四虎www com| 99精品久久久久久久久久综合 | 丁香九月婷婷综合 | 丰满少妇久久久 | 久草在线精品观看 | 亚洲欧美日韩在线一区二区 | 色偷偷中文字幕 | 99r在线观看 | 91免费观看国产 | 在线观看一区二区精品 | 亚洲伊人第一页 | 国产精品亚洲综合久久 | 最新中文字幕 | 亚洲高清视频在线 | 久久精品免费 | 色婷婷综合久久久中文字幕 | av久久久久久 | av在线中文 | 人人干狠狠操 | 久久综合久久综合这里只有精品 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 97在线观看视频国产 | 18性欧美xxxⅹ性满足 | 九九九热精品免费视频观看 | av在线a| 99久久精品无免国产免费 | 五月天亚洲精品 | 日本爱爱免费 | av免费看看| 日本久久成人中文字幕电影 | 精品99在线视频 | 91尤物国产尤物福利在线播放 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 超碰日韩在线 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 黄色免费在线视频 | 欧美日韩电影在线播放 | 啪啪凸凸 | 国产999视频在线观看 | 麻豆国产视频 | 国产男女免费完整视频 | 国产在线国偷精品产拍 | 狠狠地日| 色九九视频 | 国产精品久久久av | 高清免费在线视频 | 精品欧美小视频在线观看 | 综合色中文 | 97人人添人澡人人爽超碰动图 | 精品av在线播放 | 男女全黄一级一级高潮免费看 | 国产vs久久 | 亚洲午夜电影网 | 日日夜夜精品视频天天综合网 | 特黄免费av | 国产一级视屏 | 中文字幕专区高清在线观看 | 天天干天天射天天爽 | 香蕉免费在线 | 色婷婷骚婷婷 | 久久精品国产精品亚洲精品 | 久久综合在线 | 黄免费在线观看 | 人人澡人摸人人添学生av | 亚洲少妇天堂 | 欧美日韩中文在线 | 色综合久久88色综合天天人守婷 | 欧美国产日韩一区二区三区 | 欧美日韩国产伦理 | 国产在线不卡视频 | 亚洲综合小说 | 欧美成人精品欧美一级乱黄 | 国产999视频在线观看 | 精品一区 精品二区 | 91精品视频一区 | 国产精品久久久久四虎 | 亚洲综合视频在线 | 激情综合五月婷婷 | 欧美男同网站 | 国产精品综合av一区二区国产馆 | 粉嫩av一区二区三区四区在线观看 | 成人在线观看资源 | 日本少妇高清做爰视频 | 99精品久久久久久久久久综合 | 亚洲精品综合欧美二区变态 | 国产精品亚洲片在线播放 | 蜜桃麻豆www久久囤产精品 | 五月婷婷视频 | 久久综合九色综合久久久精品综合 | 99精品国产免费久久久久久下载 | 99热最新地址 | 97视频在线观看免费 | 人人舔人人爽 | 亚州av网站| 久久无码精品一区二区三区 | 国产原创91| 四虎永久视频 | 日批网站在线观看 | 国际精品久久久久 | 免费成人av在线看 | 91福利视频久久久久 | 日韩精品电影在线播放 | 久久精品这里都是精品 | av先锋中文字幕 | 6080yy精品一区二区三区 | www.久久精品视频 | 欧美亚洲免费在线一区 | 伊人久久电影网 | 在线观看免费高清视频大全追剧 | 久久精品9 | 五月婷久| 日本精品二区 | 91丨精品丨蝌蚪丨白丝jk | 美女久久久久久久久久久 | 亚洲国产欧美在线人成大黄瓜 | 日韩视频免费观看高清完整版在线 | 99久久久久免费精品国产 | 成人免费大片黄在线播放 | 日韩免费一区二区三区 | 久久看片网站 | 久草久草视频 | 一区二区三区四区影院 | 国产拍揄自揄精品视频麻豆 | 蜜臀久久99静品久久久久久 | 99久久精品国产亚洲 | 国产精品毛片久久久久久 | 天天摸天天干天天操天天射 | 国产精品观看视频 | 中文字幕黄色网 | 中文字幕电影在线 | 碰超人人 | 五月天激情婷婷 | 91在线视频免费播放 | 精品久久久久一区二区国产 | 日韩超碰在线 | 九九热免费在线视频 | 在线亚洲高清视频 | 天天色天天色天天色 | 日韩视频一区二区三区 | 啪啪av在线 | 久久99国产综合精品 | 免费亚洲成人 | 国产精品aⅴ | 亚洲一级免费观看 | 久久精品中文字幕免费mv | www.eeuss影院av撸| 中文字幕在线看片 | 免费视频久久久 | 国产青草视频在线观看 | 毛片a级片| 久久国产a | 国产91在线 | 美洲 | 久草在线免费电影 | 免费看久久久 | 国产精品久久久精品 | 久久99精品视频 | 人人涩| 在线激情影院一区 | 在线免费观看国产视频 | 国产又粗又硬又爽视频 | 国产精品孕妇 | 中文字幕在线观看一区二区三区 | 一级片免费观看 | 日韩电影一区二区三区在线观看 | 国产免费三级在线观看 | 韩日精品在线 | 久久av网| 久久久久久黄色 | 精品产品国产在线不卡 | 国产成本人视频在线观看 | 亚洲精品国偷拍自产在线观看 | 日韩91av | 午夜体验区 | 91精品国产综合久久福利 | 日韩精品在线一区 | 中文字幕一区二区三区乱码在线 | 欧美精品少妇xxxxx喷水 | 日本中文字幕免费观看 | 成年人看片网站 | 久久99精品国产99久久 | 久久久久久网站 | 中文字幕 二区 | 99国产成+人+综合+亚洲 欧美 | 91亚洲精品久久久 | 中文字幕一区av | 黄色av免费看 | 少妇性xxx| 手机看片久久 | 天堂av免费| 超碰人人超 | 日韩最新在线视频 | 在线看污网站 | 亚洲午夜久久久久久久久久久 | 国产精品18久久久久白浆 | 国产女v资源在线观看 | 99久热在线精品视频成人一区 | av高清一区二区三区 | 人人爽人人看 | 国产三级久久久 | 久久a v视频| 高清av中文在线字幕观看1 | 欧美性网站 | 蜜桃av观看| 99精品欧美一区二区 | 久久国产视频网站 | 久久免费在线 | 亚洲一区二区三区毛片 | 精品国产大片 | 一区二区三区日韩精品 | 国产一区视频在线观看免费 | 中文字幕高清免费日韩视频在线 | 丝袜一区在线 | 国产精品免费大片视频 | 国产精品mv在线观看 | 国产你懂的在线 | 在线激情影院一区 | 欧美国产日韩在线观看 | 日韩中文在线视频 | 久久人人爽av | 九九av | 91在线视频观看免费 | 国产成人精品免费在线观看 | 91在线网站| 色综合久久综合网 | 3d黄动漫免费看 | 日韩中文字幕免费看 | 成人a毛片| 国产日韩欧美在线观看视频 | 干干操操| av午夜电影 | 丁香五月网久久综合 | 九草视频在线观看 | 精品一区二区三区在线播放 | 91专区在线观看 | 蜜臀一区二区三区精品免费视频 | 国产99久久久久久免费看 | 久久久久在线视频 | 激情伊人五月天 | 久久久久久久久综合 | 国产999精品久久久久久绿帽 | 福利视频一区二区 | 日韩有码在线观看视频 | 欧美少妇xxxxxx | 不卡的av在线 | 18国产精品福利片久久婷 | 97视频久久久 | 亚洲 成人 一区 | 亚洲国产精品500在线观看 | 国产99在线播放 | av网站手机在线观看 | 亚洲国产午夜 | 国产在线久草 | 在线国产日本 | 国产中文字幕大全 | 999视频网站 | 在线观看免费福利 | 天天草综合网 | 天天干天天爽 | 亚洲精品91天天久久人人 | 97在线成人| 在线看片一区 | 精品亚洲免a | 在线视频日韩欧美 | 欧美成人一二区 | 日韩av一区二区在线 | 国产成在线观看免费视频 | 黄色三级在线观看 | 免费看黄电影 | 五月婷婷色丁香 | 国产精品一区专区欧美日韩 | 伊人激情网 | 日韩av电影中文字幕在线观看 | 国产视频一区在线免费观看 | 日韩欧美xx | 久久社区视频 | 亚洲乱码精品久久久久 | 99精品亚洲 | 日韩视频1| 久久视频| 日韩大片在线播放 | 一区二区精品视频 | 99久久久国产精品免费观看 | 69中文字幕 | 亚洲欧美精品一区 | 精品久久久久久亚洲综合网 | 精品国产1区2区 | 91豆麻精品91久久久久久 | 在线免费视 | 国产成人61精品免费看片 | 日韩欧美国产精品 | 日韩欧美在线第一页 | 96精品视频| 欧美精品一区二区免费 | 狠狠操天天射 | 久久欧洲视频 | 人人操日日干 | 亚洲影视资源 | 在线观看免费一级片 | 久久黄页 | 91成人在线观看喷潮 | 欧美ⅹxxxxxx| 成人黄色大片网站 | 亚洲国产精品999 | 在线观看中文 | 99色国产| 国产女人18毛片水真多18精品 | 久草视频在线看 | 精品国产一区二区三区av性色 | 色偷偷888欧美精品久久久 | 欧美日韩视频在线播放 | 一区二区激情 | 中文在线天堂资源 | 国产精品99久久久精品免费观看 | 在线观看网站你懂的 | 97国产精品久久 | 欧美a√在线 | 在线播放国产一区二区三区 | 成人免费视频网址 | 久久超碰网| 日韩av免费大片 | 亚洲国产成人久久综合 | 久久99精品热在线观看 | 色吊丝在线永久观看最新版本 | 五月婷香蕉久色在线看 | 欧美综合在线视频 | 激情久久久久 | 日韩69av | 91亚洲精品久久久 | 午夜在线观看影院 | 国产在线1区| 国产精品久久久久久久电影 | 久久天天操 | 视频在线观看国产 | 国产剧情一区在线 | 99性视频 | 日韩av在线高清 | 天天操天天射天天舔 | a在线播放 | 四虎成人精品永久免费av | 亚洲激情在线 | 亚洲精品自拍视频在线观看 | 操操操人人 | 免费日韩电影 | 日韩一二三 | 亚洲精品国产综合99久久夜夜嗨 | 韩国一区在线 | 国产va饥渴难耐女保洁员在线观看 | 中文字幕一区二区三区四区在线视频 | 91av在线免费 | 久久久久久久久久伊人 | 久久综合久久综合久久综合 | 亚州激情视频 | 国产精品99久久久精品免费观看 | 久草国产精品 | 97超碰国产精品 | 91视频最新网址 | 国产96视频| 国产黄色网 | 午夜精品久久久久久久久久 | 激情xxxx| 成人97视频 | 最近中文字幕高清字幕免费mv | 69精品久久久 | 天天爽天天爽天天爽 | 国产精品久久久久久久久搜平片 | 久久久影院一区二区三区 | 国产97在线视频 | 91视频链接 | 美女国内精品自产拍在线播放 | 国产一区久久 | 国产 精品 资源 | 99人久久精品视频最新地址 | 99久久99热这里只有精品 | 成人免费观看视频大全 | 国产高清成人在线 | 久久久国产影院 | 久久精品—区二区三区 | 久久久免费 | 丰满少妇在线观看 | 免费高清在线观看成人 | 国产不卡片 | 粉嫩一区二区三区粉嫩91 | 中文有码在线视频 | 精品国产色| 99人久久精品视频最新地址 | 黄色成人影院 | 欧美日韩三区二区 | 91在线视频观看免费 | 久久伦理电影网 | 四虎成人精品永久免费av | 国产精品大片在线观看 | 中文字幕色播 | 国产精品久久一 | 精品久久在线 | 久久久精品欧美 | 在线视频区| 久久手机免费视频 | 日本护士撒尿xxxx18 | 91av欧美| 美国av大片 | 午夜在线看片 | 干天天 | 欧美日韩一区二区视频在线观看 | 日本三级国产 | 三级av片| 91九色网站| 国产三级精品三级在线观看 | 97视频人人 | 天天撸夜夜操 | 国产精品久久久久久久久软件 | 亚洲视频精选 | 国产不卡免费视频 | 日韩综合一区二区 | 77国产精品 | 日韩视频一区二区三区在线播放免费观看 | 免费av在线网 | 日韩黄色免费在线观看 | 中中文字幕av在线 | 免费在线看成人av | 超碰免费av | 欧美特一级片 | 在线观看a视频 | 日本动漫做毛片一区二区 | 91探花系列在线播放 | 久久在线免费视频 | 午夜精品av在线 | 激情欧美日韩一区二区 | 天天色播 | 国产一区影院 | 99爱视频 | 91入口在线观看 | 欧美日韩精品国产 | 国产精品久久久久久久久久久免费看 | 在线网址你懂得 | 日韩欧美成 | 久久人人爽人人片av | 国产精品入口66mio女同 | 91麻豆精品国产自产 | av在线电影免费观看 | 日韩69视频 | 日日干网| 欧美资源 | 成人毛片在线观看视频 | 婷婷六月综合亚洲 | 热re99久久精品国产66热 | 九色一区二区 | 亚洲天堂首页 | 五月婷婷综合网 | 婷婷在线视频观看 | 人成免费网站 | 日本xxxx.com| 久久国产三级 | 69视频国产| 欧洲亚洲女同hd | 国产视频一区二区三区在线 | 亚洲精品久久久久中文字幕m男 | 四虎国产精品永久在线国在线 | 亚洲国产成人在线观看 | 特级a老妇做爰全过程 | 最近中文字幕免费视频 | 婷婷六月天丁香 | 69国产精品视频免费观看 | 日韩久久网站 | 欧美va天堂在线电影 | 免费久久精品视频 | 热久久免费视频精品 | 欧美 亚洲 另类 激情 另类 | 91手机视频| 欧美一二区视频 | 亚洲精品视频在线观看视频 | 日韩免费一区二区三区 | 999精品| 黄色成人在线 | 国产精品99久久久久久久久久久久 | 97免费视频在线播放 | 欧美精品亚洲二区 | 在线播放国产精品 | 精品中文字幕在线观看 | 97在线超碰| 中文字幕日本特黄aa毛片 | 欧美日韩免费在线观看视频 | 中文字幕在线国产精品 | 久久国产精品99久久久久久进口 | 五月婷婷操 | 日本中文字幕在线电影 | 草久久精品| 五月天综合激情 | 人人超碰免费 | 九九综合久久 | 91九色视频在线 | 亚洲精品美女 | 国产在线不卡视频 | 91黄色影视| 色网站视频 | 在线视频你懂 | 国精产品永久999 | 99久久夜色精品国产亚洲96 | 亚洲视频在线观看 | 欧美久草网 | 午夜精品福利一区二区三区蜜桃 | 日韩精品中文字幕在线 | 最近免费观看的电影完整版 | 久久视频网 | 天天操天天是 | 亚洲精品欧美精品 | 色99在线 | 日免费视频 | 免费看三级网站 | 亚洲欧美视频在线播放 | 日韩黄色免费看 | 一级成人免费 | 亚洲欧美日韩一二三区 | 国产天天爽 | 人人爽人人插 | 精品国产精品一区二区夜夜嗨 | 色婷婷激婷婷情综天天 | 久久久久久麻豆 | 香蕉视频在线看 | h视频日本 | 天天干,天天操 | 国产午夜精品一区二区三区嫩草 | 国产精品18p | 精品久久99 | 欧美激情亚洲综合 | 91九色在线观看 | 欧美日韩首页 | www.久久久久 | 丁香花五月| 男女精品久久 | 97超碰在线资源 | 久久久久久看片 | 国产在线一卡 | 美女视频是黄的免费观看 | 日韩高清精品免费观看 | 欧美一二三在线 | 欧美 高跟鞋交 xxxxhd | 国产v在线播放 | 国产美女黄网站免费 | 免费美女av | 97在线观看视频免费 | 天天操夜夜爱 | 久久久久久久久久影视 | 三级黄色网址 | 国产成人在线精品 | 国产精品毛片一区 | 国产精品久久久久久久久久99 | 欧美精品一区二区蜜臀亚洲 | av日韩精品 | 国产视频一区二区在线 | 午夜视频在线观看一区 | 日日射av| 天天综合天天做天天综合 | 一区二区 久久 | 欧美一级免费高清 | 亚洲经典在线 | 婷婷伊人五月 | 人人爽人人爽人人片av |