中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站怎么做訪問日志網(wǎng)站seo優(yōu)化是什么意思

網(wǎng)站怎么做訪問日志,網(wǎng)站seo優(yōu)化是什么意思,內(nèi)江做網(wǎng)站,中國十大餐飲品牌策劃公司本章介紹使用DjCelery即DjangoCelery框架開發(fā)定時任務(wù)功能,在Autotestplat平臺上實(shí)現(xiàn)單一接口自動化測試腳本、業(yè)務(wù)場景接口自動化測試腳本、App自動化測試腳本、Web自動化測試腳本等任務(wù)的定時執(zhí)行、調(diào)度、管理等,從而取代Jenkins上的定時執(zhí)行腳本和發(fā)送…

本章介紹使用DjCelery即Django+Celery框架開發(fā)定時任務(wù)功能,在Autotestplat平臺上實(shí)現(xiàn)單一接口自動化測試腳本、業(yè)務(wù)場景接口自動化測試腳本、App自動化測試腳本、Web自動化測試腳本等任務(wù)的定時執(zhí)行、調(diào)度、管理等,從而取代Jenkins上的定時執(zhí)行腳本和發(fā)送郵件等功能。**

自動化測試邏輯流程圖11.1所示。

11.1 環(huán)境搭建

1.安裝

步驟1 安裝Celery。pyramid_celery-3.0.0,

配置https://pypi.python.org/pypi/pyramid_celery/。

步驟2 安裝django-clery。django-celery-3.2.2,

配置https://pypi.python.org/pypi/django- celery。 INSTALLED_APPS= []

加入2:

'djcelery', 運(yùn)行 Python manage.py migrate

步驟 3 安裝celery-with-redis-3.0,

地址為https://pypi.python.org/pypi/celery-with-redis/。

步驟 4 安裝django-clery-beat。django-celery-beat-1.1.0,

https://pypi.python.org/pypi/ django_celery_beat。

步驟5 下載Redis-x64-3.2.100,

Redis-x64-3.2.100.zip github.com/MicrosoftAr…

2.配置

步驟1 在Settings.py中增加如下內(nèi)容。

加入1:

import djcelery

djcelery.setup_loader() #加載djcelery

加入2:

#數(shù)據(jù)庫調(diào)度

CELERYBEAT_SCHEDULER ='djcelery.schedulers.DatabaseScheduler'

加入3:

BROKER_URL = 'redis://127.0.0.1:6379/0'

BROKER_TRANSPORT = 'redis'

步驟2 在應(yīng)用Apitest目錄下新建celery.py文件1,加入如下內(nèi)容。

from future import absolute_import

import os

import django

from celery import Celery

from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE','autotest.settings')

django.setup()

app = Celery('autotest')

app.config_from_object('django.conf:settings')

app.autodiscover_tasks(lambda:settings.INSTALLED_APPS)

步驟3 新建tasks.py文件,加入如下內(nèi)容。

--coding:utf-8 --

importrequests, time, sys, re

importurllib, zlib#,

importpymysql

importunittest

from traceimport CoverageResults

importjson

fromidlelib.rpc import response_queue

fromapitest.celery import app

from timeimport sleep

@app.task

def hello_world():

print('已運(yùn)行')

步驟4 啟動服務(wù)python manage.py runserver。

步驟5 解壓縮后,運(yùn)行CMD,切換到相應(yīng)目錄,輸入啟動Redis指令redis-server redis. windows.conf,成功后出現(xiàn)如圖11.2所示界面。

▲圖11.2

步驟6 啟動指令python manage.py celery worker -l info。

步驟7 啟動指令python manage.py celery beat。

11.2 前端功能實(shí)現(xiàn)

1.功能描述

完成實(shí)現(xiàn)單一接口測試用例、業(yè)務(wù)場景接口API測試用例、AppUI測試用例、WebUI測試用例的自動化定時任務(wù)。

2.程序清單

在autotest\apitest\templates目錄下新建periodic_task.html文件,加入如下內(nèi)容。

<html>

<head>

{% load bootstrap4 %}

{% bootstrap_css %}

{% bootstrap_javascript %}

<title>產(chǎn)品自動化測試平臺</title>

<link rel="stylesheet"type="text/css" href="/static/admin/css/forms.css" />

<script type="text/javascript"src="/admin/jsi18n/"></script>

<script type="text/javascript"src="/static/admin/js/vendor/jquery/jquery.js"></script>

<script type="text/javascript"src="/static/admin/js/jquery.init.js"></script>

<script type="text/javascript"src="/static/admin/js/core.js"></script>

<script type="text/javascript"src="/static/admin/js/admin/RelatedObjectLookups.js"></script>

<script type="text/javascript"src="/static/admin/js/actions.js"></script>

<script type="text/javascript"src="/static/admin/js/urlify.js"></script>

<script type="text/javascript"src="/static/admin/js/prepopulate.js"></script>

<script type="text/javascript"src="/static/admin/js/vendor/xregexp/xregexp.js"></script>

<meta name="viewport"content="user-scalable=no, width=device-width, initial-scale=1.0,maximum-scale=1.0">

<link rel="stylesheet"type="text/css" href="/static/admin/css/responsive.css"/>

<meta name="robots"content="NONE,NOARCHIVE" />

</head>

<body role="document">

<!-- 導(dǎo)航欄-->

<nav class="navbar navbar-expand-smbg-dark navbar-dark fixed-top">

<div>

<ahref="#">&nbsp;</a>

<ul>

</ul>

<ul>

<li><astyle='color:white' href="#"></a></li>

<li><astyle='color:white' href="/logout/"></a></li>

</ul>

</div>

</nav>

<!-- 搜索欄-->

<divstyle="padding-top: 70px;">

<formmethod="get" action="/tasksearch/">

{% csrf_token %}

<input type="search"name="task" placeholder="名稱" required>

<button type="submit">搜索</button>

<!-- 增加定時任務(wù)-->

<div style="float:right;width:73%">

<select name="PeriodicTask"id="PeriodicTask">

<option value="" selected>----定時任務(wù)----</option>

</select>

<a id="change_id_PeriodicTask"data-href-template="/admin/djcelery/periodictask/fk/change/?_to_field=id&amp;_popup=1"title="更改選中的定時任務(wù)">

<imgsrc="/static/admin/img/icon-changelink.svg" alt="修改"/>

</a>

<a style='color:light blue' id="add_id_PeriodicTask" href="/admin/djcelery/periodictask/add/?_to_field=id&amp;_popup=1"title="增加另一個測試用例">

<imgsrc="/static/admin/img/icon-addlink.svg" alt="增加"/>增加

</a>

</form>

</div>

<!-- 任務(wù)計(jì)劃列表-->

<divstyle="padding-top: 20px;">

<div>

<table class="table table-striped">

<thead>

<tr>

<th>ID</th><th>任務(wù)名稱</th><th>任務(wù)模塊</th><th>時間計(jì)劃</th><th>修改時間</th><th>開啟</th><th>立即</th><th>編輯</th><th>刪除</th>

</tr>

</thead>

<tbody>

{% for task in tasks %}{% for periodic inperiodics %}

<tr>

{% if task.interval_id != null andtask.interval_id == periodic.id %}

<td>{{ task.id }}</td>

<td>{{ task.name }}</td>

<td>{{ task.task }}</td>

<td><a style='color:green'>每{{ periodic.period }} {{ periodic.every}}次</a></td>

<td>{{ task.date_changed }}</td>

<td>{{ task.enabled }}</td>

<td>{% if task.id == 1 %}

<a href="../task_apis"target="mainFrame">運(yùn)行</a>

{% elif task.id == 2 %}

<a href="../task_apitest"target="mainFrame">運(yùn)行</a>

{% else %}

{% endif %}

</td>

<td><a style='color:light blue'class="related-widget-wrapper-link add-related"id="add_id_Apitest" href="../admin/djcelery/periodictask/{{task.id }}/change/?_to_field=id&_popup=1"><imgsrc="/static/admin/img/icon-changelink.svg"/></a></td>

<td><a style='color:light blue'class="related-widget-wrapper-link add-related" id="add_id_Apitest"href="../admin/djcelery/periodictask/{{ task.id}}/delete/?_to_field=id&_popup=1"><imgsrc="/static/admin/img/icon-deletelink.svg"/></a></td>

{% else %}

{% endif %}

{% for crontab in crontabs %}

{% if task.crontab_id != null and task.crontab_id ==crontab.id and task.interval_id == 1 %}

<td>{{ task.id }}</td>

<td>{{ task.name }}</td>

<td>{{ task.task }}</td>

<td><a style='color:green'>{{crontab.month_of_year }}年{{crontab.day_of_month }}月{{crontab.day_of_week }}日{(diào){crontab.hour }}時{{ crontab.minute}}分</a></td>

<td>{{ task.date_changed }}</td>

<td>{{ task.enabled }}</td>

<td><a href="../task_apis"target="mainFrame">運(yùn)行</a></td>

<td><a style='color:light blue'class="related-widget-wrapper-link add-related"id="add_id_Apitest" href="../admin/djcelery/periodictask/{{task.id }}/change/?_to_field=id&_popup=1"><imgsrc="/static/admin/img/icon-changelink.svg"/></a></td>

<td><a style='color:light blue'class="related-widget-wrapper-link add-related"id="add_id_Apitest" href="../admin/djcelery/periodictask/{{task.id }}/delete/?_to_field=id&_popup=1"><imgsrc="/static/admin/img/icon-deletelink.svg"/></a></td>

{% else %}

{% endif %}

{% endfor %}{% endfor %}{% endfor %}

</tbody>

</table>

</div>

</div>

<span style="position:absolute;right:100px; bottom:30px;"> {# 把翻頁功能固定顯示在右下角#}

<div style="position:absolute; right:100px; width:100px; ">

<tr><th>總數(shù)</th><td>{{ taskcounts }}</td></tr> {# 前端讀取定義的變量#}

</div>

<div>

&lt;ulclass="pagination" id="pager"&gt;{#上一頁鏈接開始#}{%if tasks.has_previous %}{#  如果有上一頁,則正常顯示上一頁鏈接#}&lt;li&gt;&lt;ahref="/periodic_task/?page={{ tasks.previous_page_number }}"&gt;上一頁&lt;/a&gt;&lt;/li&gt;    {#  上一頁標(biāo)簽 #}{%else %}&lt;li class="previous disabled"&gt;&lt;ahref="#"&gt;上一頁&lt;/a&gt;&lt;/li&gt;{# 如果當(dāng)前不存在上一頁,則上一頁的鏈接不可單擊#}{%endif %}{# 上一頁鏈接開始#}{%for num in tasks.paginator.page_range %}{% if num == currentPage %}&lt;li&gt;&lt;a href="/periodic_task/?page={{ num }}"&gt;{{ num}}&lt;/a&gt;&lt;/li&gt; {#顯示當(dāng)前頁數(shù)鏈接#}{% else %}&lt;liclass="item"&gt;&lt;a href="/periodic_task/?page={{ num}}"&gt;{{ num }}&lt;/a&gt;&lt;/li&gt;{% endif %}{% endfor %}{# 下一頁鏈接開始#}{% if tasks.has_next %} {#  如果有下一頁,則正常顯示下一頁鏈接#}&lt;liclass="next"&gt;&lt;a href="/periodic_task/?page={{tasks.next_page_number }}"&gt;下一頁&lt;/a&gt;&lt;/li&gt;{% else %}&lt;li&gt;&lt;a href="#"&gt;下一頁&lt;/a&gt;&lt;/li&gt;{% endif %}{# 下一頁鏈接結(jié)束#}&lt;/ul&gt;

</div>

</body>

</html>

功能描述:實(shí)現(xiàn)自動化測試任務(wù)調(diào)度執(zhí)行,包括單一接口、掃描、流程接口、業(yè)務(wù)場景、Web搜索、自動化平臺測試開發(fā)、App登錄,CSDN定時任務(wù)注冊,定時任務(wù)執(zhí)行等功能。

程序清單:在apitest/views.py中加入如下內(nèi)容。

from .tasks importhello_world

from .tasks importtest_readSQLcase

from djcelery.modelsimport PeriodicTask,CrontabSchedule,IntervalSchedule

任務(wù)計(jì)劃

@login_required

defperiodic_task(request):

username = request.session.get('user', '')task_list = PeriodicTask.objects.all()task_count =PeriodicTask.objects.all().count()  #統(tǒng)計(jì)數(shù)periodic_list =IntervalSchedule.objects.all()  # 周期任務(wù)(如每隔1小時執(zhí)行1次)crontab_list =CrontabSchedule.objects.all()    # 定時任務(wù)(如某年某月某日的某時,每# 天的某時)paginator = Paginator(task_list, 5)  #生成paginator對象,設(shè)置每頁顯示5條記錄page = request.GET.get('page',1)  #獲取當(dāng)前的頁碼數(shù),默認(rèn)為第1頁currentPage=int(page)  #把獲取的當(dāng)前頁碼數(shù)轉(zhuǎn)換成整數(shù)類型try:task_list = paginator.page(page)#獲取當(dāng)前頁碼數(shù)的記錄列表except PageNotAnInteger:task_list = paginator.page(1)#如果輸入的頁數(shù)不是整數(shù),則顯示第1頁內(nèi)容except EmptyPage:task_list =paginator.page(paginator.num_pages)#如果輸入的頁數(shù)不在系統(tǒng)的頁數(shù)中,# 則顯示最后一頁內(nèi)容return render(request,"periodic_task.html", {"user": username,"tasks":task_list,"taskcounts": task_count, "periodics":periodic_list,"crontabs": crontab_list })

搜索功能

@login_required

deftasksearch(request):

username = request.session.get('user', '')# 讀取瀏覽器登錄Sessionsearch_name =request.GET.get("task", "")task_list = PeriodicTask.objects.filter(task__icontains=search_name)periodic_list =IntervalSchedule.objects.all()  # 周期任務(wù)(如每隔1小時執(zhí)行1次)crontab_list =CrontabSchedule.objects.all()    # 定時任務(wù)(如某年某月某日的某時,每# 天的某時)return render(request,'periodic_task.html',{"user": username,"tasks":task_list,"periodics":periodic_list,"crontabs": crontab_list })

在autotest/urls.py中加入:

path('periodic_task/',views.periodic_task),

path('tasksearch/', views.tasksearch),

在apitest/left.html中加入:

<tr> <td>

                &lt;li&gt;&lt;a  href="../periodic_task"target="mainFrame"&gt;&lt;iclass="glyphicon glyphicon-fire"&gt;&lt;/i&gt;任務(wù)計(jì)劃       &lt;/a&gt;&lt;/li&gt;

&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;

查看前端頁面效果,如圖11.3所示。

▲圖11.3

行動吧,在路上總比一直觀望的要好,未來的你肯定會感 謝現(xiàn)在拼搏的自己!如果想學(xué)習(xí)提升找不到資料,沒人答疑解惑時,請及時加入扣群: 320231853,里面有各種軟件測試+開發(fā)資料和技術(shù)可以一起交流學(xué)習(xí)哦。

最后感謝每一個認(rèn)真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

這些資料,對于【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!

http://www.risenshineclean.com/news/28834.html

相關(guān)文章:

  • 局域網(wǎng)建站軟件八百客crm登錄入口
  • 網(wǎng)站高并發(fā)前端怎么做會計(jì)培訓(xùn)班多少錢
  • 一個帶有網(wǎng)上購物功能的小型網(wǎng)站的開發(fā)費(fèi)用騰訊廣點(diǎn)通廣告投放平臺
  • 林州網(wǎng)站建設(shè)報價做網(wǎng)站seo優(yōu)化
  • .net網(wǎng)站開發(fā)步驟免費(fèi)軟文網(wǎng)站
  • 藍(lán)色通用營銷型企業(yè)網(wǎng)站模板站長統(tǒng)計(jì)網(wǎng)站
  • 樂山網(wǎng)站建設(shè)公司什么是seo?
  • 做黨建網(wǎng)站百度教育網(wǎng)站
  • 杭州做網(wǎng)站 做小程序?qū)W生個人網(wǎng)頁制作教程
  • 韶關(guān)市建設(shè)工程造價網(wǎng)站百度指數(shù)代表什么
  • 網(wǎng)站建設(shè)設(shè)計(jì)作業(yè)百度競價排名推廣
  • 做網(wǎng)站gif代碼名優(yōu)網(wǎng)站關(guān)鍵詞優(yōu)化
  • wordpress 伊拉克防木馬seo排名優(yōu)化推廣報價
  • 公司網(wǎng)站維護(hù)都需要怎么做旅行網(wǎng)站排名前十名
  • 網(wǎng)站流量站怎么做品牌整合營銷
  • 網(wǎng)站開發(fā)主管待遇網(wǎng)絡(luò)營銷專業(yè)好就業(yè)嗎
  • 簡潔大方網(wǎng)站建設(shè)昆山網(wǎng)站建設(shè)推廣
  • 設(shè)計(jì)公司網(wǎng)站案例廣東網(wǎng)站seo策劃
  • joomla 網(wǎng)站建設(shè)上海網(wǎng)絡(luò)推廣外包
  • 動靜分離網(wǎng)站架構(gòu)sem競價外包公司
  • 徐州哪家公司做網(wǎng)站水平好如何制作一個網(wǎng)頁頁面
  • 那個網(wǎng)站做搬家推廣比較好重慶森林講的什么內(nèi)容
  • 靠比較好的軟件下載網(wǎng)站社交媒體營銷三種方式
  • 用bootstrap做的手機(jī)推銷網(wǎng)站模板如何在百度上發(fā)表文章
  • 做淘客網(wǎng)站要備案網(wǎng)絡(luò)廣告人社區(qū)
  • 佛山專業(yè)的網(wǎng)站制作怎么做公司網(wǎng)站推廣
  • 腐女做喜歡的網(wǎng)站做銷售記住這十句口訣
  • 哪些網(wǎng)站可以做簽約設(shè)計(jì)師在線crm網(wǎng)站建站
  • wix建設(shè)網(wǎng)站鏈接交換平臺
  • 淘寶客做網(wǎng)站教程網(wǎng)站注冊信息查詢