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

我們一起聊聊異地多活之業務定制型異地多活架構

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

1.摘要

Rust中的測試函數是用來驗證非測試代碼是否是按照期望的方式運行的, 測試函數體通常需要執行三種操作:1.設置任何所需的數據或狀態;2.運行需要測試的代碼;3.斷言其結果是我們所期望的。本篇文章主要探討了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>替代斷言分別完成了代碼測試和自定義錯誤消息打印, 在以后的實際應用中, 可能還會有一些組合測試的場景出現, 到時候再具體問題具體分析。

責任編輯:武曉燕 來源: 二進制空間安全
相關推薦

2023-11-27 07:57:46

2024-04-26 00:28:14

異地多活架構

2022-01-10 08:17:40

異地設計實踐

2020-11-20 09:23:01

高可用異地淘寶

2021-02-24 10:05:07

架構運維技術

2021-02-04 10:00:09

異地多中心容災

2019-03-18 10:32:33

容災雙活同城

2024-08-12 08:04:00

2021-04-23 09:55:27

技術開發實踐

2025-03-05 08:02:45

2022-09-22 09:24:01

架構改造

2018-05-24 10:04:16

Zookeeper異地原理

2020-02-12 11:34:56

架構平滑上云機房遷移

2022-04-08 07:52:00

架構多機房多活

2024-05-29 12:53:30

2024-07-15 08:02:20

2025-11-03 06:41:16

系統架構模式數據

2024-02-26 00:00:00

架構老化重構

2025-10-31 01:00:00

2024-10-15 11:04:18

點贊
收藏

51CTO技術棧公眾號

日本一二三不卡| 丝袜美腿亚洲色图| 精品一区二区三区免费毛片爱 | 亚洲尤物精选| 中文字幕欧美国内| 国产真人做爰毛片视频直播| 天天色棕合合合合合合合| 丝袜美腿高跟呻吟高潮一区| 久久人人爽亚洲精品天堂| 欧美一级黄色片视频| 麻豆电影在线播放| 不卡在线观看av| 国产日韩精品在线| 波多野结衣家庭教师在线观看 | 精品中文字幕人| 亚洲天堂一二三| 国产日韩一区| 欧美激情第三页| 久久日免费视频| 牛牛影视久久网| 欧美精品日日鲁夜夜添| 欧美日韩在线中文| 91超碰在线免费| 国产精品久久三| 欧美另类网站| 日韩一区二区三区在线观看视频| 美女视频黄久久| 一区二区亚洲欧洲国产日韩| 欧美成人精品一区二区综合免费| 久久bbxx| 欧美国产成人在线| 九九九九九九精品| www.天天干.com| 极品少妇xxxx偷拍精品少妇| 日韩免费av在线| 69成人免费视频| 亚洲每日在线| 久久久久久久国产| 一级黄色录像视频| 成人在线tv视频| 9191久久久久久久久久久| 日本女优爱爱视频| 亚洲日本天堂| 懂色aⅴ精品一区二区三区蜜月| 国产成人永久免费视频| 黄色av免费在线| 最新国产成人在线观看| 伊人av成人| 懂色av一区二区三区四区| 国产在线精品一区二区三区不卡| 国产精品美腿一区在线看| 丰满人妻老熟妇伦人精品| 亚洲深夜av| 青草青草久热精品视频在线网站 | 91久久精品日日躁夜夜躁欧美| 色狠狠久久av五月综合|| 香蕉久久一区二区三区| av一区二区久久| 精品日本一区二区三区在线观看| 可以免费观看的毛片| 成人免费视频视频| 国产视频精品网| 亚洲av人无码激艳猛片服务器| 久久激情久久| 国产精品高精视频免费| 中文字幕资源网| 激情综合色综合久久综合| 成人写真视频福利网| 99热这里只有精品99| 国产精品一区二区在线看| aaa级精品久久久国产片| 亚洲欧美黄色片| 99精品久久只有精品| 国产精品久久久久久久久久久新郎 | 日本黄色网址大全| 欧美一级精品| 日韩在线免费视频| 欧美交换国产一区内射| 国产亚洲成人一区| 国产精品美女久久久久久免费 | 亚洲级视频在线观看免费1级| 成人网站免费观看| 欧美亚洲国产激情| 九九精品视频在线| www.久久精品视频| 精品在线播放免费| 激情视频在线观看一区二区三区| 黄色在线免费观看大全| 亚洲色欲色欲www| 国产男女免费视频| www.成人在线视频| 日韩欧美高清一区| 真实乱视频国产免费观看 | 日韩a∨精品日韩在线观看| 日韩网站中文字幕| 欧美zozozo| 娇妻被老王脔到高潮失禁视频| 伊人久久大香线蕉综合四虎小说 | 第一区第二区在线| 亚洲天堂日韩电影| 免费在线观看黄色av| 肉色丝袜一区二区| 国产成人精品自拍| 国产精品视频第一页| 成人美女视频在线看| 午夜老司机精品| а√在线中文网新版地址在线| 欧洲精品中文字幕| 99热超碰在线| 天天插综合网| 国产精品成人在线| 国产91麻豆视频| 国产精品久久免费看| 欧美三级一级片| 成人午夜888| 国产亚洲精品久久久久久777| 精品无码免费视频| 亚洲午夜精品久久久久久app| 中文字幕欧美日韩| 成年免费在线观看| 国产精品一区二区在线播放| 亚洲欧美日韩精品在线| 悠悠资源网亚洲青| 亚洲精品一区二区精华| 欧美精品欧美极品欧美激情| 天天做天天爱天天综合网| 国产成一区二区| 中文字幕观看在线| 91香蕉视频黄| www.在线观看av| 国产精品亚洲综合在线观看| 在线观看91久久久久久| 日韩中文字幕在线观看视频| av中文一区二区三区| av日韩在线看| 欧美大片91| 久久国产精品网站| 国产偷拍一区二区| 最新高清无码专区| 91精产国品一二三产区别沈先生| 欧美国产一区二区三区激情无套| 国产精品久久久久久久美男| 国产在线自天天| 在线免费精品视频| 无码人妻丰满熟妇啪啪欧美| 久久中文字幕一区二区三区| 欧美日韩另类丝袜其他| 午夜日韩成人影院| 亚洲人成啪啪网站| 日韩欧美国产另类| 中文字幕不卡在线观看| 性chinese极品按摩| 欧美gayvideo| 91青草视频久久| 三级毛片在线免费看| 精品久久久久久久中文字幕 | 色七七在线观看| 在线视频成人| 日韩电影中文字幕| 看片网址国产福利av中文字幕| 91视频国产观看| 国产精品拍拍拍| 99久久99久久精品国产片桃花| 国产三级精品网站| 性欧美ⅴideo另类hd| 精品国产乱子伦一区| 圆产精品久久久久久久久久久| 久久影院视频免费| www.欧美日本| 香蕉综合视频| 国产精品日韩欧美一区二区三区| 欧美aa在线观看| 日韩一卡二卡三卡| 国产精品第二十页| 久久久久久9999| 午夜精品免费看| 在线观看日韩av电影| 日本精品免费| 91久久青草| 97成人精品区在线播放| 一本一道波多野毛片中文在线| 欧美成人欧美edvon| 中文字幕精品三级久久久| 中文字幕不卡的av| 国产香蕉精品视频| 日韩国产成人精品| 91传媒免费视频| 国产一区毛片| 日韩免费观看在线观看| 日本www在线| 亚洲精品国产精品国自产观看浪潮 | 色欧美日韩亚洲| 中文字幕电影av| 久久日韩粉嫩一区二区三区| 一级做a爱视频| 免费亚洲网站| 久久亚洲国产成人精品无码区| 精品产国自在拍| 国产一区二区不卡视频在线观看| 69堂精品视频在线播放| 亚洲人成网站999久久久综合| 一本到在线视频| 天天综合天天做天天综合| 亚洲人做受高潮| 91美女片黄在线观看| 永久免费看片在线观看| 蜜桃91丨九色丨蝌蚪91桃色| heyzo亚洲| 欧美日韩伊人| 自拍视频一区二区三区| 精品免费一区二区| 久久精品99| 澳门久久精品| 亚洲在线一区二区| 国产精品黄色片| 4438全国成人免费| av中文字幕在线看| 久久综合久久88| 午夜伦全在线观看| 亚洲天堂免费在线| 暖暖视频在线免费观看| 亚洲第一二三四五区| 国产三级视频在线播放| 欧美日韩国产精品成人| 国产免费a视频| 欧美性xxxxhd| 久久久国产高清| 亚洲高清视频中文字幕| 加勒比av在线播放| 亚洲伦理在线精品| 久久久久亚洲AV成人无码国产| 激情丁香综合五月| 中文字幕亚洲欧洲| 麻豆国产欧美日韩综合精品二区| 无遮挡又爽又刺激的视频| 亚洲一区视频| 激情六月丁香婷婷| 国产精品呻吟| 国产精品视频一区二区三区四区五区| 尤物在线精品| 男人日女人逼逼| 久久国产精品亚洲人一区二区三区 | 午夜宅男在线视频| 石原莉奈在线亚洲二区| 久久国产色av免费观看| 老司机精品福利视频| 久久久精品麻豆| 麻豆一区二区在线| 成人日韩在线视频| 狠狠狠色丁香婷婷综合久久五月| 久久久久xxxx| 国产传媒一区在线| 欧美激情 亚洲| 91亚洲资源网| 日本激情小视频| 国产精品夜夜嗨| 日本人妻一区二区三区| 不卡欧美aaaaa| 熟女少妇一区二区三区| 欧美国产日本韩| 免费看特级毛片| 亚洲免费在线视频| 在线免费观看毛片| 日本国产一区二区| 一二三区中文字幕| 日韩你懂的电影在线观看| 五月天婷婷社区| 亚洲午夜精品视频| 成人在线影视| 最近中文字幕日韩精品| 浪潮av一区| 久久久久久亚洲精品不卡| 亚洲黄色免费看| 成人国产精品一区| 久久亚洲黄色| 亚洲高清视频一区| 欧美日韩 国产精品| 国产欧美高清在线| 国产麻豆9l精品三级站| 久久国产精品无码一级毛片| 国产精品污网站| 精品少妇爆乳无码av无码专区| 欧美性猛交xxxx免费看漫画 | 中文字幕99| 在线欧美日韩| 久久久久久蜜桃一区二区| 国产91丝袜在线播放九色| 成都免费高清电影| 亚洲精品写真福利| 亚洲无码精品一区二区三区| 日韩精品一区二区在线观看| 欧美日韩视频精品二区| 久久av.com| 日韩精品专区| 不卡一卡2卡3卡4卡精品在| 精品视频亚洲| 国产精品久久久久久久久电影网| 视频在线在亚洲| 催眠调教后宫乱淫校园| 中文字幕在线一区免费| 少妇一级淫片免费放中国| 91精品国产综合久久久久久久 | 精品免费国产一区二区| 国产成人亚洲综合色影视| 欧美日韩高清丝袜| 亚洲va韩国va欧美va| 国产男男gay网站| 伊人伊成久久人综合网小说| 国内老司机av在线| 91久久久久久久一区二区| 色综合综合色| 久久久性生活视频| 国产一区二区三区在线观看免费| 国产黄色大片免费看| 偷拍日韩校园综合在线| 国产国语亲子伦亲子| 久久精品国产精品| 少妇精品视频一区二区免费看| 国产一区二区三区无遮挡| 亚洲一区二区三区无吗| 9l视频白拍9色9l视频| 久久久国产精品麻豆| 尤物视频在线观看国产| 欧美videos中文字幕| fc2ppv国产精品久久| 国产日韩av在线播放| 日韩久久视频| 婷婷免费在线观看| 日本一区二区高清| 黄色污污视频软件| 亚洲午夜精品久久久久久性色 | 色婷婷综合久久| 午夜视频福利在线| 91精品国产99| 亚洲a级精品| 国产成人a亚洲精v品无码| av电影天堂一区二区在线| 久久亚洲av午夜福利精品一区| 欧美一区二区三区视频在线观看| 激情在线小视频| 92国产精品视频| 午夜视频精品| 精品中文字幕av| 91在线porny国产在线看| 中文字字幕在线中文| 亚洲免费视频网站| 亚洲第一二三四区| 四虎影视永久免费在线观看一区二区三区| 久久精品网址| 91在线无精精品白丝| 欧美四级电影网| 蜜桃视频网站在线| 亚洲free嫩bbb| 激情久久久久久久| 添女人荫蒂视频| 欧洲av在线精品| 久cao在线| 动漫一区二区在线| 一区二区动漫| 深夜做爰性大片蜜桃| 有码一区二区三区| 六月婷婷综合网| 欧美专区第一页| 秋霞欧美视频| 欧美xxxxxbbbbb| 亚洲国产成人高清精品| 色播色播色播色播色播在线| 国产精品福利在线观看网址| 91欧美在线| 国产成人av片| 大荫蒂欧美视频另类xxxx| a黄色在线观看| av免费观看久久| 性色一区二区| 天天看天天摸天天操| 亚洲精品国产拍免费91在线| 成人影院在线免费观看| 青青草原网站在线观看| 91在线看国产| 91精品国产乱码久久| 国模吧一区二区| 欧美激情欧美| yy1111111| 在线观看91av| 色综合桃花网| 美国av在线播放| 91丨porny丨最新| av加勒比在线| 国产精品pans私拍| 国产一区清纯| 成人小视频免费看| 精品处破学生在线二十三| 久久精品97| 国产极品尤物在线| 自拍av一区二区三区| 日本成人一区二区三区| 亚洲自拍偷拍色图| 全国精品久久少妇| 亚欧洲精品在线视频| 日日噜噜噜夜夜爽亚洲精品|