您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

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

51自学网 2022-07-22 18:47:31
  python
这篇教程使用Django+Pytest搭建在线自动化测试平台写得很实用,希望能帮到您。

一、测试平台:

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

主要是基于:

    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 AppConfigclass 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 = TrueUSE_L10N = TrueUSE_TZ = FalseMEDIA_ROOT = 'uploads/'MEDIA_URL = 'uploads/'

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

from django.conf import settingsfrom django.conf.urls.static import staticfrom django.contrib import adminfrom 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 pathlibfrom django.db import models# 定义model# 抽象化from django.utils import htmlclass 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 adminfrom .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 pathlibfrom datetime import datetimefrom django.db import models# 定义model# 抽象化from django.utils import htmlclass 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在线自动化测试平台内容请搜索wanshiok.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持wanshiok.com!


20行Python代码实现一款永久免费PDF编辑工具
django连接数据库获取数据的简单步骤记录
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1