小編寫這篇文章的主要目的,就是教給大家,如何使用Django+Pytest,并用Django+Pytest搭建在線自動(dòng)化測試平臺,具體怎么做呢?下面給大家做一個(gè)詳細(xì)的解答。
一、測試平臺:
解決分散用例執(zhí)行方式,提供統(tǒng)一測試用例執(zhí)行過程、用例管理、測試報(bào)告
主要是基于:
fastapi+vue.js
django+vue.js
django
二、搭建過程
2.1使用django搭建一個(gè)web系統(tǒng)
1.創(chuàng)建項(xiàng)目
django-admin startproject TestPlatform
創(chuàng)建python的包,測試平臺的配置和功能
2.創(chuàng)建app
django-admin startapp web
創(chuàng)建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="自動(dòng)化測試"
(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)測試平臺
python manage.py runserver
2.2搭建測試框架
1.定義model
model驅(qū)動(dòng)開發(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( "測試狀態(tài)",default=-1,choices=[ (-1,'初始化'), (0,'馬上執(zhí)行'), (1,'正在執(zhí)行測試用例'), (2,'正在生成測試報(bào)告'), (3,'執(zhí)行完畢'), ] ) run_datatime=models.DateTimeField( "最近執(zhí)行時(shí)間",null=True,blank=True ) class Meta: verbose_name_plural=verbose_name="測試任務(wù)" def __str__(self): return self.name def get_url(self,_type): """生成報(bào)告或者測試日志的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='測試報(bào)告' def log_url(self,obj): return obj.get_url('url') log_url.short_description='執(zhí)行日志'
3.執(zhí)行數(shù)據(jù)庫遷移
python manage.py makemigrations python manage.py migrate
三、平臺如何管理
1.創(chuàng)建管理員賬號
python manage.py createsuperuser
用戶名:admin
郵箱:admin qq.com
密碼:admin
2.調(diào)整頁面顯示
3.執(zhí)行測試用例
在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( "測試狀態(tài)",default=-1,choices=[ (-1,'初始化'), (0,'馬上執(zhí)行'), (1,'正在執(zhí)行測試用例'), (2,'正在生成測試報(bào)告'), (3,'執(zhí)行完畢'), ] ) run_datatime=models.DateTimeField( "最近執(zhí)行時(shí)間",null=True,blank=True ) class Meta: verbose_name_plural=verbose_name="測試任務(wù)" def __str__(self): return self.name def get_url(self,_type): """生成報(bào)告或者測試日志的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)測試框架,執(zhí)行測試用例 if self.status==0: self.status=1#修改狀態(tài):正在執(zhí)行 self.run_datatime=datetime.datetime.now() super().save() #啟動(dòng)測試框架 import pytest pytest.main(self.case.path)#執(zhí)行指定的測試用例文件 self.status=3#修改狀態(tài):執(zhí)行完畢 self.run_datatime=datetime.datetime.now() super().save()
綜上所述,相關(guān)知識就為大家解答到這里了,希望可以為各位讀者帶來幫助。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/127753.html
摘要:整個(gè)項(xiàng)目簡單還具有實(shí)用價(jià)值,可作為的實(shí)戰(zhàn)項(xiàng)目學(xué)習(xí)的調(diào)試工具欄。查看文檔自動(dòng)在個(gè)人首頁展示編程時(shí)長的工具。通過學(xué)習(xí)這些前沿的人工智能論文,提前了解在未來更多可能性可以將圖片和視頻轉(zhuǎn)換成漫畫風(fēng)格的工具。興趣是最好的老師,HelloGitHub 讓你對編程感興趣!簡介HelloGitHub 分享 GitHub 上有趣、入門級的開源項(xiàng)目。https://github.com/521xueweihan...
摘要:蠎周刊年度最贊親俺們又來回顧又一個(gè)偉大的年份兒包去年最受歡迎的文章和項(xiàng)目如果你錯(cuò)過了幾期就這一期不會丟失最好的嗯哼還為你和你的準(zhǔn)備了一批紀(jì)念裇從這兒獲取任何時(shí)候如果想分享好物給大家在這兒提交喜歡我們收集的任何意見建議通過來吧原文 Title: 蠎周刊 2015 年度最贊Date: 2016-01-09 Tags: Weekly,Pycoder,Zh Slug: issue-198-to...
摘要:在線嘗試的進(jìn)程管理工具。項(xiàng)目包含了代碼實(shí)現(xiàn)運(yùn)行過程動(dòng)畫以及相關(guān)論文為系統(tǒng)提供人臉識別解鎖電腦的工具。在線閱讀教科書計(jì)算機(jī)體系結(jié)構(gòu)基礎(chǔ)第三版。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-b...
摘要:不過因?yàn)楦鱾€(gè)平臺互相挖人的關(guān)系,導(dǎo)致關(guān)注的一些主播分散到了各個(gè)直播平臺,來回切換有點(diǎn)麻煩,所以萌生了做一個(gè)視頻聚合站的想法。后續(xù)我們會對這三個(gè)部分的功能做逐一展開說明。正則處理要求比較高,但是幾乎能應(yīng)對所有的情況,屬于大殺器。 前言 作為一個(gè)爐石傳說玩家,經(jīng)常有事沒事開著直播網(wǎng)站看看大神們的精彩表演。不過因?yàn)楦鱾€(gè)平臺互相挖人的關(guān)系,導(dǎo)致關(guān)注的一些主播分散到了各個(gè)直播平臺,來回切換有點(diǎn)麻...
摘要:技術(shù)配置與美化方案開發(fā)環(huán)境搭建自定義腳手架關(guān)系型數(shù)據(jù)庫簡明用法緩存系統(tǒng)使用部署開發(fā)異步任務(wù)系統(tǒng)進(jìn)行文檔編寫進(jìn)行代碼測試在中加入支付功能開源搜索引擎簡明用法開源日志引擎簡明用法開源監(jiān)控系統(tǒng)簡明用法網(wǎng)絡(luò)爬蟲編寫簡明指南優(yōu)雅進(jìn)行代碼管理思路接口文 技術(shù) Ubuntu配置與美化方案 Python開發(fā)環(huán)境搭建 自定義Django腳手架 關(guān)系型數(shù)據(jù)庫簡明用法 Django緩存系統(tǒng)使用 Fabri...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02