精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在Rust中編寫自動化測試

開發 測試
Rust中的測試函數是用來驗證非測試代碼是否是按照期望的方式運行的,本篇文章主要探討了Rust自動化測試的幾種常見場景。

1.摘要

Rust中的測試函數是用來驗證非測試代碼是否是按照期望的方式運行的, 測試函數體通常需要執行三種操作:

  • 設置任何所需的數據或狀態;
  • 運行需要測試的代碼;
  • 斷言其結果是我們所期望的。

本篇文章主要探討了Rust自動化測試的幾種常見場景。

2.測試函數詳解

在Rust項目工程中, 可以對任意函數進行自動化測試, 前提是需要在被測試函數上面加上#[test]注解, 然后運行cargo test命令進行函數自動化測試, Rust會查找所有被#[test]注解的函數并自動進行測試。

先看下面一段代碼:

#[test]
fn add_calc() {
    let result = 1 + 2;
    assert_eq!(result, 3);
}

在上面的代碼中, 我實現了一個加法計算的函數: add_calc(), 將加法結果保存到不可變變量result中, 并使用了assert_eq!宏來斷言1+2的結果, assert!宏由標準庫提供, 在希望確保測試過程中一些條件為true時非常有用。在函數上方加上了#[test]注解, 表示該函數將執行自動化測試, 運行: cargo test看下結果:

從測試結果中, 可以看到test add_calc ... ok 這行, 表示該函數測試通過了。

現在我修改下斷言的結果, 將代碼修改為:

#[test]
fn add_calc() {
    let result = 1 + 2;
    assert_eq!(result, 4);
}

再次運行cargo test命令, 返回結果如下:

可以看到, 計算的結果是3, 但斷言相等的條件是等于4, 因此函數執行失敗, add_calc()函數自動化測試不通過。

接下來我們再加入一個函數, 看看在具有多個函數的前提下, 同時具備成功和失敗的情況, 代碼如下:

#[test]
fn add_calc() {
    let result = 1 + 2;
    assert_eq!(result, 3);
}

#[test]
fn another_method() {
    panic!("執行失敗,拋出一個異常!")
}

在上面的代碼中, 增加了一個名為another_method()的函數, 該函數直接使用panic!拋出一個異常, 直接扮演了函數執行失敗的角色, 而上面的add_calc()函數我講assert_eq!宏修改正確, 將扮演執行成功的角色, 使用cargo test命令看下結果:

可以看到, add_calc()函數測試沒問題, 后面用綠色ok表示, 而another_method()函數執行失敗, 使用紅色的FAILED標記。

3.自定義失敗信息

在上面的案例中, 我使用了assert_eq!宏來斷言結果, 同樣, 也可以向宏傳遞一個可選的失敗信息參數, 可以在測試失敗時將自定義的失敗信息一并打印出來, 使用自定義信息有個好處, 當測試失敗時, 能更好的理解代碼到底出了什么問題, 看一段下面的代碼:

pub fn make_string(name: &str) -> String {
    format!("Hello,{}!", name)
}

#[test]
fn is_contain_name() {
    let result = make_string("cargo");
    assert!(result.contains("cargo"));
}

在這段代碼中, 定義了一個函數make_string, 該函數接收一個字符串參數, 并在函數內部通過format!宏格式化字符串后返回, 在函數is_contain_name()中, 傳入一個字符串"cargo", assert!會判斷make_string()函數返回的字符串中是否會包含"cargo"字符串,如果包含就是成功的,否則就失敗, 這里我們能預言結果應該是成功的, 測試一下看看:

結果跟我們預想的一樣, 現在再加入一些更詳細的變化信息看看, 代碼如下:

pub fn make_string(name: &str) -> String {
    format!("Hello,{}!", name)
}

#[test]
fn is_contain_name() {
    let result = make_string("rustup");
    assert!(result.contains("cargo"), "make_string中不包含該字符串,值為:`{}`", result);
}

我在assert!宏中加入了變量打印, 假如make_string()函數沒有返回預期的結果, 那結果到底是什么,這里我們將能看到失敗原因, 測試結果如下:

從結果可以看到, 函數的確測試失敗了, 但我們看到了關鍵信息, 失敗的原因是因為make_string()函數返回的字符串內容為:Hello,rustup!,這個結果與斷言中的result.contains("cargo")結果是不同的, “Hello,rustup!”字符串中并不包含"cargo"字符串,所以函數測試失敗。

4.檢查崩潰異常

除了使用斷言宏之外, Rust還提供了一個should_panic用來檢測程序中的panic,并且提供了一個名為expected的參數用來自定義消息,看一段下面的代碼:

pub fn number_calc(value: i32) -> i32 {
    let ret_value = 40;
    if value < 0 {
        panic!("值必須大于0,傳參的值為:{}", value)
    }
    return ret_value
}

#[test]
#[should_panic(expected = "傳參不能小于0")]
fn is_contain_name() {
    let result = number_calc(-1);
}

在number_calc()函數中, 如果判斷參數傳入的值小于0, 會拋出一個panic, 為了監視是什么原因導致, 在函數is_contain_name()上面使用should_panic進行監控, 并使用expected參數指定自定義消息, 如果遇到傳入的參數小于0, 將觸發該消息打印, 使用cargo test運行一下看看結果:

從結果可以看到, 的確檢測到了panic產生, panic打印了本身的消息, 最后一行shoud_panic也觸發了消息, 并打印出失敗的原因。

5.使用Result<T, E>測試

先看一段下面的代碼:

pub fn number_calc(value: i32) -> i32 {
    let ret_value = 40;
    if value < 0 {
        return 30
    }
    return ret_value
}

#[test]
fn is_contain_name() -> Result<(), String>{
    if number_calc(2) == 40 {
      OK(())
  }else{
    Err(String::from("結果不等于40,請檢查原因!"))
  }
}

在上面的代碼中, is_contain_name()函數的返回類型現在變為:Result<(), String>, 在函數體中, 不同于調用assert_eq!,現在如果測試通過,將返回Ok(()), 在測試失敗時, 返回帶有String的Err錯誤。現在傳入參數為2, 將顯示正常的結果:

現在我們再傳入一個小于0的負值看看,結果如下:

可以看到, 如果使用Result<(), String>接收結果, 當出來錯誤時, 將返回一個Error,并打印對應的自定義消息。

6.總結

在本篇文章中, 我們使用#[test]注解完成了對指定函數的自動化測試, 使用assert!宏對錯誤進行斷言, 在斷言中自定義錯誤顯示消息用于查看更詳細的錯誤原因。使用了should_panic對panci錯誤進行了監控, 最后使用Result<T, E>替代斷言分別完成了代碼測試和自定義錯誤消息打印, 在以后的實際應用中, 可能還會有一些組合測試的場景出現, 到時候再具體問題具體分析。

責任編輯:趙寧寧 來源: 二進制空間安全
相關推薦

2011-04-18 12:52:37

自動化測試功能測試軟件測試

2024-05-06 08:08:31

2019-07-18 11:00:45

自動化運維測試

2010-07-26 09:53:08

Perl多進程

2022-07-14 08:16:24

Node.js后端自動化測試

2022-02-17 10:37:16

自動化開發團隊預測

2022-09-12 16:02:32

測試企業工具

2021-09-03 09:56:18

鴻蒙HarmonyOS應用

2012-02-27 17:34:12

Facebook自動化

2013-05-16 10:58:44

Android開發自動化測試

2014-04-16 14:15:01

QCon2014

2011-12-23 17:09:57

自動化測試

2021-06-30 19:48:21

前端自動化測試Vue 應用

2012-12-24 22:54:31

2024-11-01 15:05:12

2018-06-22 12:40:31

Windows 10Windows黑暗模式

2010-07-14 11:14:48

Perl多進程

2018-02-25 19:29:49

自動化數字化IT

2011-10-11 09:56:59

PhoneGapSelenium

2010-09-08 15:25:09

自動化測試技術網站鏈接測試
點贊
收藏

51CTO技術棧公眾號

成人免费福利| 一级片在线免费观看视频| 欧美色资源站| 在线亚洲一区二区| 国产日韩第一页| 天天干天天爽天天操| 99亚洲视频| 中文字幕最新精品| 国内精品免费视频| 97精品国产99久久久久久免费| 亚洲人成亚洲人成在线观看图片| 好吊色欧美一区二区三区| 中文在线观看av| 亚洲无毛电影| 最近2019中文字幕mv免费看| 国产精品果冻传媒| 日韩美香港a一级毛片| 亚洲国产wwwccc36天堂| 少妇特黄a一区二区三区| 国产真人无遮挡作爱免费视频| 成人在线免费观看91| 91精品国产综合久久久蜜臀粉嫩 | 亚洲 欧美 视频| 激情五月综合网| 欧美放荡的少妇| 欧美午夜小视频| 北条麻妃在线| 国产成人精品亚洲日本在线桃色 | 亚洲综合欧美| 日韩中文字幕欧美| 亚洲天堂av网站| 国产精品无码久久久久| 成人免费在线观看入口| 国产精品一区二区三区不卡| 免费黄色片视频| **女人18毛片一区二区| 亚洲国产精品久久久| 成人免费观看毛片| 国产在线1区| 2024国产精品视频| 91精品久久久久久久久青青 | 国产又粗又长又爽| 本网站久久精品| 亚洲高清在线精品| 三级网在线观看| 欧美色18zzzzxxxxx| 国产一区在线观看视频| 国产成一区二区| 久久这里只有精品免费| 999久久久91| 亚洲午夜精品久久久久久久久久久久| 国产精品日日摸夜夜爽| 欧美videos粗暴| 在线观看中文字幕不卡| 91专区在线观看| 女子免费在线观看视频www| 欧美国产精品v| 免费试看一区| 午夜视频福利在线| 成人污污视频在线观看| 亚洲一区二区日本| 在线观看一二三区| 日韩精品一级中文字幕精品视频免费观看| 欧美黑人xxxx| 免费人成在线观看| 欧美福利影院| 不卡av在线网站| 99热在线观看精品| 青青草综合网| 在线观看不卡av| 国产美女免费网站| 91欧美日韩在线| 91精品国产综合久久精品性色| 各处沟厕大尺度偷拍女厕嘘嘘| 丝袜美女在线观看| 国产精品国产三级国产aⅴ原创| 蜜桃麻豆91| 天堂在线视频免费观看| 99精品视频一区二区| 国产精品日韩高清| 亚洲欧美激情在线观看| 成人性生交大片| 国产精品久久精品国产| 刘亦菲毛片一区二区三区| 床上的激情91.| 国内精品一区二区| 深夜福利视频在线免费观看| 97se亚洲国产综合自在线不卡| 91九色对白| 日本成人动漫在线观看| 91香蕉视频污| 日韩av图片| 男人资源在线播放| 亚洲伦理在线精品| 日本黄大片在线观看| 波多野结衣久久| 欧美性猛交xxxxx免费看| 能在线观看的av| 992tv国产精品成人影院| 欧美剧情片在线观看| 日韩av福利在线观看| 9国产精品午夜| 日韩精品视频在线播放| 久久久久亚洲AV成人无在| 午夜国产一区二区| 欧美激情视频网址| 天天干天天色综合| 国产综合色产在线精品| 国产伦精品一区二区三区四区免费 | 国产高清一区在线观看| 亚洲欧洲日产国码二区| 国产乱淫av片杨贵妃| 亚洲欧美小说色综合小说一区| 欧美视频在线观看一区二区| 免费看的av网站| 米奇精品关键词| 中文国产成人精品| 成人免费看片98| 久久亚洲风情| 亚洲综合在线做性| 国内精品一区视频| 亚洲最大的成人av| wwwwww.色| 国产精品久av福利在线观看| 中国人与牲禽动交精品| 一区二区三区视频免费看| 男人操女人的视频在线观看欧美| 97se国产在线视频| 北条麻妃在线| 香蕉成人伊视频在线观看| 亚洲第一中文av| 国产精品2023| 欧美成人剧情片在线观看| 久久精品无码av| 成熟亚洲日本毛茸茸凸凹| 亚洲欧美国产不卡| 国模套图日韩精品一区二区| 日韩精品自拍偷拍| 中文天堂资源在线| 国产精品久久777777毛茸茸| 亚洲自拍偷拍福利| av电影在线观看网址| 精品久久久久久久久久久久久 | 国产精品日韩二区| 精品影院一区| 亚洲综合一区二区| 日本人视频jizz页码69| 欧美理论视频| 欧美在线视频一区| 日韩在线视频观看免费| 一区二区三区欧美日| 911福利视频| 激情综合网站| 日本免费一区二区三区视频观看| 人妻精品一区一区三区蜜桃91 | 日本一区二区免费在线观看| 国产精品自产自拍| 性欧美videosex高清少妇| 中文av在线全新| 亚洲国产精品电影在线观看| 国产一级免费观看| 国产不卡一区视频| 99中文字幕在线观看| 久久久久黄色| 精品国产拍在线观看| 又骚又黄的视频| 国产精品视频线看| 亚洲欧美视频二区| heyzo久久| 国产精品久久av| 国产精品一区二区三区四区色 | 亚洲av综合一区| 2019国产精品| 久久9精品区-无套内射无码| 日韩mv欧美mv国产网站| 国产做受高潮69| 欧美成人片在线| 欧美性极品少妇精品网站| 久久丫精品国产亚洲av不卡| 国产免费成人| 欧美精品在线一区| abab456成人免费网址| 中文字幕精品av| 一级黄色片免费| 亚洲精品欧美激情| 婷婷五月精品中文字幕| 国产一区二区精品| 日韩视频精品| 伊人久久大香线蕉综合影院首页| 另类专区欧美制服同性| 性欧美一区二区三区| 亚洲图片欧美一区| 91中文字幕永久在线| 日韩av电影一区| 中文字幕av导航| 久久99国产精品久久99大师| 热re91久久精品国99热蜜臀| 国产人成在线观看| 91精品国产一区二区人妖| 日本网站在线免费观看| 国产欧美综合在线| 五月天六月丁香| 国产农村妇女精品一二区| 日韩久久精品一区二区三区| 亚洲日本中文| 欧美激情亚洲视频| 久久免费看视频| 欧美美女直播网站| 久久狠狠高潮亚洲精品| 国产欧美日韩在线看| 亚洲精品国产久| 久久精品人人| 中文字幕第50页| 自拍自偷一区二区三区| 亚洲精品欧美日韩专区| av中文字幕在线观看第一页 | 91精品入口蜜桃| 中文不卡1区2区3区| 久久精品国产91精品亚洲| 日韩永久免费视频| 欧美高清视频在线高清观看mv色露露十八| 久久一二三四区| 国产精品美女久久久久aⅴ国产馆| 黑人无套内谢中国美女| 久久精选视频| 国产成人亚洲综合无码| 成人激情视频| 国产一区二区精品免费| 亚洲欧美综合久久久久久v动漫| 97在线观看免费高清| 二区三区在线观看| 亚洲天堂男人天堂女人天堂| 欧美 日韩 国产 在线| 高跟丝袜一区二区三区| 日韩在线视频免费看| 久久女同互慰一区二区三区| 国产成人精品综合久久久久99| 日韩高清在线电影| 日本福利视频在线| 亚洲午夜黄色| 日本中文字幕一级片| 欧美肥老太太性生活| 精品久久久久久一区| 色播一区二区| 国产在线精品自拍| 日韩性xxx| 亚洲**2019国产| 欧美xxxx做受欧美88bbw| xxav国产精品美女主播| 97最新国自产拍视频在线完整在线看| 亚洲精品国产精品国自产观看浪潮 | 91精品国产乱码久久久久久 | 中文字幕乱码中文字幕| 疯狂做受xxxx高潮欧美日本| 亚欧洲精品在线视频| 夜夜嗨av一区二区三区四季av| 天堂网中文在线观看| 亚洲国产精华液网站w | 亚洲成在人线免费观看| 国产中文一区二区| 高清一区二区三区| 国产精品久久久久久久免费大片| 97久久综合区小说区图片区| 亚洲一区久久久| 成人亚洲精品| 亚洲一区二区三区777| 国模大尺度视频一区二区| 成人综合网网址| 国产精品xnxxcom| 亚洲一区二区久久久久久| 成人福利一区二区| 国产精品国产三级国产专播精品人 | 777久久精品一区二区三区无码 | 亚洲无线码在线一区观看| 国内精品一区视频| 在线电影av不卡网址| 日本激情在线观看| 欧美成人合集magnet| 色屁屁www国产馆在线观看| 欧美激情视频一区二区| а√在线天堂官网| 日韩av手机在线| 色综合天天色| 成人福利网站在线观看| 国产一区二区三区免费在线 | 久久亚洲欧美国产精品乐播| 91成年人网站| 中文一区二区完整视频在线观看| 9.1片黄在线观看| 亚洲视频 欧洲视频| 美女的奶胸大爽爽大片| 姬川优奈aav一区二区| 香蕉污视频在线观看| 欧美色区777第一页| 国产不卡精品视频| 欧美精品一区二区三区一线天视频 | 免费人成在线观看播放视频 | 久久影视中文粉嫩av| 欧美日中文字幕| ijzzijzzij亚洲大全| 亚洲日本成人| 在线观看av日韩| 国产成人亚洲综合a∨婷婷| 香蕉视频黄色在线观看| 中文字幕一区二区三区四区| 精品一级少妇久久久久久久| 色综合久久88色综合天天免费| 中文人妻熟女乱又乱精品| 日韩一区二区三区视频在线| 神马久久高清| 欧美成人h版在线观看| 日本蜜桃在线观看视频| 国产精品男人的天堂| 中文字幕av一区二区三区四区| 免费成人av网站| 91精品观看| 久久久久久久久久久久久久国产| 狠狠色狠狠色综合日日91app| 小毛片在线观看| 国产精品福利一区二区三区| 日韩精品一区二区不卡| 欧美美女网站色| 日韩有码电影| 欧美丰满少妇xxxx| 成人在线高清| 精品国产91亚洲一区二区三区www| 日韩电影免费网址| 欧美日韩黄色一级片| 国产精品一区二区在线看| 舐め犯し波多野结衣在线观看| 一区二区不卡在线播放 | 男生女生差差差的视频在线观看| 久久精品国产欧美亚洲人人爽| 亚洲综合电影| 韩日午夜在线资源一区二区| 亚洲字幕久久| 黑森林精品导航| 久久综合久久综合久久综合| 欧美日韩精品在线观看视频| 欧美日韩精品欧美日韩精品| 欧美日韩伦理片| 久久久久中文字幕2018| 精品一区91| 亚洲视频小说| 亚洲一区亚洲| 丰满少妇xbxb毛片日本| 亚洲欧美一区二区三区孕妇| 中文av免费观看| 国产一区二区三区在线观看视频| 国产在线看片免费视频在线观看| 999视频在线观看| 91精品91| 在线视频一二区| 亚洲欧美在线视频观看| 亚洲天堂免费av| 亚洲欧美日韩网| 激情aⅴ欧美一区二区欲海潮| 91国产在线播放| 亚洲成人最新网站| 天天操天天爱天天爽| 久久久精品天堂| 欧美一区二区激情视频| 亚洲电影在线观看| av影视在线| 国产精品嫩草在线观看| 亚洲激情av| 精品国产av色一区二区深夜久久| 亚洲一区二区三区四区五区黄| va视频在线观看| 久久99视频免费| 91精品啪在线观看国产爱臀| www.在线观看av| www.日韩精品| 国产超碰人人爽人人做人人爱| 日韩精品免费视频| 国产 日韩 欧美一区| 精品产品国产在线不卡| 国语精品一区| 91传媒理伦片在线观看| 亚洲一区二区欧美日韩| 黄色一级大片在线免费看国产| 欧美福利视频网站| 福利在线一区| 久久久999免费视频| 欧美韩国日本一区| 97超碰人人模人人人爽人人爱| 久久精品人人做人人爽| 91久久精品无嫩草影院| 欧美一区二区中文字幕| 久久久欧美精品sm网站| 丰满熟女人妻一区二区三| 久久国产精品久久久久| 成人av综合网| 免费激情视频在线观看| 中文字幕中文字幕在线一区| 亚洲国产av一区二区| 日本精品一区二区三区在线| 99久久精品费精品国产| 亚洲精品无码一区二区| 欧美在线免费播放|