国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【HttpRunnerManager】搭建接口自動化測試平臺操作流程

這篇具有很好參考價值的文章主要介紹了【HttpRunnerManager】搭建接口自動化測試平臺操作流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、需要準備的知識點
1. linux: 安裝 python3、nginx 安裝和配置、mysql 安裝和配置

2. python: django 配置、uwsgi 配置

二、我搭建的環(huán)境
1. Centos7 (配置 rabbitmq、mysql 、Supervisord)

2. python 3.6.8 (配置 django、uwsgi)

3. git 1.8.3.1 (克隆代碼)

三、搭建過程
1. 配置數(shù)據(jù)庫(安裝 mysql ,自行百度)

    新建庫:httprunner (UI 工具直接新建)

2. 安裝 rabbitmq(消息中間件)

3. 克隆代碼

    git clone https://github.com/HttpRunner/HttpRunnerManager.git

4. 安裝項目依賴庫

    pip install -r requirements.txt

? ? ? ? ? ? ? # requirements.txt ?(celery 需要用到 tornado,建議安裝 5.1.1 版本)

[root@gitlab HttpRunnerManager]# cat requirements.txt
Django == 2.0.3
PyYAML == 3.12
requests == 2.18.4
eventlet == 0.22.1
mysqlclient == 1.3.12
django-celery == 3.2.2
flower == 0.9.2
dwebsocket == 0.4.2
paramiko == 2.4.1
HttpRunner == 1.5.8
tornado>=4.2.0,<6.0.0

5. 修改 setting.py 配置文件

"""
Django settings for HttpRunnerManager project.
Generated by 'django-admin startproject' using Django 1.11.7.
For more information on this file, see
https://docs.djangoproject.com/en/1.11/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.11/ref/settings/
"""
from __future__ import absolute_import, unicode_literals
 
import os
 
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import djcelery
from django.conf.global_settings import SESSION_COOKIE_AGE
 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
 
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '=w+1if4no=o&6!la#5j)3wsu%k@$)6bf+@3=i0h!5)h9h)$*s7'
 
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
# DEBUG = True
ALLOWED_HOSTS = ['*']
# Application definition
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'ApiManager',
    'djcelery',
]
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
MIDDLEWARE_CLASSES = [
    'dwebsocket.middleware.WebSocketMiddleware'
]
ROOT_URLCONF = 'HttpRunnerManager.urls'
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
WSGI_APPLICATION = 'HttpRunnerManager.wsgi.application'
# Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]
# Internationalization
# https://docs.djangoproject.com/en/1.11/topics/i18n/
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
if DEBUG:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'HttpRunner',  # 新建數(shù)據(jù)庫名
            'USER': 'root',  # 數(shù)據(jù)庫登錄名
            'PASSWORD': '123456',  # 數(shù)據(jù)庫登錄密碼
            'HOST': '192.168.1.254',  # 數(shù)據(jù)庫所在服務(wù)器ip地址
            'PORT': '3306',  # 監(jiān)聽端口 默認3306即可
        }
    }
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),  # 靜態(tài)文件額外目錄
    )
else:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'HttpRunner',  # 新建數(shù)據(jù)庫名
            'USER': 'root',  # 數(shù)據(jù)庫登錄名
            'PASSWORD': '123456',  # 數(shù)據(jù)庫登錄密碼
            'HOST': '192.168.1.254',  # 數(shù)據(jù)庫所在服務(wù)器ip地址
            'PORT': '3306',  # 監(jiān)聽端口 默認3306即可
        }
    }
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder'
)
SESSION_COOKIE_AGE = 300 * 60
djcelery.setup_loader()
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Asia/Shanghai'
BROKER_URL = 'amqp://guest:guest3@192.168.91.45:5672//' if DEBUG else 'amqp://guest:guest@192.168.1.254:5672//'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_RESULT_EXPIRES = 7200  # celery任務(wù)執(zhí)行結(jié)果的超時時間,
CELERYD_CONCURRENCY = 1 if DEBUG else 10 # celery worker的并發(fā)數(shù) 也是命令行-c指定的數(shù)目 根據(jù)服務(wù)器配置實際更改 一般25即可
CELERYD_MAX_TASKS_PER_CHILD = 100  # 每個worker執(zhí)行了多少任務(wù)就會死掉,我建議數(shù)量可以大一些,比如200
# 發(fā)送郵件
EMAIL_HOST = 'smtp.exmail.qq.com'
EMAIL_PORT = 465
EMAIL_USR_SSL = True
EMAIL_SUBJECT_PREFIX = '測試部'
EMAIL_HOST_USER = 'notic@test.com'  # 自己的郵箱
EMAIL_HOST_PASSWORD = "fadfadfdn8hf7AXc"  # 我的郵箱密碼
EMAIL_SEND_USERNAME = 'notic@test.com'  # 定時任務(wù)報告發(fā)送郵箱,支持163,qq,sina,企業(yè)qq郵箱等,注意需要開通smtp服務(wù)
EMAIL_SEND_PASSWORD = 'Frfadfadfhf7AXc'     # 郵箱密碼
LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'}
        # 日志格式
    },
    'filters': {
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        },
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/all.log'),
            'maxBytes': 1024 * 1024 * 100,
            'backupCount': 5,
            'formatter': 'standard',
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        'request_handler': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/script.log'),
            'maxBytes': 1024 * 1024 * 100,
            'backupCount': 5,
            'formatter': 'standard',
        },
        'scprits_handler': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/script.log'),
            'maxBytes': 1024 * 1024 * 100,
            'backupCount': 5,
            'formatter': 'standard',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['default', 'console'],
            'level': 'INFO',
            'propagate': True
        },
        'HttpRunnerManager.app': {
            'handlers': ['default', 'console'],
            'level': 'DEBUG',
            'propagate': True
        },
        'django.request': {
            'handlers': ['request_handler'],
            'level': 'DEBUG',
            'propagate': True
        },
        'HttpRunnerManager': {
            'handlers': ['scprits_handler', 'console'],
            'level': 'DEBUG',
            'propagate': True
        },
        'scripts': {
            'handlers': ['scprits_handler', 'console'],
            'level': 'DEBUG',
            'propagate': True
        },
    }
}

6. django 生成數(shù)據(jù)庫表和字段(在項目路徑下執(zhí)行)

#生成數(shù)據(jù)遷移腳本
python manage.py makemigrations ApiManager
#應(yīng)用到db生成數(shù)據(jù)表
python manage.py migrate  

7. 創(chuàng)建 django 管理后臺的超級賬戶

python manage.py createsuperuser

8. 安裝 和 配置 uwsgi?

    安裝:pip install uwsgi

    配置:ini_hrm.ini

[uwsgi]
socket = 127.0.0.1:9092
#socket = 127.0.0.1:3031
stats = 127.0.0.1:9193
chdir = /root/TestProject/HttpRunnerManager
wsgi-file = /root/TestProject/HttpRunnerManager/HttpRunnerManager/wsgi.py
# module = Joyo.settings
virtualenv = /root/.envs/hrm
pidfile = /root/TestProject/running/uwsgi_hrm.pid
touch-reload = /root/TestProject/running/uwsgi_hrm.pid
# py-auto-reload = 1
buffer-size = 32768
processes = 1
workers=2
# threads = 2
daemonize = /root/TestProject/logs/uwsgi_hrm.log

9. 配置 Nginx

10. 啟動 Nginx

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

11. 啟動 uwsgi

    /root/.envs/hrm/bin/uwsgi --ini /root/TestProject/configs/ini_hrm.ini

12. Supervisor 守護 Celery worker、beat、flower

四、訪問鏈接
1. django 后臺

url: http://192.168.1.254/admin/login/?next=/admin/

id: root

pw: abc123456

2. rabbitmq

url: http://192.168.1.254:15672/#/     id: guest     pw: guest

3. HttpRunnerManager

注冊:http://192.168.1.254:8000/api/register/     登錄:http://192.168.1.254:8000/api/login/

4. Celery 任務(wù)監(jiān)控后臺

    url: http://192.168.1.254:5555/dashboard

五、兩個問題點
  1. ?啟動 django 項目時,ImportError: No module named 'MySQLdb':

    安裝 pymysql: pip install pymysql

    在 Django 項目中的 HttpRunnerManager/__init__.py 中引用:

import pymysql
pymysql.install_as_MySQLdb()

2. 打開 HttpRunnerManager 后臺時:百度未授權(quán)使用地圖API?

### 來幾張圖

【HttpRunnerManager】搭建接口自動化測試平臺操作流程

?【HttpRunnerManager】搭建接口自動化測試平臺操作流程

?【HttpRunnerManager】搭建接口自動化測試平臺操作流程文章來源地址http://www.zghlxwxcb.cn/news/detail-495052.html

到了這里,關(guān)于【HttpRunnerManager】搭建接口自動化測試平臺操作流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 從零搭建完整python自動化測試框架(UI自動化和接口自動化)

    從零搭建完整python自動化測試框架(UI自動化和接口自動化)

    總體框架 PO模式、DDT數(shù)據(jù)驅(qū)動、驅(qū)動 框架技術(shù)選擇 框架運行結(jié)果 各用例對應(yīng)的定義方式(PO/DDT) 測試執(zhí)行結(jié)果 從零開始搭建項目 一、開發(fā)環(huán)境搭建 二、新建項目 三、基礎(chǔ)功能實現(xiàn) 1. 配置功能實現(xiàn)(Conf) 2. 日志功能實現(xiàn)(Log) 3. 讀取EXCEL實現(xiàn)(data) 4. 郵件發(fā)送實

    2024年02月04日
    瀏覽(35)
  • 接口自動化測試框架搭建【附教程加源碼】

    接口自動化測試框架搭建【附教程加源碼】

    1 接口測試 接口測試是對系統(tǒng)或組件之間的接口進行測試,主要是校驗數(shù)據(jù)的交換,傳遞和控制管理過程,以及相互邏輯依賴關(guān)系。 接口自動化相對于UI自動化來說,屬于更底層的測試,這樣帶來的好處就是測試收益更大,且維護成本相對來說較低,是我們進行自動化測試的

    2024年02月07日
    瀏覽(19)
  • JMeter+Ant+jenkins搭建接口自動化測試環(huán)境

    JMeter+Ant+jenkins搭建接口自動化測試環(huán)境

    目錄 前言: ? ? ? ?1.ant簡介 2. 構(gòu)建ant環(huán)境 3.JMeter與Ant集成 4. 報告優(yōu)化 5.jenkins持續(xù)集成 前言: JMeter是一個開源的性能測試工具,可以用于測試Web應(yīng)用程序或API接口的性能,支持多種通信協(xié)議和數(shù)據(jù)格式。Ant是一個構(gòu)建工具,可用于自動化構(gòu)建、測試、打包和部署軟件項目

    2024年02月09日
    瀏覽(23)
  • 從零搭建完整 Python 接口自動化測試框架—持續(xù)更新

    從零搭建完整 Python 接口自動化測試框架—持續(xù)更新

    本接口自動化框架采用 python + unittest + request + openpyxl + myddt + pymysql 來實現(xiàn)接口自動化。? unittest 是 Python 自帶的一個單元測試框架 2.1 作用 管理用例 批量執(zhí)行用例 組織運行結(jié)果/報告 讓代碼更穩(wěn)健 可拓展 2.2 unittest 框架中,有以下幾個組件: TestCase:即測試用例,Unittest提供

    2024年02月09日
    瀏覽(29)
  • 【jmeter+ant+jenkins】之搭建 接口自動化測試平臺

    【jmeter+ant+jenkins】之搭建 接口自動化測試平臺

    ? ? ? ?(1). 錄制jmeter腳本 ??(2). 將jmeter的安裝目錄下的G:jmeterapache-jmeter-5.1.1extras中,將 ”ant-jmeter-1.1.1.jar”文件放到 ant的lib目錄下 ??(3). 配置jmeter的xml配置文件,并放在ant目錄的bin目錄下,使用ant編譯驗證jmeter的build文件 build.xml文件 命令:Ant -buildfile build_jmeter.xml (

    2024年02月09日
    瀏覽(30)
  • Python web自動化測試框架搭建(功能&接口)——通用模塊

    Python web自動化測試框架搭建(功能&接口)——通用模塊

    1、通用模塊: config.conf: 公共配置文件,配置報告、日志、截圖路徑,以及郵件相關(guān)配置 logger: 日志模塊 main.py: 執(zhí)行器,負責(zé)執(zhí)行整體測試任務(wù)模塊 testrunner.py: 負責(zé)測試用例執(zhí)行和結(jié)果收集 utils.py: 公共方法,如創(chuàng)建報告文件夾、生成測試報告、發(fā)送郵件 2、日志模塊: 3、

    2024年01月16日
    瀏覽(23)
  • 【實戰(zhàn)詳解】如何快速搭建接口自動化測試框架?Python + Requests

    【實戰(zhàn)詳解】如何快速搭建接口自動化測試框架?Python + Requests

    本文主要介紹如何使用Python語言和Requests庫進行接口自動化測試,并提供詳細的代碼示例和操作步驟。希望能對讀者有所啟發(fā)和幫助。 隨著移動互聯(lián)網(wǎng)的快速發(fā)展,越來越多的應(yīng)用程序采用Web API(也稱為RESTful API)作為數(shù)據(jù)交換的主要方式。針對API進行自動化測試已經(jīng)變得非

    2024年02月09日
    瀏覽(24)
  • 搭建禪道環(huán)境作為練習(xí)UI和接口自動化測試對象

    搭建禪道環(huán)境作為練習(xí)UI和接口自動化測試對象

    做 UI 和接口自動化練習(xí)時,有時候找不到合適的對象,我們可使用禪道來聯(lián)系; 因為禪道有開源版,可以二次開發(fā),并有詳細的 API 手冊; 本文的目的是整理并分享,使用禪道來作為測試對象的過程,便于學(xué)習(xí)自動化測試使用。 直接進入官網(wǎng),選擇開源版進行下載: https

    2024年02月15日
    瀏覽(56)
  • (Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建

    (Python)Requests+Pytest+Allure接口自動化測試框架從0到1搭建

    前面,已經(jīng)學(xué)習(xí)了如何用SpringBoot寫接口以及與Mysql數(shù)據(jù)庫進行交互,具體可查閱下面的這篇博客,今天學(xué)習(xí)一下基于Python的接口自動化測試框架的搭建,主要包括以下內(nèi)容:利用request庫發(fā)送請求,請求數(shù)據(jù)參數(shù)化處理,還涉及到數(shù)據(jù)庫(Mysql+MongDB)方面的交互,包括如何取數(shù)

    2024年02月13日
    瀏覽(722)
  • 【接口自動化測試入門】從0到1落地接口自動化測試

    前段時間寫了一系列自動化測試相關(guān)的文章,當然更多的是方法和解決問題的思路角度去闡述我的一些觀點。這篇文章來聊聊新手如何從零到一落地實踐接口自動化測試。 早些時候,軟件研發(fā)交付流程大多遵循V型或W型的瀑布模式,這種模式下只有開發(fā)編碼完成才會提測進入

    2024年02月04日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包