如何从零开始搭建一个django+vue的前后端分离的自动化测试平台

嗨,大家好,我是兰若姐姐,今天手把手教大家搭建一个django+vue的前后端分离的自动化测试平台

一、前提条件

  1. 安装Python
  2. 安装Node.js和npm(或者yarn)
  3. 安装MySQL数据库
  4. 安装Git

二、目录结构

project-root/
    ├── backend/                   # Django 后端项目目录
    │   ├── manage.py              # Django 管理脚本
    │   ├── requirements.txt       # Python 包依赖
    │   └── mybackend/             # Django 应用目录
    │       ├── __init__.py
    │       ├── settings.py        # Django 配置文件
    │       ├── urls.py            # URL 配置
    │       ├── wsgi.py
    │       ├── asgi.py
    │       ├── testsuite/         # 测试套件模块
    │       │   ├── __init__.py
    │       │   ├── models.py      # 数据库模型
    │       │   ├── views.py       # 视图
    │       │   ├── serializers.py # 序列化器
    │       │   ├── urls.py        # 测试相关 URL 配置
    │       │   └── tasks.py       # 异步任务
    │       └── other_apps/        # 其它相关应用
    ├── frontend/                  # Vue 前端项目目录
    │   ├── public/
    │   ├── src/
    │   │   ├── api/              # 与后端的API调用相关
    │   │   ├── assets/
    │   │   ├── components/       # 公共组件
    │   │   ├── router/           # 路由配置
    │   │   ├── store/            # Vuex 状态管理
    │   │   ├── views/            # 视图组件
    │   │   ├── App.vue
    │   │   └── main.js
    │   ├── babel.config.js
    │   ├── package.json
    │   └── vue.config.js
    └── docker-compose.yml         # Docker 编排文件(可选)

三、步骤

1. 设置Django项目

mkdir backend && cd backend
django-admin startproject mybackend .
python manage.py startapp testsuite

backend/manage.py

# 默认无需修改

backend/mybackend/settings.py

# 数据库配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_database_user',
        'PASSWORD': 'your_database_password',
        'HOST': 'your_database_host',
        'PORT': 'your_database_port',
    }
}

# 注册应用
INSTALLED_APPS = [
    ...
    'rest_framework',
    'testsuite',
]

backend/mybackend/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('testsuite.urls')), # 添加测试套件路由
]

backend/testsuite/models.py

from django.db import models

class TestCase(models.Model):
    name = models.CharField(max_length=255)
    request_data = models.JSONField()
    expected_response = models.JSONField()
    project = models.CharField(max_length=255)

    def __str__(self):
        return self.name

backend/testsuite/serializers.py

from rest_framework import serializers
from .models import TestCase

class TestCaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = TestCase
        fields = '__all__'

backend/testsuite/views.py

from rest_framework import viewsets
from .models import TestCase
from .serializers import TestCaseSerializer

class TestCaseViewSet(viewsets.ModelViewSet):
    queryset = TestCase.objects.all()
    serializer_class = TestCaseSerializer

backend/testsuite/urls.py

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import TestCaseViewSet

router = DefaultRouter()
router.register(r'testcases', TestCaseViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

2. 设置前端 Vue 项目

npx @vue/cli create frontend
cd frontend

frontend/src/api/index.js

import axios from 'axios';

const instance = axios.create({
    baseURL: '<http://localhost:8000/api/>',
    timeout: 1000,
});

// Example API call
export const fetchTestCases = () => instance.get('testcases/');

frontend/src/views/TestCaseList.vue

<template>
  <div>
    <h1>Test Cases</h1>
    <ul>
      <li v-for="testCase in testCases" :key="testCase.id">
        {{ testCase.name }}
      </li>
    </ul>
  </div>
</template>

<script>
import { fetchTestCases } from '../api';

export default {
  data() {
    return {
      testCases: [],
    };
  },
  created() {
    this.loadTestCases();
  },
  methods: {
    async loadTestCases() {
      try {
        const response = await fetchTestCases();
        this.testCases = response.data;
      } catch (error) {
        console.error('Error fetching test cases', error);
      }
    },
  },
};
</script>

frontend/src/router/index.js

import Vue from 'vue';
import VueRouter from 'vue-router';
import TestCaseList from '../views/TestCaseList.vue';

Vue.use(VueRouter);

const routes = [
  {
    path: '/testcases',
    name: 'TestCaseList',
    component: TestCaseList,
  },
];

const router = new VueRouter({
  routes,
});

export default router;

3. 整合

Docker 设置(可选)

编写 docker-compose.yml 来进行容器化部署。

version: '3.7'
services:
  web:
    build: ./backend
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./backend:/usr/src/app
    ports:
      - "8000:8000"
    depends_on:
      - db
  frontend:
    build: ./frontend
    command: npm run serve
    volumes:
      - ./frontend:/app
    ports:
      - "8080:8080"
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: 'your_database_name'
      MYSQL_USER: 'your_database_user'
      MYSQL_PASSWORD: 'your_database_password'
      MYSQL_ROOT_PASSWORD: 'your_root_password'
    ports:
      - "3306:3306"

4. 启动服务

启动 Django 后端服务

cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver

启动 Vue 前端服务

cd frontend
npm install
npm run serve

5. 访问

  1. 打开浏览器,访问 http://localhost:8080/testcases 查看前端页面。
  2. Django API 可以通过 http://localhost:8000/api/testcases/ 访问。

6. 项目并发执行

可借助 celerydjango-celery-beat 来执行并发任务,如需进一步扩展,可以搭建 Celery 和其他分布式任务队列系统。

安装 Celery

pip install celery django-celery-beat

示例 backend/testsuite/tasks.py

from celery import shared_task

@shared_task
def run_test_case(test_case_id):
    # 编写你的测试执行逻辑
    pass

在设置中配置 CeleryDjango-Celery-Beat

# settings.py
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

INSTALLED_APPS += [
    'django_celery_beat',
]

这组配置可以大致搭建起一个前后端分离、支持并发执行测试用例的自动化测试平台。根据具体需求和项目复杂度,可能还需要更多的定制化和优化。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种流行的编程语言,有非常丰富的库和框架可供使用。而Django一个基于Python的开发框架,用于快速搭建Web应用程序。Vue是一种流行的JavaScript框架,用于构建用户界面。 当我们要搭建一个前后端分离的项目时,可以使用PythonDjango框架和Vue框架来实现。下面是大致的步骤: 1. 对于后端,我们可以使用Django框架来搭建RESTful API。首先,创建一个新的Django项目并设置好相关配置。然后,定义数据模型和数据库表,可以使用Django的ORM(对象关系映射)来简化数据库操作。接下来,创建视图函数来处理不同的API请求,可以通过序列化器将模型数据转换为JSON格式进行传输。最后,设置URL路由映射和权限控制,确保API的安全性和可访问性。 2. 对于前端,我们可以使用Vue框架来构建用户界面。首先,创建一个新的Vue项目并安装所需的依赖项。然后,创建组件来管理不同的页面和功能模块。在组件中,可以使用Vue的数据绑定和计算属性等功能来简化数据处理和状态管理。同时,可以使用Vue Router来管理页面之间的导航和路由,以及使用axios库来发送API请求和接收响应。 3. 在前后端之间进行通信时,前端通过axios发送HTTP请求到后端的API接口,后端处理请求并返回相应的数据。前端可以根据接口的返回结果来更新界面和展示数据。 总的来说,使用PythonDjango框架和Vue框架可以很好地实现前后端分离的项目。Django提供了强大的后端支持,可以快速搭建API接口,而Vue框架则提供了便捷的前端开发环境,可以轻松构建用户界面。通过这种搭配,我们可以高效地开发出功能完善、交互流畅的Web应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值