首頁>技術>

就在2021年3月11日下午,筆者正在投入到if/else 這種複雜邏輯的程式碼編寫時,一封郵件引起了我的注意,本以為又是某xx銀行的信用卡催命賬單、或者諸如蘭博基尼2W元代金卷這種廣告郵件時。我定睛一看! 居然是 RobotFramework正式釋出了4.0版本!!! 點進去一看,發現帶來了賊多 **新特性** 和 ***功能增強*** 以及 ***BUG修復***,詳細Release Note見:

https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-4.0.rst

使用以下命令更新到

```sh

pip install robotframework==4.0

```

# 新特性1 - 支援 Skip 跳過狀態

內建關鍵字多了 `Skip` 和 `Skip if` 用來跳過用例

![image.png](https://upload-images.jianshu.io/upload_images/7303723-1d6cdeab3d8d3f02.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

在報告中也會有體現

![image.png](https://upload-images.jianshu.io/upload_images/7303723-70c5ddce377e63af.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

再也不用傻傻用`Pass If`了 ,或者使用 `-e` 透過tag跳過用例了

**透過`Skip` 跳過的用例會在報告裡面體現** 而 `-e` 不會

# 新特性2 - 原生IF/ELSE語法支援

這個必須好評,較複雜邏輯再也不用在用例裡面寫僵硬的`Run Keyword If` 了,直接上程式碼

原來:

```python

Run Keyword If "${userName}"=="${EMPTY}" and "${ip}"=="${EMPTY}" Log xxx

... ELSE IF "${userName}"=="${EMPTY}" and "${ip}"!="${EMPTY}" Log yyy

... ELSE IF "${userName}"!="${EMPTY}" and "${ip}"=="${EMPTY}" Log zzz

```

現在:

```python

Example3

IF "${direction}" == "STRAIGHT"

Log Going straight

ELSE IF "${direction}" == "LEFT"

Log Turning left

ELSE IF "${direction}" == "RIGHT"

Log Turning right

ELSE

Fail Unrecognized direction: ${direction}

END

```

以前不可能直接巢狀FOR迴圈。實現這一點的唯一方法是使用關鍵字包含另一個迴圈的迴圈。這個可以了,FOR迴圈以及新的IF/ELSE結構可以自由巢狀,示例:

```python

FOR ${row} IN @{rows}

FOR ${cell} IN @{row}

IF "${cell}" != "IGNORE"

Process Cell ${cell}

END

END

END

```

# 新特性3 - 移除了`Criticality`

這個在筆者平常寫指令碼過程中使用很少、具體可以看相關文件、而且還提供了由`Criticality`遷移到使用`Skip`的方案

#新特性4 - 列表@{list} 和字典&{dict}的訪問得到了增強

機翻一波

+ @{var}[item]和&{var}[item]首先進行常規變數項查詢,與使用${var}[item]時完全相同。

+ 也支援像@{var}[item1][item2]這樣的巢狀訪問,以及像@{var}[1:]這樣的列表使用切片表示法。

+ 使用@{var}[item]語法時,找到的項必須是列表或類似列表的。它的展開方式與@{var}的展開方式完全相同。

+ 使用&{var}[item]語法時,找到的項必須是對映。它的展開方式與&{var}的展開方式完全相同。

#新特性5 - `:FOR`迴圈不被支援了

在3.1版本使用`:FOR` 會產生警告 推薦使用新的`FOR` `END` 語法

但是在4.0版本 `:FOR`已經不再被支援了、使用應該會直接報錯。

不要使用:

```python

:FOR ${animal} IN cat dog cow

\ Keyword ${animal}

\ Another keyword

```

使用:

```python

FOR ${animal} IN cat dog cow

Keyword ${animal}

Another keyword

END

```

# 最後

其實還有很多新特性 和 bug的完善、筆者沒有時間一一去解讀(最近在寫bug)

如果希望更加進一步瞭解的可以 去看最新的 [更新日誌](https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-4.0.rst)

可見現在RF已經在慢慢的完善、改進,變得更靈活和易用。我已經在期待5.0版本了 !!! 你呢 ?

11
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 透過瀏覽器看懂前端本質 | 找分享