欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Django+Pytest搭建在線自動(dòng)化測(cè)試平臺(tái)

 更新時(shí)間:2022年07月13日 09:18:54   作者:qq闕繼婷  
最近由于公司的發(fā)展安排本人實(shí)現(xiàn)公司項(xiàng)目的自動(dòng)化測(cè)試,下面這篇文章主要給大家介紹了關(guān)于如何Django?+?Pytest搭建在線自動(dòng)化測(cè)試平臺(tái)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、測(cè)試平臺(tái):

解決分散用例執(zhí)行方式,提供統(tǒng)一測(cè)試用例執(zhí)行過(guò)程、用例管理、測(cè)試報(bào)告

主要是基于:

    fastapi+vue.js
    django+vue.js
    django

二、搭建過(guò)程

2.1 使用django搭建一個(gè)web系統(tǒng)

1. 創(chuàng)建項(xiàng)目

  django-admin startproject TestPlatform

創(chuàng)建python的包,測(cè)試平臺(tái)的配置和功能

2. 創(chuàng)建app

django-admin startapp web

創(chuàng)建python的包,具體的功能代碼

(1)在TestPlatform/Web/apps.py中注冊(cè)app

from django.apps import AppConfig
class WebConfig(AppConfig):
    # default_auto_field = 'django.db.models.BigAutoField'
    name = 'Web'
    verbose_name = "自動(dòng)化測(cè)試"

(2) 在TestPlatform/TestPlatform/settings.py中進(jìn)行相關(guān)設(shè)置

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'# 設(shè)置中文
TIME_ZONE = 'Asia/Shanghai'# 設(shè)置時(shí)區(qū)

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系統(tǒng)的入口點(diǎn)
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + [
    path('', admin.site.urls),
]

(4)啟動(dòng)測(cè)試平臺(tái)

     python manage.py runserver

2.2 搭建測(cè)試框架

1. 定義model

model驅(qū)動(dòng)開(kāi)發(fā)

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(
        "測(cè)試狀態(tài)", default=-1, choices=[
            (-1, '初始化'),
            (0, '馬上執(zhí)行'),
            (1, '正在執(zhí)行測(cè)試用例'),
            (2, '正在生成測(cè)試報(bào)告'),
            (3, '執(zhí)行完畢'),
        ]
    )
    run_datatime = models.DateTimeField(
        "最近執(zhí)行時(shí)間", null=True, blank=True
    )

    class Meta:
        verbose_name_plural = verbose_name = "測(cè)試任務(wù)"

    def __str__(self):
        return self.name

    def get_url(self, _type):
        """生成報(bào)告或者測(cè)試日志的Url"""
        if self.case and self.status == 3:  # 執(zhí)行完畢
            case_path = pathlib.PurePosixPath(str(self.case))
            root_path = pathlib.PurePosixPath('/uploads')

            if _type == 'report':  # 報(bào)告的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'> 點(diǎn)擊查看</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 = '測(cè)試報(bào)告'

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

    log_url.short_description = '執(zhí)行日志'

3. 執(zhí)行數(shù)據(jù)庫(kù)遷移

   python manage.py makemigrations
   python manage.py migrate

三、平臺(tái)如何管理

1. 創(chuàng)建管理員賬號(hào)

   python manage.py createsuperuser

  用戶名:admin

  郵箱:admin@qq.com

  密碼:admin

2. 調(diào)整頁(yè)面顯示

3. 執(zhí)行測(cè)試用例

在models.py文件中調(diào)用pytest,pytest執(zhí)行yaml文件(關(guān)鍵字驅(qū)動(dòng))

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(
        "測(cè)試狀態(tài)", default=-1, choices=[
            (-1, '初始化'),
            (0, '馬上執(zhí)行'),
            (1, '正在執(zhí)行測(cè)試用例'),
            (2, '正在生成測(cè)試報(bào)告'),
            (3, '執(zhí)行完畢'),
        ]
    )
    run_datatime = models.DateTimeField(
        "最近執(zhí)行時(shí)間", null=True, blank=True
    )

    class Meta:
        verbose_name_plural = verbose_name = "測(cè)試任務(wù)"

    def __str__(self):
        return self.name

    def get_url(self, _type):
        """生成報(bào)告或者測(cè)試日志的Url"""
        if self.case and self.status == 3:  # 執(zhí)行完畢
            case_path = pathlib.PurePosixPath(str(self.case))
            root_path = pathlib.PurePosixPath('/uploads')

            if _type == 'report':  # 報(bào)告的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'> 點(diǎn)擊查看</a>")
        else:
            return "-"

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

        # 判斷是否需要啟動(dòng)測(cè)試框架,執(zhí)行測(cè)試用例

        if self.status == 0:
            self.status = 1  # 修改狀態(tài):正在執(zhí)行
            self.run_datatime = datetime.datetime.now()
            super().save()

            # 啟動(dòng)測(cè)試框架
            import pytest

            pytest.main(self.case.path)  # 執(zhí)行指定的測(cè)試用例文件

            self.status = 3  # 修改狀態(tài):執(zhí)行完畢
            self.run_datatime = datetime.datetime.now()
            super().save()

總結(jié)

到此這篇關(guān)于使用Django+Pytest搭建在線自動(dòng)化測(cè)試平臺(tái)的文章就介紹到這了,更多相關(guān)Django+Pytest在線自動(dòng)化測(cè)試平臺(tái)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pandas?缺失數(shù)據(jù)處理代碼匯總

    Pandas?缺失數(shù)據(jù)處理代碼匯總

    這篇文章主要介紹了Pandas?缺失數(shù)據(jù)處理代碼匯總,在pandas中,缺失數(shù)據(jù)顯示為NaN。缺失值有3種表示方法,np.nan,none,pd.NA,更多相關(guān)介紹需要的朋友可以參考下面文章內(nèi)容
    2022-06-06
  • 基于Python數(shù)據(jù)可視化利器Matplotlib,繪圖入門(mén)篇,Pyplot詳解

    基于Python數(shù)據(jù)可視化利器Matplotlib,繪圖入門(mén)篇,Pyplot詳解

    下面小編就為大家?guī)?lái)一篇基于Python數(shù)據(jù)可視化利器Matplotlib,繪圖入門(mén)篇,Pyplot詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • python中創(chuàng)建以及刪除虛擬環(huán)境的幾種方法總結(jié)

    python中創(chuàng)建以及刪除虛擬環(huán)境的幾種方法總結(jié)

    在Python?中創(chuàng)建虛擬環(huán)境非常容易,但是刪除虛擬環(huán)境可能會(huì)有一些挑戰(zhàn),這篇文章主要給大家介紹了關(guān)于python中創(chuàng)建以及刪除虛擬環(huán)境的幾種方法,需要的朋友可以參考下
    2024-03-03
  • python決策樹(shù)之CART分類(lèi)回歸樹(shù)詳解

    python決策樹(shù)之CART分類(lèi)回歸樹(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了python決策樹(shù)之CART分類(lèi)回歸樹(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python工廠方法模式原理與實(shí)現(xiàn)

    python工廠方法模式原理與實(shí)現(xiàn)

    大家好,本篇文章主要講的是python工廠方法模式原理與實(shí)現(xiàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖

    python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖

    這篇文章主要介紹了python?爬取豆瓣電影短評(píng)并利用wordcloud生成詞云圖,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • Python跨文件全局變量的使用技巧

    Python跨文件全局變量的使用技巧

    Python?中?global?關(guān)鍵字可以定義一個(gè)變量為全局變量,但是這個(gè)僅限于在一個(gè)模塊(py文件)中調(diào)用全局變量,在另外一個(gè)py文件?再次使用?global?x?也是無(wú)法訪問(wèn)到的,這篇文章主要介紹了Python跨文件全局變量的使用,需要的朋友可以參考下
    2022-01-01
  • Python 錯(cuò)誤和異常小結(jié)

    Python 錯(cuò)誤和異常小結(jié)

    這不是一篇關(guān)于Python異常的全面介紹的文章,這只是在學(xué)習(xí)Python異常后的一篇筆記式的記錄和小結(jié)性質(zhì)的文章
    2013-10-10
  • python 實(shí)現(xiàn)調(diào)用子文件下的模塊方法

    python 實(shí)現(xiàn)調(diào)用子文件下的模塊方法

    今天小編就為大家分享一篇python 實(shí)現(xiàn)調(diào)用子文件下的模塊方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python連接kafka加載數(shù)據(jù)的項(xiàng)目實(shí)踐

    python連接kafka加載數(shù)據(jù)的項(xiàng)目實(shí)踐

    本文主要介紹了python連接kafka加載數(shù)據(jù)的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論