【軟件測試】:軟件測試實戰

1. ?動化實施步驟

1.1 編寫web測試?例

在這里插入圖片描述

1.2 ?動化測試腳本開發

common

public class AutotestUtils {public static EdgeDriver driver;//
創建驅動對象public static EdgeDriver createDriver(){//
驅動對象已經創建好了
/
沒有創建if( driver == null){driver = new EdgeDriver();//
創建隱式等待driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));}return driver;}public AutotestUtils(String url){EdgeDriver driver = createDriver();driver.get(url);}public List<String> getTime(){//
?件能不能按照天的維度按?件夾進?保存//
?件格式20230212-123030
毫秒SimpleDateFormat sim1 = new SimpleDateFormat("yyyyMMdd-HHmmssSS");SimpleDateFormat sim2 = new SimpleDateFormat("yyyyMMdd");String filename = sim1.format(System.currentTimeMillis());String dirname = sim2.format(System.currentTimeMillis());List<String> list = new ArrayList<>();list.add(dirname);list.add(filename);return  list;}/*** 
獲取屏幕截圖,把所有的?例執?的結果保存下來*/public void getScreenShot(String str) throws IOException {List<String> list = getTime();//dir+filename// ./
指的是當前的項?路徑下,也就是
BlogAutoTest
下// ./src/test/java/com/blogWebAutoTest/dirname/filename// ./src/test/java/com/blogWebAutoTest/20230212/logintest_20230212
123030
毫秒
.png String filename = 
"./src/test/java/com/blogWebAutoTest/"+list.get(0)+"/"+str+"_"+list.get(1)+".png";File srcfile = driver.getScreenshotAs(OutputType.FILE);//
把屏幕截圖?成的?件放到指定的路徑FileUtils.copyFile(srcfile,new File(filename));}}

cases/BlogLogin.py

import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogLogin:url = ""driver = ""def __init__(self): self.url = "http://192.168.47.135:8653/blog_system/blog_login.html" self.driver = BlogDriver.driver self.driver.get(self.url) def loginSucTest(self): time.sleep(2) self.driver.find_element(By.CSS_SELECTOR, "#username").clear() self.driver.find_element(By.CSS_SELECTOR, "#password").clear() self.driver.find_element(By.CSS_SELECTOR, 
"#username").send_keys("admin")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123") self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 對登錄結果進?檢測, 如果跳轉到了博客列表?才算是登錄成功了self.driver.find_element(By.CSS_SELECTOR, "body > div.container > 
div.left > div > img")BlogDriver.getScreenShot() self.driver.back()def loginFailTest(self): self.driver.find_element(By.CSS_SELECTOR, "#username").clear() self.driver.find_element(By.CSS_SELECTOR, "#password").clear() self.driver.find_element(By.CSS_SELECTOR, 
"#username").send_keys("admin")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("111") self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 等登錄失敗的結果進?檢測, 不能僅僅通過body來校驗結果,因為登錄成功的結果?也有
body元素expect = "??名或密碼錯誤!"actual = self.driver.find_element(By.CSS_SELECTOR, "body").text print(actual)BlogDriver.getScreenShot() assert expect == actual self.driver.back()

cases/BlogList.py

from selenium.webdriver.common.by import By
from common.Utils import BlogDriverclass BlogList:url = ""driver = ""def __init__(self): self.driver = BlogDriver.driver self.url = "http://192.168.47.135:8653/blog_system/blog_list.html"self.driver.get(self.url)# 前提:登陸狀態下才能進?到列表? def ListTest(self):self.driver.find_element(By.CSS_SELECTOR, "body > div.container > 
div.left > div > img")self.driver.find_element(By.CSS_SELECTOR, "body > div.container > 
div.right > div:nth-child(1) > a")articles = self.driver.find_elements(By.CSS_SELECTOR, "body > 
div.container > div.right > div")assert len(articles) > 10#點擊?章self.driver.find_element(By.CSS_SELECTOR,"body > div.container > 
div.right > div:nth-child(1) > a").click()title = self.driver.titleassert title == "博客詳情?" BlogDriver.getScreenShot()

cases/BlogDetail.py

from selenium.webdriver.common.by import By
from common.Utils import BlogDriverclass BlogDetail:url = " "driver = ""def __init__(self): self.url = "http://192.168.47.135:8653/blog_system/blog_detail.html?
blogId=15"self.driver = BlogDriver.driver title = self.driver.title#列表?已經跳過來了,?需再指定url跳轉if not title=="博客列表?":self.driver.get(self.url) def DetailCheck(self):#body > div.container > div.right > div:nth-child(1) > a BlogDriver.getScreenShot() self.driver.find_element(By.CSS_SELECTOR,"body > div.container > 
div.right > div > h3")self.driver.find_element(By.CSS_SELECTOR,"body > div.container > 
div.right > div > div.date")self.driver.find_element(By.CSS_SELECTOR,"#content")

cases/RunCases.py

from common.Utils import BlogDriverfrom tests import BlogLoginfrom tests import BlogListfrom tests import BlogDetailif __name__ == "__main__":BlogLogin.BlogLogin().loginSucTest() BlogList.BlogList().ListTest() BlogDetail.BlogDetail().DetailCheck() BlogDriver.driver.quit()

1.3 將?動化測試補充?測試報告

測試報告模板:
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/75745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/75745.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/75745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習入門1 基于Python的理論與實現

torch.unsqueeze()將一維數據變為二維數據&#xff0c;torch只能處理二維數據 tensor不能反向&#xff0c;variable可以反向。variable.data.numpy()轉換為numpy 第3章 神經網絡 實現softmax函數時的注意事項&#xff1a;為防止e的指數運算造成溢出 矩陣的第 0 維是列方向,第…

解決 Pentaho Kettle 插件集成中的 NoSuchMethodError: ContextFactory.enterContext() 錯誤

解決 Pentaho Kettle 插件集成中的 NoSuchMethodError: ContextFactory.enterContext() 錯誤 在使用 Pentaho Data Integration&#xff08;也稱為 Kettle&#xff09;進行數據集成和ETL開發時&#xff0c;開發者可能會遇到各種依賴沖突和技術挑戰。本文將詳細介紹一個常見的錯…

第 五 章:優化算法_《C++性能優化指南》_notes

優化算法 第五章重難點詳解與代碼實戰編譯與測試說明第五章核心知識點整理重難點梳理 第一部分&#xff1a;多選題&#xff08;10道&#xff09;第二部分&#xff1a;設計題&#xff08;5道&#xff09;答案與詳解多選題答案&#xff1a; 設計題參考實現&#xff08;以題目2為例…

多版本PHP開發環境配置教程:WAMPServer下MySQL/Apache/MariaDB版本安裝與切換

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、版本切換指南總結 前言 由于有幾個項目分別使用到PHP7.0 和7.4以及8.0版本&#xff0c;設置mysql也會根據PHP版本使用不同的版本&#xff0c;于是開始研究…

2024年數維杯數學建模C題天然氣水合物資源量評價解題全過程論文及程序

2024年數維杯數學建模 C題 天然氣水合物資源量評價 原題再現&#xff1a; 天然氣水合物&#xff08;Natural Gas Hydrate/Gas Hydrate&#xff09;即可燃冰&#xff0c;是天然氣與水在高壓低溫條件下形成的類冰狀結晶物質&#xff0c;因其外觀像冰&#xff0c;遇火即燃&#…

階段一:Java基礎語法

目標&#xff1a;掌握Java的基本語法&#xff0c;理解變量、數據類型、運算符、控制結構等。 1. Java開發環境搭建 安裝JDK配置環境變量編寫第一個Java程序 代碼示例&#xff1a; // HelloWorld.java public class HelloWorld { // 定義類名為 HelloWorldpublic static vo…

從0到1,解鎖Ant Design X的無限可能

Ant Design X 是什么&#xff1f; 在人工智能飛速發展的當下&#xff0c;AI 驅動的界面已成為軟件開發的重要趨勢。而 Ant Design X 正是順應這一趨勢&#xff0c;于 2024 年應運而生的一款遵循 Ant Design 設計體系的 React UI 庫&#xff0c;它旨在幫助開發者輕松打造 AI 驅…

Graphpad Prism for Mac醫學繪圖

Graphpad Prism for Mac醫學繪圖 文章目錄 Graphpad Prism for Mac醫學繪圖一、介紹二、效果三、下載 一、介紹 GraphPad Prism for Mac是一款功能強大、易于使用的科學和統計分析軟件&#xff0c;適用于各種類型的數據處理和可視化需求。無論您是進行基礎研究、臨床試驗還是學…

mysqloracledb2 (uuid函數)

項目場景&#xff1a; 創建一個32位的UUID 問題描述 原因分析&#xff1a; 解決方案&#xff1a; mysql內置UUID函數 SELECT UUID(); SELECT UUID_SHORT();oracle內置UUID函數 SELECT sys_guid() FROM dual;db2&#xff0c;模擬UUID函數 SELECT TEST || substr (CONCAT…

Android實踐開發制作小猴子摘桃小游戲

Android實踐制作小猴子摘桃小游戲 實踐素材項目源文件獲取&#xff1a;Android可能存在版本差異項目如果不能正確運行&#xff0c;可以使用里面的素材自己構建項目Android實踐制作小猴子摘桃小游戲Android實踐制作小猴子摘桃小游戲https://mp.weixin.qq.com/s/jNU_hVfj9xklsil…

Postman 下載文件指南:如何請求 Excel/PDF 文件?

在 Postman 中進行 Excel/PDF 文件的請求下載和導出&#xff0c;以下是簡明的步驟&#xff0c;幫助你輕松完成任務。首先&#xff0c;我們將從新建接口開始&#xff0c;逐步引導你完成整個過程。 Postman 請求下載/導出 excel/pdf 文件教程

重要重要!!fisher矩陣是怎么計算和更新的,以及計算過程中參數的物理含義

fisher矩陣是怎么計算和更新的,以及計算過程中參數的物理含義 Fisher信息矩陣(Fisher Information Matrix, FIM)用于衡量模型參數估計的不確定性,其計算和更新在統計學、機器學習和優化中具有重要作用。以下是其計算和更新的關鍵步驟: 一、Fisher矩陣的計算 定義 Fisher…

21.Excel自動化:如何使用 xlwings 進行編程

一 將Excel用作數據查看器 使用 xlwings 中的 view 函數。 1.導包 import datetime as dt import xlwings as xw import pandas as pd import numpy as np 2.view 函數 創建一個基于偽隨機數的DataFrame&#xff0c;它有足夠多的行&#xff0c;使得只有首尾幾行會被顯示。 df …

Elasticsearch客戶端工具初探--kibana

1 Kibana簡介 Kibana是Elastic Stack&#xff08;ELK&#xff09;中的可視化工具&#xff0c;用于對Elasticsearch中存儲的數據進行搜索、分析和可視化展示。它提供了直觀的Web界面&#xff0c;支持日志分析、業務監控、數據探索等功能&#xff0c;廣泛應用于運維監控、安全分析…

珍珠港海軍造船廠的“水魔法”:PcVue賦能造船心臟

導讀 項目背景 干船塢運作與控制需求 PcVue SCADA 系統的引入以及系統升級 項目成果 憑借更高的安全性&#xff0c;PcVue 對干船塢的充水和排水過程進行精準控制。 項目背景 珍珠港海軍基地與希卡姆空軍基地均依托這座歷史悠久的港口而發展&#xff0c;該港口在夏威夷原住…

3. 軸指令(omron 機器自動化控制器)——>MC_GearInPos

機器自動化控制器——第三章 軸指令 17 MC_GearInPos變量?輸入變量?輸出變量?輸入輸出變量 功能說明?時序圖?重啟運動指令?多重啟動運動指令?異常 示例程序?動作示例?梯形圖?結構文本(ST) MC_GearInPos 設定主軸和從軸間的齒輪比&#xff0c;進行電子齒輪動作。 指定…

vue 加載動態效果,自行封裝組件

背景&#xff1a; 在項目開發中&#xff0c;會請求接口&#xff0c;就會遇到加載中、加載成功、加載失敗、和加載成功但暫無數據等情況。就自行封裝了一個加載組件。采用vue3elementsetup組合式寫法。 實現效果&#xff1a; 封裝組件&#xff1a; //封裝組件 <template>…

八目導航 version:1.2

八目導航 version&#xff1a;1.2 網址&#xff1a;https://crbssseooebc.sealoshzh.site/ 日志&#xff1a; 1.美化了頁面 2.新增并替換了部分網址 3.不會出現危險網址提示(指的是進入八目導航時) 4.為網址圖標增加了動效 5.采用Vue3框架重新實現了該導航 注意&#xff1a;該…

WebWorkers在項目中的使用案例

Worker | 文檔 worker 線程的關閉在主線程和 worker 線程都能進行操作&#xff0c;但對 worker 線程的影響略有不同。 // main.js&#xff08;主線程&#xff09; const myWorker new Worker(/worker.js); // 創建worker myWorker.terminate(); // 關閉worker 復制代碼 // wor…

掌握Linux項目自動化構建:從零入門make與Makefile

文章目錄 前言&#xff1a; 一、初識自動化構建工具1.1 什么是make/Makefile&#xff1f;1.2 快速體驗 二、深入理解核心機制2.1 依賴關系與依賴方法2.2 偽目標的妙用2.3 具體語法a.makefile的基本雛形b.makefile推導原則&#xff01; 三、更加具有通用型的makefile1. 變量定義…