使用Django+Pytest搭建在线自动化测试平台

目录
  • 一、测试平台:
  • 二、搭建过程
    • 2.1 使用django搭建一个web系统
    • 2.2 搭建测试框架
  • 三、平台如何管理
  • 总结

一、测试平台:

解决分散用例执行方式,提供统一测试用例执行过程、用例管理、测试报告

主要是基于:

fastapi+vue.js
    django+vue.js
    django

二、搭建过程

2.1 使用django搭建一个web系统

1. 创建项目

django-admin startproject TestPlatform

创建python的包,测试平台的配置和功能

2. 创建app

django-admin startapp web

创建python的包,具体的功能代码

(1)在TestPlatform/Web/apps.py中注册app

from django.apps import AppConfig
class WebConfig(AppConfig):
    # default_auto_field = 'django.db.models.BigAutoField'
    name = 'Web'
    verbose_name = "自动化测试"

(2) 在TestPlatform/TestPlatform/settings.py中进行相关设置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Web.apps.WebConfig'
]

LANGUAGE_CODE = 'zh-hans'# 设置中文
TIME_ZONE = 'Asia/Shanghai'# 设置时区

USE_I18N = True

USE_L10N = True

USE_TZ = False

MEDIA_ROOT = 'uploads/'
MEDIA_URL = 'uploads/'

(3)编辑TestPlatform/TestPlatform/urls.py文件

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path

# 定义http路由,是web系统的入口点
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + [
    path('', admin.site.urls),
]

(4)启动测试平台

     python manage.py runserver

2.2 搭建测试框架

1. 定义model

model驱动开发

import pathlib
from django.db import models

# 定义model
# 抽象化
from django.utils import html

class Task(models.Model):
    name = models.CharField("用例名称", max_length=20)
    case = models.FileField("用例文件", upload_to='tests/%Y_%m_%d_%H_%M_%S/')
    status = models.IntegerField(
        "测试状态", default=-1, choices=[
            (-1, '初始化'),
            (0, '马上执行'),
            (1, '正在执行测试用例'),
            (2, '正在生成测试报告'),
            (3, '执行完毕'),
        ]
    )
    run_datatime = models.DateTimeField(
        "最近执行时间", null=True, blank=True
    )

    class Meta:
        verbose_name_plural = verbose_name = "测试任务"

    def __str__(self):
        return self.name

    def get_url(self, _type):
        """生成报告或者测试日志的Url"""
        if self.case and self.status == 3:  # 执行完毕
            case_path = pathlib.PurePosixPath(str(self.case))
            root_path = pathlib.PurePosixPath('/uploads')

            if _type == 'report':  # 报告的url
                report_path = root_path / case_path.parent / "report/index.html"
            elif _type == 'log':  # 日志的url
                report_path = root_path / case_path.parent / "pytest.txt"
            else:
                report_path = '_'

            return html.format_html(f"<a href='{report_path}' target='_blank'> 点击查看</a>")
        else:
            return "-"

2. 定义界面

from django.contrib import admin
from .models import Task

# Register your models here.

@admin.register(Task)
class TaskAdmin(admin.ModelAdmin):
    # 决定了model 怎么显示
    list_display = ("id", "name", "status", "run_datatime",
                    "report_url", "log_url",
                    )
    # 要显示的字段

    readonly_fields = ('run_datatime',)

    def report_url(self, obj):
        return obj.get_url('report')

    report_url.short_description = '测试报告'

    def log_url(self, obj):
        return obj.get_url('url')

    log_url.short_description = '执行日志'

3. 执行数据库迁移

   python manage.py makemigrations
   python manage.py migrate

三、平台如何管理

1. 创建管理员账号

python manage.py createsuperuser

用户名:admin

邮箱:admin@qq.com

密码:admin

2. 调整页面显示

3. 执行测试用例

在models.py文件中调用pytest,pytest执行yaml文件(关键字驱动)

import pathlib
from datetime import datetime

from django.db import models

# 定义model
# 抽象化
from django.utils import html

class Task(models.Model):
    name = models.CharField("用例名称", max_length=20)
    case = models.FileField("用例文件", upload_to='tests/%Y_%m_%d_%H_%M_%S/')
    status = models.IntegerField(
        "测试状态", default=-1, choices=[
            (-1, '初始化'),
            (0, '马上执行'),
            (1, '正在执行测试用例'),
            (2, '正在生成测试报告'),
            (3, '执行完毕'),
        ]
    )
    run_datatime = models.DateTimeField(
        "最近执行时间", null=True, blank=True
    )

    class Meta:
        verbose_name_plural = verbose_name = "测试任务"

    def __str__(self):
        return self.name

    def get_url(self, _type):
        """生成报告或者测试日志的Url"""
        if self.case and self.status == 3:  # 执行完毕
            case_path = pathlib.PurePosixPath(str(self.case))
            root_path = pathlib.PurePosixPath('/uploads')

            if _type == 'report':  # 报告的url
                report_path = root_path / case_path.parent / "report/index.html"
            elif _type == 'log':  # 日志的url
                report_path = root_path / case_path.parent / "pytest.txt"
            else:
                report_path = '_'

            return html.format_html(f"<a href='{report_path}' target='_blank'> 点击查看</a>")
        else:
            return "-"

    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)

        # 判断是否需要启动测试框架,执行测试用例

        if self.status == 0:
            self.status = 1  # 修改状态:正在执行
            self.run_datatime = datetime.datetime.now()
            super().save()

            # 启动测试框架
            import pytest

            pytest.main(self.case.path)  # 执行指定的测试用例文件

            self.status = 3  # 修改状态:执行完毕
            self.run_datatime = datetime.datetime.now()
            super().save()

总结

到此这篇关于使用Django+Pytest搭建在线自动化测试平台的文章就介绍到这了,更多相关Django+Pytest在线自动化测试平台内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用Django+Pytest搭建在线自动化测试平台

    目录 一.测试平台: 二.搭建过程 2.1 使用django搭建一个web系统 2.2 搭建测试框架 三.平台如何管理 总结 一.测试平台: 解决分散用例执行方式,提供统一测试用例执行过程.用例管理.测试报告 主要是基于: fastapi+vue.js    django+vue.js    django 二.搭建过程 2.1 使用django搭建一个web系统 1. 创建项目 django-admin startproject TestPlatform 创建python的包,测试平台的配置和功

  • python+django+selenium搭建简易自动化测试

    该平台会集成UI自动化及api自动化,里面也会涉及到一些简单的HTML等前端,当然都是很基础的东西.在以后的博客里,我会一点点的尽量写详细,帮助一些测试小白一起成长,当然我也是个小菜鸡. 第一章 django 搭建平台. 1.1搭建环境 Django 官方网站:https://www.djangoproject.com/ Python 官方仓库下载地址:https://pypi.python.org/pypi/Django 这里我们通过pip来安装django ,这里版本用1.10.3. Pyt

  • 轻松实现python搭建微信公众平台

    本文主要是一步一步教大家如何利用python搭建微信公众平台,有兴趣的朋友可以参考一下 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份证的照片,还有几天的审核期 微信公众平台:http://mp.weixin.qq.com 新浪SAE:http://sae.sina.com.cn/ 等待微信公众审核通过后,登录公众平台后,点击高级功能.将会看到需要提供一个接入信息: 微信接口配置 那么我们需要一个

  • Python之Django环境搭建教程(MAC+pycharm+Django++postgreSQL)

    搭建Django环境似乎是一件很简单的事情,其实不然,苦命的我折腾了大半天才好, 遂在此总结下整个搭建过程,同时也愿刚入门的同行少走弯路~ 现在开始,所需工具: MAC电脑 Pycharm 2017 for MAC jdk1.8 Python3.6 postgreSQL 9.6.6 Toad/navicat/pgAdmin 数据库工具 (非必须) 大致需要这些东西,至于为什么要装jdk,大概是Pycharm本身部分依赖于java环境,可以看看产品说明可略窥一二: 嗯~,还有postgreSQL如

  • Django框架实现在线考试系统的示例代码

    1.Django的简介 Django是一个基于MVC构造的框架.但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model).模板(Template)和视图(Views),称为 MTV模式.它们各自的职责如下: 层次 职责 模型(Model),即数据存取层 模型(Model),即数据存取层 模板(Template),即表现层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示. 视图(View),即业务逻辑层 存取模型及调取恰当模板的相

  • 详解go-admin在线开发平台学习(安装、配置、启动)

    项目介绍 go-admin 是一个中后台管理系统,基于(gin, gorm, Casbin, Vue, Element UI)实现.主要目的是为了让开发者更专注业务,减少重复代码的编写,节省时间,提升人效,缩短项目周期,提升软件的开发效率以及质量. 下载项目 git clone https://github.com/go-admin-team/go-admin.git 使用git下载go-admin项目,作为一个程序员,如果说你不会使用git,那就有点说不过去了吧 本地环境准备 项目采用前后端分

  • 浅谈基于Pytest框架的自动化测试开发实践

    目录 01 - Pytest核心功能 02 - 创建测试项目 03 - 编写测试用例 04 - 执行测试用例 05 - 数据与脚本分离 06 - 参数化 07 - 测试配置管理 08 - 测试的准备与收尾 09 - 标记与分组 10 - 并发执行 11 - 测试报告 12 - 总结 参考资料 Pytest是Python的一种易用.高效和灵活的单元测试框架,可以支持单元测试和功能测试.本文不以介绍Pytest工具本身为目的,而是以一个实际的API测试项目为例,将Pytest的功能应用到实际的测试工

  • Python之Web框架Django项目搭建全过程

    Python之Web框架Django项目搭建全过程 IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 注:可通过pip freeze查看已安装库版本信息. Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后

  • 基于vue.js快速搭建图书管理平台

    Vue.js是当下很火的一个JavaScript MVVM(Model-View-ViewModel)库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使用Vue.js. 上一期简单讲解了vue的基本语法,这一次我们做一个小项目,搭建一个简单的图书管理平台,能够让我们更深刻的理解这门语言的妙用. 1.DEMO样式 首先我们需要搭建一个简单的demo样式,推荐大家使用bootstrap,可以很快的搭建出一个清

  • Django框架搭建的简易图书信息网站案例

    本文实例讲述了Django框架搭建的简易图书信息网站.分享给大家供大家参考,具体如下: 创建Django项目,将数据库改为mysql,修改项目的urls.py文件 创建一个新应用,在应用里创建urls.py文件. 在应用的models.py里建表 from django.db import models # Create your models here. #一类 class BookInfo(models.Model): btitle=models.CharField(max_length=2

随机推荐