jenkins+jmeter+ant自动化接口测试集成

搭建环境(JDK、Ant、Jmeter、Jenkin最近版本):

JDK:jdk1.8.0_60

Ant:apache-ant-1.10.2

Jmeter: apache-jmeter-3.0

Jenkins:Jenkins 2.88

1、JDK的安装

双击JDK安装包,选择安装路径C:\Progrom Files\Java\jdk1.8.0_60路径下);

 


1)系统变量→新建 JAVA_HOME 变量 。

变量值填写jdk的安装目录(本人是 C:\Progrom Files\Java\jdk1.8.0_60);

 

2)系统变量→寻找 Path 变量→编辑

在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)

 

3)系统变量→新建 CLASSPATH 变量

变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意最前面有一点)

系统变量配置完毕

4)检验是否配置成功 运行cmd 输入 java -version (java 和 -version 之间有空格)

 

2、jmeter安装

1)解压apache-jmeter-3.0.zip到D:\Progrom Files目录下。

 

2)将以下两个文件夹下的插件拷贝到D:\Progrom Files\apache-jmeter-3.0\lib\ext目录下

 

 

3)环境变量配置


a、 设置环境变量,新建系统变量在变量名中输入:JMETER_HOME,变量值中输入:D:\Progrom Files\apache-jmeter-3.0,点击确定即可。

b、在环境变量CLASSSPATH中添加%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;

%JMETER_HOME%\lib\logkit-2.0.jar;(注意:你要看下你的是不是logkit-2.0这个版本).

c、 检验是否配置成功 运行cmd 输入 jmeter -v (jmeter和 -v 之间有空格)

若如图所示 显示版本信息 则说明安装和配置成功。

 

3、安装ant

1)解压apache-ant-1.10.2.zip到D:\Progrom Files目录下;

 

2)配置环境变量

a、新建以下环境变量

ANT_HOME:D:\Progrom Files\apache-ant-1.9.7,此为你的ANT安装路径;

b、在环境变量PATH的最后面添加一下内容:

;%ANT_HOME%\bin 注意前面的分号,如果PATH中最后没有分号";"的话要加上,有的话就可去除。

c、进入cmd命令窗口,在CMD窗口中输入ant -version,敲击回城键,会显示出你安装的ANT版本,如果成功显示,说明你的配置应该是成功了。

 

3)本地调试使用ant构建运行Jmeter,并且生成jtl、Html报告;


jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,修改jmeter.properties文件 jmeter.save.saveservice.output_format=xml;
将apache-jmeter-3.0\extras\ant-jmeter-1.1.1.jar拷贝到apache-ant-1.10.2\lib目录下;
配置D:\Program Files\apache-jmeter-3.0\extras目录下build.xml文件
build文件配置

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<!-- (1)需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\Program Files\apache-jmeter-3.0"/>
<property name="report.title" value="report"/>
<!-- (2)jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\Program Files\apache-jmeter-3.0\reports\jtl"/>
<!-- (3)jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\Program Files\apache-jmeter-3.0\reports\html"/>
<!-- 生成的报告的前缀 -->
<property name="ReportName" value="TestReport"/>
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html"/>

<target name="run"> 
<antcall target="test"/> 
<antcall target="report"/> 
<!--antcall target="mail"/--> 
</target>
<target name="test"> 
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/> 
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 
<!-- (4)build.xml的存放的路径-->
<testplans dir="D:\Program Files\apache-jmeter-3.0\demo" includes="*.jmx"/> 
<property name="jmeter.save.saveservice.output_format" value="xml"/> 
</jmeter> 
</target>
<path id="xslt.classpath"> 
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 
</path>
<target name="report"> 
<tstamp> 
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
</tstamp> 
<xslt 
classpathref="xslt.classpath" 
force="true" 
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report.xsl"> 
<param name="dateReport" expression="${report.datestamp}"/> 
</xslt> 

<copy todir="${jmeter.result.html.dir}"> 
<fileset dir="${jmeter.home}/extras"> 
<include name="collapse.png"/> 
<include name="expand.png"/> 
</fileset> 
</copy> 
</target>
<path id="lib_classpath">
<fileset dir="${basedir}/">
<include name="mail*.jar" />
<include name="activation*.jar" />
<include name="commons-email*.jar" />
<include name="ant-contrib*.jar" />
</fileset>
</path>
<!--target name="mail">
<for list="[email protected]" param="tmp" >
<sequential>
<echo>message @{tmp}</echo> 
<mail mailhost="smtp.thunisoft.com" mailport="25" ssl="false" subject="ant mail" messagemimetype="text/html" user="zhangjn" password="*******" tolist="@{tmp}">
<from address="[email protected]" />
<fileset dir="${jmeter.result.html.dir}">
<include name="*.html" />
<include name="*.png" />
</fileset>
<message>支持多人同时发邮件!!<br /><br /></message>
</mail>
</sequential>
</for>
</target-->
</project>

  

备注:注释中的(1)(2)(3)(4)该成自己的路径;jmeter-results-detail-report.xsl这个配置值在你的

${jmeter.home}/extras目录下是不是这个名称,配置改成你对应的名称就可以了;把build.xml文件放到(4)中配置的这个路径中
D:\Program Files\apache-jmeter-3.0\demo,并把要执行的脚本也放到同一目录下,如图:


5、cmd到demo的目录下执行ant命令,如图:

 

以上说明执行成功了,到你配置的报告目录下去看生成的报告D:\Program Files\apache-jmeter-3.0\reports\html

 

备注:如果生成的报告为空的,可能是你的jmeter-results-detail-report.xsl配置有问题可以参考一下配置:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<!-- 
Stylesheet for processing 2.1 output format test result files 
To uses this directly in a browser, add the following to the JTL file as line 2:
<?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report_21.xsl"?>
and you can then view the JTL in a browser
-->

<xsl:output method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />

<!-- Defined parameters (overrideable) -->
<xsl:param name="showData" select="‘n‘"/>
<xsl:param name="titleReport" select="‘Load Test Results‘"/>
<xsl:param name="dateReport" select="‘date not defined‘"/>

<xsl:template match="testResults">
<html>
<head>
<title><xsl:value-of select="$titleReport" /></title>
<style type="text/css">
body {
font:normal 68% verdana,arial,helvetica;
color:#000000;
}
table tr td, table tr th {
font-size: 68%;
}
table.details tr th{
color: #ffffff;
font-weight: bold;
text-align:center;
background:#2674a6;
white-space: nowrap;
}
table.details tr td{
background:#eeeee0;
white-space: nowrap;
}
h1 {
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
}
h2 {
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
}
h3 {
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
}
.Failure {
font-weight:bold; color:red;
}


img
{
border-width: 0px;
}

.expand_link
{
position=absolute;
right: 0px;
width: 27px;
top: 1px;
height: 27px;
}

.page_details
{
display: none;
}

.page_details_expanded
{
display: block;
display/* hide this definition from IE5/6 */: table-row;
}


</style>
<script language="JavaScript"><![CDATA[
function expand(details_id)
{

document.getElementById(details_id).className = "page_details_expanded";
}

function collapse(details_id)
{

document.getElementById(details_id).className = "page_details";
}

function change(details_id)
{
if(document.getElementById(details_id+"_image").src.match("expand"))
{
document.getElementById(details_id+"_image").src = "collapse.png";
expand(details_id);
}
else
{
document.getElementById(details_id+"_image").src = "expand.png";
collapse(details_id);
} 
}
]]></script>
</head>
<body>

<xsl:call-template name="pageHeader" />

<xsl:call-template name="summary" />
<hr size="1" width="95%" align="center" />

<xsl:call-template name="pagelist" />
<hr size="1" width="95%" align="center" />

<xsl:call-template name="detail" />

</body>
</html>
</xsl:template>

<xsl:template name="pageHeader">
<h1><xsl:value-of select="$titleReport" /></h1>
<table width="100%">
<tr>
<td align="left">Date report: <xsl:value-of select="$dateReport" /></td>
<td align="right">Designed for use with <a >JMeter</a> and <a >Ant</a>.</td>
</tr>
</table>
<hr size="1" />
</xsl:template>

<xsl:template name="summary">
<h2>Summary</h2>
<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th># Samples</th>
<th>Failures</th>
<th>Success Rate</th>
<th>Average Time</th>
<th>Min Time</th>
<th>Max Time</th>
</tr>
<tr valign="top">
<xsl:variable name="allCount" select="count(/testResults/*)" />
<xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s=‘false‘])" />
<xsl:variable name="allSuccessCount" select="count(/testResults/*[attribute::s=‘true‘])" />
<xsl:variable name="allSuccessPercent" select="$allSuccessCount div $allCount" />
<xsl:variable name="allTotalTime" select="sum(/testResults/*/@t)" />
<xsl:variable name="allAverageTime" select="$allTotalTime div $allCount" />
<xsl:variable name="allMinTime">
<xsl:call-template name="min">
<xsl:with-param name="nodes" select="/testResults/*/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="allMaxTime">
<xsl:call-template name="max">
<xsl:with-param name="nodes" select="/testResults/*/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$allFailureCount > 0">Failure</xsl:when>
</xsl:choose>
</xsl:attribute>
<td align="center">
<xsl:value-of select="$allCount" />
</td>
<td align="center">
<xsl:value-of select="$allFailureCount" />
</td>
<td align="center">
<xsl:call-template name="display-percent">
<xsl:with-param name="value" select="$allSuccessPercent" />
</xsl:call-template>
</td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allAverageTime" />
</xsl:call-template>
</td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allMinTime" />
</xsl:call-template>
</td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allMaxTime" />
</xsl:call-template>
</td>
</tr>
</table>
</xsl:template>

<xsl:template name="pagelist">
<h2>Pages</h2>
<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>URL</th>
<th># Samples</th>
<th>Failures</th>
<th>Success Rate</th>
<th>Average Time</th>
<th>Min Time</th>
<th>Max Time</th>
<th></th>
</tr>
<xsl:for-each select="/testResults/*[not(@lb = preceding::*/@lb)]">
<xsl:variable name="label" select="@lb" />
<xsl:variable name="count" select="count(../*[@lb = current()/@lb])" />
<xsl:variable name="failureCount" select="count(../*[@lb = current()/@lb][attribute::s=‘false‘])" />
<xsl:variable name="successCount" select="count(../*[@lb = current()/@lb][attribute::s=‘true‘])" />
<xsl:variable name="successPercent" select="$successCount div $count" />
<xsl:variable name="totalTime" select="sum(../*[@lb = current()/@lb]/@t)" />
<xsl:variable name="averageTime" select="$totalTime div $count" />
<xsl:variable name="minTime">
<xsl:call-template name="min">
<xsl:with-param name="nodes" select="../*[@lb = current()/@lb]/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="maxTime">
<xsl:call-template name="max">
<xsl:with-param name="nodes" select="../*[@lb = current()/@lb]/@t" />
</xsl:call-template>
</xsl:variable>
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$failureCount > 0">Failure</xsl:when>
</xsl:choose>
</xsl:attribute>
<td>
<xsl:if test="$failureCount > 0">
<a><xsl:attribute name="href">#<xsl:value-of select="$label" /></xsl:attribute>
<xsl:value-of select="$label" />
</a>
</xsl:if>
<xsl:if test="0 >= $failureCount">
<xsl:value-of select="$label" />
</xsl:if>
</td>
<td align="center">
<xsl:value-of select="$count" />
</td>
<td align="center">
<xsl:value-of select="$failureCount" />
</td>
<td align="right">
<xsl:call-template name="display-percent">
<xsl:with-param name="value" select="$successPercent" />
</xsl:call-template>
</td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$averageTime" />
</xsl:call-template>
</td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$minTime" />
</xsl:call-template>
</td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$maxTime" />
</xsl:call-template>
</td>
<td align="center">
<a href="">
<xsl:attribute name="href"><xsl:text/>javascript:change(‘page_details_<xsl:value-of select="position()" />‘)</xsl:attribute>
<img src="expand.png" alt="expand/collapse"><xsl:attribute name="id"><xsl:text/>page_details_<xsl:value-of select="position()" />_image</xsl:attribute></img> 
</a>
</td>
</tr>

<tr class="page_details">
<xsl:attribute name="id"><xsl:text/>page_details_<xsl:value-of select="position()" /></xsl:attribute>
<td colspan="8" bgcolor="#FF0000">
<div align="center">
<b>Details for Page "<xsl:value-of select="$label" />"</b>
<table bordercolor="#000000" bgcolor="#2674A6" border="0" cellpadding="1" cellspacing="1" width="95%">
<tr>
<th>Thread</th>
<th>Iteration</th>
<th>Time (milliseconds)</th>
<th>Bytes</th>
<th>Success</th>
</tr>

<xsl:for-each select="../*[@lb = $label and @tn != $label]"> 
<tr>
<td><xsl:value-of select="@tn" /></td>
<td align="center"><xsl:value-of select="position()" /></td>
<td align="right"><xsl:value-of select="@t" /></td>
<!-- TODO allow for missing bytes field -->
<td align="right"><xsl:value-of select="@by" /></td>
<td align="center"><xsl:value-of select="@s" /></td>
</tr>
</xsl:for-each>

</table>
</div>
</td>
</tr>

</xsl:for-each>
</table>
</xsl:template>

<xsl:template name="detail">
<xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s=‘false‘])" />

<xsl:if test="$allFailureCount > 0">
<h2>Failure Detail</h2>

<xsl:for-each select="/testResults/*[not(@lb = preceding::*/@lb)]">

<xsl:variable name="failureCount" select="count(../*[@lb = current()/@lb][attribute::s=‘false‘])" />

<xsl:if test="$failureCount > 0">
<h3><xsl:value-of select="@lb" /><a><xsl:attribute name="name"><xsl:value-of select="@lb" /></xsl:attribute></a></h3>

<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>Response</th>
<th>Failure Message</th>
<xsl:if test="$showData = ‘y‘">
<th>Response Data</th>
</xsl:if>
</tr>

<xsl:for-each select="/testResults/*[@lb = current()/@lb][attribute::s=‘false‘]">
<tr>
<td><xsl:value-of select="@rc | @rs" /> - <xsl:value-of select="@rm" /></td>
<td><xsl:value-of select="assertionResult/failureMessage" /></td>
<xsl:if test="$showData = ‘y‘">
<td><xsl:value-of select="./binary" /></td>
</xsl:if>
</tr>
</xsl:for-each>

</table>
</xsl:if>

</xsl:for-each>
</xsl:if>
</xsl:template>

<xsl:template name="min">
<xsl:param name="nodes" select="/.." />
<xsl:choose>
<xsl:when test="not($nodes)">NaN</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nodes">
<xsl:sort data-type="number" />
<xsl:if test="position() = 1">
<xsl:value-of select="number(.)" />
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template name="max">
<xsl:param name="nodes" select="/.." />
<xsl:choose>
<xsl:when test="not($nodes)">NaN</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nodes">
<xsl:sort data-type="number" order="descending" />
<xsl:if test="position() = 1">
<xsl:value-of select="number(.)" />
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template name="display-percent">
<xsl:param name="value" />
<xsl:value-of select="format-number($value,‘0.00%‘)" />
</xsl:template>

<xsl:template name="display-time">
<xsl:param name="value" />
<xsl:value-of select="format-number($value,‘0 ms‘)" />
</xsl:template>

</xsl:stylesheet>

 

 

4、jenkins安装

1)之前本地已经安装过jenkins了,这里就不在讲如何安装jenkins。

2)jenkins构建项目

a、输入任务名称,点击构建一个自由风格的软件项目,点击确定

 

b、在构建中添加Invoke Ant

 

 

 

c、在点击高级

 

配置你在build.xml文件中配置的build.xml的路径,点击保存

d、点击立即构建,出现蓝色说明执行成功了,如图:

 

备注:到你在build.xml中配置的报告路径去找执行后的报告就可以了。————————————————版权声明:本文为CSDN博主「qq_30684681」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_30684681/article/details/79577372

相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个历史类的公众号,欢迎关注
一两拨千金
四肖八码期期准精选资料 东山县| 西林县| 哈巴河县| 普格县| 桂林市| 门头沟区| 凤凰县| 仙居县| 清河县| 大厂| 阳曲县| 澄江县| 米泉市| 上虞市| 靖安县| 贡嘎县| 章丘市| 绍兴县| 辽源市| 句容市| 南皮县| 大港区| 白水县| 巴青县| 涟源市| 滦平县| 梓潼县| 台南市| 德化县| 嘉荫县| 无棣县| 古浪县| 孝义市| 定边县| 海南省| 安仁县| 罗源县| 历史| 德清县| 大同市| 秭归县| 南阳市| 镇安县| 武威市| 乌审旗| 当雄县| 万州区| 沿河| 吉隆县| 丽江市| 松滋市| 哈尔滨市| 姜堰市| 湾仔区| 克什克腾旗| 清涧县| 乌拉特后旗| 杂多县| 汉源县| 泸水县| 甘洛县| 营山县| 达拉特旗| 理塘县| 京山县| 乌鲁木齐县| 浪卡子县| 九龙坡区| 兴安县| 三都| 双柏县| 安龙县| 疏附县| 基隆市| 瑞金市| 洞口县| 墨竹工卡县| 句容市| 兴城市| 循化| 深泽县| 包头市| 陇川县| 全州县| 建德市| 中宁县| 岢岚县| 深圳市| 西畴县| 庄浪县| 金塔县| 河间市| 集安市| 西平县| 靖江市| 高阳县| 澄城县| 江达县| 康平县| 西林县| 桑日县| 密云县| 江源县| 南乐县| 平果县| 仁布县| 西畴县| 保定市| 吴桥县| 宽甸| 克东县| 裕民县| 上杭县| 石渠县| 金山区| 伽师县| 兴业县| 石嘴山市| 扶风县| 扶风县| 宝兴县| 社旗县| 七台河市| 历史| 虞城县| 包头市| 天镇县| 长白| 丹凤县| 依安县| 潼南县| 大邑县| 常德市| 饶平县| 水富县| 岳普湖县| 奇台县| 临城县| 建德市| 顺义区| 南靖县| 霍林郭勒市| 三台县| 衡水市| 江永县| 揭阳市| 朝阳区| 镇赉县| 叙永县| 宝坻区| 和政县| 遵义县| 平邑县| 郓城县| 福海县| 徐州市| 银川市| 新乐市| 庆安县| 梓潼县| 泾川县| 吴桥县| 朝阳市| 榆社县| 历史| 罗山县| 岳西县| 东台市| 桃园县| 珠海市| 磴口县| 江永县| 朝阳区| 营山县| 六枝特区| 张家川| 北京市| 湘阴县| 河源市| 安岳县| 宜春市| 青岛市| 南汇区| 尼木县| 永修县| 祥云县| 蕉岭县| 玛多县| 河西区| 沛县| 霍州市| 和龙市| 正宁县| 咸阳市| 郁南县| 阳新县| 东乡| 屏南县| 玛多县| 利津县| 平定县| 葵青区| 六安市| 宁远县| 清涧县| 沭阳县| 柳州市| 凤冈县| 江达县| 广南县| 普宁市| 漳州市| 齐齐哈尔市| 海阳市| 西盟| 普陀区| 安塞县| 融水| 新河县| 黄山市| 额尔古纳市| 天门市| 和平县| 遂川县| 沙河市| 包头市| 平定县| 子长县| 新兴县| 邯郸市| 沅陵县| 客服| 平阴县| 思南县| 北安市| 衡东县| 沅江市| 文昌市| 安新县| 尖扎县| 金昌市| 棋牌| 望奎县| 郯城县| 苏尼特右旗| 汉沽区| 广州市| 金塔县| 竹溪县| 盐边县| 陆丰市| 合江县| 溆浦县| 合阳县| 炉霍县| 平昌县| 新邵县| 锡林郭勒盟| 汽车| 都昌县| 广汉市| 大宁县| 宜宾市| 临夏市| 鄂尔多斯市| 阳春市| 谢通门县| 屏东县| 会东县| 马山县| 政和县| 闽清县| 景泰县| 澄城县| 新民市| 灵武市| 五大连池市| 雷州市| 柯坪县| 依兰县| 沭阳县| 新密市| 梁山县| 上思县| 洱源县| 潜江市| 镇江市| 通化市| 镇沅| 龙江县| 杭锦后旗| 筠连县| 滦南县| 会理县| 辽中县| 安化县| 福泉市| 容城县| 友谊县| 安福县| 苍山县| 景德镇市| 涿州市| 泾阳县| 双桥区| 卓资县| 五大连池市| 昌都县| 叙永县| 额济纳旗| 长沙县| 林甸县| 桂林市| 彭阳县| 甘南县| 宁陵县| 卢湾区| 阿城市| 兴海县| 德州市| 南皮县| 钟祥市| 浦城县| 廊坊市| 奈曼旗| 富民县| 浦北县| 福安市| 施秉县| 丰原市| 青河县| 新和县| 施秉县| 龙口市| 滕州市| 肥东县| 舟曲县| 外汇| 海门市| 康乐县| 丹凤县| 讷河市| 班戈县| 哈巴河县| 沁水县| 靖宇县| 大城县| 四子王旗| 旬邑县| 灵山县| 南城县| 游戏| 达日县| 新邵县| 科技| 句容市| 鹿邑县| 泸水县| 茌平县| 平昌县| 肃北| 呈贡县| 莫力| 鹤岗市| 泗水县| 从化市| 兴宁市| 肇州县| 石棉县| 靖安县| 色达县| 城口县| 杂多县| 景洪市| 曲阳县| 旺苍县| 仲巴县| 蓝田县| 巴楚县| 新和县| 万山特区| 远安县| 婺源县| 精河县| 鹤岗市| 长阳| 荃湾区| 上杭县| 沅陵县| 天峨县| 达孜县| 平舆县| 安仁县| 蕲春县| 宜阳县| 元氏县| 阆中市| 社旗县| 阿城市| 邳州市| 安溪县| 思南县| 梅州市| 青川县| 乌审旗| 汤阴县| 滨州市| 广宗县| 土默特右旗| 宣恩县| 滦南县| 崇左市| 鄂尔多斯市| 将乐县| 甘孜县| 南京市| 澄江县| 赤城县| 玉林市| 岗巴县| 伊金霍洛旗| 林甸县| 湖口县| 揭西县| 古田县| 鲁山县| 顺义区| 千阳县| 新郑市| 晋州市| 南召县| 南木林县| 桦甸市| 黔西县| 九寨沟县| 高尔夫| 宿州市| 东乌珠穆沁旗| 攀枝花市| 洪雅县| 桃江县| 闻喜县| 塘沽区| 三穗县| 河北省| 清新县| 平谷区| 上蔡县| 华蓥市| 贞丰县| 陵水| 花莲市| 吕梁市| 东辽县| 台南县| 马边| 留坝县| 安顺市| 仁怀市| 准格尔旗| 安国市| 禹州市| 磴口县| 江津市| 哈巴河县| 吉首市| 平昌县| 扶风县| 清水县| 星座| 昆明市| 镇坪县| 大荔县| 盘锦市| 都昌县| 石嘴山市| 从江县| 库车县| 南溪县| 白沙| 涡阳县| 敦煌市| 黔东| 顺义区| 逊克县| 盐山县| 彭阳县| 博湖县| 开封市| 东海县| 山阳县| 筠连县| 阿荣旗| 于田县| 桐庐县| 永新县| 嘉义市| 鄂伦春自治旗| 中西区| 上犹县| 凌云县| 诸城市| 蒙山县| 平邑县| 无棣县| 福清市| 潮安县| 平定县| 蕉岭县| 南安市| http://m.bo2020licenses.fun http://wap.yqo0j8rl8v.fun http://wap.gz1980initialc.fun http://www.yqo9j7rl9v.fun http://www.gz1980izpactc.fun http://www.bo2020parents.fun http://www.yqo5j4rl1v.fun http://wap.jvz0j4r0o.fun http://wap.gz1980influencec.fun http://wap.bo2020ezails.fun http://m.yqo8j1rl8v.fun http://m.gz1980pagec.fun http://www.bo2020stones.fun http://www.yqo0j3rl5v.fun http://wap.yqo0j7rl2v.fun