天天看點

httprunner 3.x 入門 -2 入門案例

在學pytest的過程中,我一直搞不懂為什麼變量引用用變量名或{變量名}引用,方法用

from string import Template
...
var_data = Template("access_token is $access_token")
# sub_string的内容可以讀取yaml檔案,然後轉換成string,即dumps
sub_string = {"access_token": "abcdefg12345"}
var_data.safe_substitute(sub_string)
...           

複制

完成變量引用。

我們繼續來學習httprunner3.x版本

上一講我們先介紹了httprunner的必須知道的指令。

現在我們來通過案例,進一步了解httprunner

我們先打開fiddler,然後用postman分别跑擷取access_token和建立标簽的接口。分别選擇fiddler抓到的兩個接口的包,然後選擇導出

httprunner 3.x 入門 -2 入門案例

格式選擇HTTPArchive v1.2,這樣儲存下的就是.har檔案

httprunner 3.x 入門 -2 入門案例

然後把這兩個.har檔案複制到項目har檔案夾下,并在pycharm的終端(Terminal)中先到har檔案夾目錄,然後執行指令

har2case 檔案名.har -2y           

複制

也就是把har檔案轉換成yaml檔案,如下圖

httprunner 3.x 入門 -2 入門案例

然後我們把get_acc.yml内容進行修改,改成我們做接口架構時要用的樣子

1、删掉多餘的内容如headers

2、用例資料全部采用引用

config:
    name: testcase description
    variables:
        appid: wx4d8f7de320aca501
        grant_type: client_credential
        secret: d096e22047235cad799d917a517c6246
    verify: False
    base_url: https://api.weixin.qq.com
teststeps:
-   name: /cgi-bin/token
    request:
        method: GET
        params:
            appid: $appid
            grant_type: $grant_type
            secret: $secret
        url: /cgi-bin/token
    extract:
        access_token: content.access_token
    validate:
    -   equals:
        - status_code
        - 200
    -   eq:
        - body.expires_in
        - 7200           

複制

然後通過

hrun get_acc.yml

執行

httprunner 3.x 入門 -2 入門案例

可以看到用例仍然成功了。

一般來說,我們測試用例的結構為:

config:  #配置
   name  #名稱
   variables  #全局變量
   verify  #https協定
   base_url  #環境變量
teststeps  #步驟
   name  #步驟名稱
   request  #請求
      headers   #請求頭
      method   #請求方式
      params   #請求參數
      url   #請求路徑
      cookie   #cookie資訊
      json   #用于發送http請求正文
      data   #用于發送http請求正文
extract   #提取:通過content或body,很少用正則
validate   #斷言           

複制

直接執行

hrun 檔案名.yml

不列印傳回值,加個-s即可

hrun -s 檔案名.yml           

複制

上面我們實作了單個接口用例,但是我們工作中要做很多冒煙測試,那怎麼把用例關聯呢?

我們先對檔案進行分類

1、把.har檔案放到har檔案夾

2、建立api檔案夾,把我們寫好的變量用例放到裡面

3、把測試用例檔案放到testcases檔案夾

4、建立testsuites檔案夾,用于存放冒煙、接口關聯用例

httprunner 3.x 入門 -2 入門案例

代碼:

# api/get_access_token.yml

config:
    name: 擷取access_token
    variables:
        appid: wx4d8f7de320aca501
        grant_type: client_credential
        secret: d096e22047235cad799d917a517c6246
    verify: False
    base_url: https://api.weixin.qq.com
teststeps:
-   name: /cgi-bin/token
    request:
        method: GET
        params:
            appid: $appid
            grant_type: $grant_type
            secret: $secret
        url: /cgi-bin/token
    extract:
        access_token: content.access_token           

複制

# api/select_tags.yml

config:
    name: 查詢标簽
    variables:
        access_token: ${access_token}
    verify: false
    base_url: https://api.weixin.qq.com
teststeps:
-   name: /cgi-bin/tags/get
    request:
        method: GET
        params:
            access_token: ${access_token}
        url: /cgi-bin/tags/get           

複制

# testcases/get_access_token_case.yml

config:
    name: get_access_token
teststeps:
-   name: /cgi-bin/token
    api: api/get_access_token.yml           

複制

# testcases/select_tags_case.yml

config:
    name: select tags
teststeps:
-   name: /cgi-bin/token
    api: api/get_access_token.yml
    export:
        - access_token
-   name: /cgi-bin/tags/get
    api: api/select_tags.yml           

複制

# testsuites/tags_suits.yml

config:
    name: 查詢标簽
teststeps:
-   name: /cgi-bin/token
    testcase: testcases/get_access_token_case.yml
-   name: /cgi-bin/tags/get
    testcase: testcases/select_tags_case.yml           

複制

testsuits一般用于接口關聯的冒煙測試。

需要注意的是查詢标簽需要傳access_token,我們在api檔案夾下的select_tags.yml寫的全是變量。如下圖:

httprunner 3.x 入門 -2 入門案例

提取變量在測試用例的export關鍵字裡,這樣寫就能把傳回的access_token取出來了

httprunner 3.x 入門 -2 入門案例

這裡需要強調一下:

1、檔案夾的名不要寫錯了,在httprunner裡檔案夾名是有要求的

2、testsuites檔案夾下調用的用例裡不能有斷言validate。

不然就會各種報錯……