ApiTesting全鏈路接口自動化測試框架 - 實戰應用

場景一、添加公共配置

我們在做自動化開始的時候,一般有很多公共的環境配置,比如host、token、user等等,如果這些放在用例中,一旦修改,將非常的不便、麻煩(尤其切換環境)。

所以這裏我們提供了apiConfig.yml 文件用於存放公共接口配置,默認會根據第一個接口數據包,解析保存 host header 的值,如果存在 cookie 調用也將自動保存。

你也可以根據自己的需要,手動添加其他公共配置,然後可以在測試用例yaml 或接口數據 json文件中使用。

apiConfig.yml

PyDemo:
  host: 10.88.88.88:30131
  headers:
    Content-Type: application/x-www-form-urlencoded
  cookies:
  headtoken: TESTxu5YwIZFkVGczMn0H0rot2ps7zRIbvrTOEKN
test_addOrUpCurBact.yaml
test_info:
  title: register
  host: ${host}
  scheme: http
  method: POST
  address: /api/register/addOrUpCurBact
  mime_type: application/x-www-form-urlencoded
  headers: ${headers}
  timeout: 10
  file: false
  cookies: false
  premise: /register/test_getAdultCurbactList.yaml
test_case:
- summary: addOrUpCurBact
  describe: test_addOrUpCurBact
  parameter: addOrUpCurBact_request.json
  check_body:
    check_type: check_json
    expected_code: 200
    expected_result:
      success: true
      msg: 返回成功
addOrUpCurBact_request.json

[
    {
        "summary": "addOrUpCurBact",
        "body": {
            "params": {
                "pageType": "0",
                "unitCode": "${unitCode}","materName": "狂犬病疫苗(vero細胞)",
                "inocCorpCode": "50",
                "speCodeName": "1.0ml",
                "vaccSpeCode": "1002",
                "pym": "kqbymveroxb",
                "price": "0",
                "batnmb": "20110101",
                "qty": "100","createDate": "",
                "createManCode": "${createManCode}","bactValidate": "$GenDate(y+1)",
                "bizType": 1,
                "materTypeCode": "1"
            },
            "headtoken": "${headtoken}"
        }
    }
]

 


場景二、設置動態參數值

 默認我們可以通過解析接口數據包,生成單條測試用例和測試腳本,但是有的時候我們希望接口入參是變動的,以便生成不同的測試數據,覆蓋更多的測試情況。

這裏我爲大家提供了一些函數助手,用於生成不同的測試數據,詳情參考如下:
test_info:
  title: register
  host: ${host}
  scheme: http
  method: POST
  address: /api/register/findParam
  mime_type: application/x-www-form-urlencoded
  headers: ${headers}
  timeout: 10
  file: false
  cookies: false
  premise: false
test_case:
- summary: findParam
  describe: test_findParam
  parameter:
    params:
      key01: '$RandInt(1,9)'        #生成1-9之間的隨機數
      key02: '$RandStr(10)'       #生成10位隨機字符
      key03: '$RandChoice(a,b,c,d)'  #從列表中隨機選擇
      key04: '$GenPhone()'         #生成一個僞手機號
      key05: '$GenGuid()'        #生成一個guid
      key06: '$GenWxid()'        #生成一個僞微信ID
      key07: '$GenNoid()'        #生成一個僞身份證
      key08: '$GenNoid(y-18)'     #生成一個18歲僞身份證
      key09: '$GenDate(m+1)'      #生成下個月今天的日期
      key10: '$GenDatetime(d-1)'   #生成昨天此時的時間
    headtoken: ${headtoken}
  check_body:
    check_type: check_json
    expected_code: 200
    expected_result:
      success: true
      code:
      msg: 返回成功
      data:
      - '1'
      - '1'
      callTime:

 運行日誌:

PyDemo/testcase/register/test_findParam.py::TestRegister::test_findParam[case_data0] 2021-03-25 14:43:58,536 - apiSend.py - INFO: ====================================================================================================================
2021-03-25 14:43:58,536 - apiSend.py - INFO: 請求接口:findParam
2021-03-25 14:43:58,536 - apiSend.py - INFO: 請求地址:http://10.88.88.108:30131/api/register/findParam
2021-03-25 14:43:58,536 - apiSend.py - INFO: 請求頭: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
2021-03-25 14:43:58,536 - apiSend.py - INFO: 請求參數: {'params': {
'key01': '6',
'key02': 'D7a5fBA8de',
'key03': 'd',
'key04': '15595173529',
'key05': '7A0C9736-8D35-11EB-94DD-005056C00008',
'key06': 'AUTOwZ5yhv1rag9tpKTC3oLFAkuO',
'key07': '228934202103259403',
'key08': '139059200303252386',
'key09': '2021-04-25',
'key10': '2021-03-24 14:43:58'
}, 'headtoken': 'xu5YwIZFkVGczMn0H0rot2ps7zRIbvrTHNwMXx1sJXg='} 2021-03-25 14:43:58,536 - apiSend.py - INFO: 請求方法: POST FAILED

其中 $GenNoid()、$GenDate()、$Gendatetime() 方法默認獲取當前日期時間,同時支日期標識[ 年y,月m,日d,時h,分M,秒s ]標識搭配 [ +, - ]和數字,用於對日期時間進行調整。

 


場景三、添加多條用例

通常一個接口測試點會有多條,而默認只會生成一條,如果你想添加多條測試用例怎麼辦?

其實也很簡單,只需要在 testcase 中參考第一條用例,添加多條用例即可,通過summary進行區分即可。

test_info:
  title: register
  host: ${host}
  scheme: http
  method: POST
  address: /api/register/findParam
  mime_type: application/x-www-form-urlencoded
  headers: ${headers}
  timeout: 10
  file: false
  cookies: false
  premise: false
test_case:
- summary: findParam
  describe: 測試點1
  parameter:
    params:
      unitCode: '3202112002'
      first: 0
      pym: ''
      pageSize: 10
      page: 0
    headtoken: ${headtoken}
  check_body:
    check_type: check_json
    expected_code: 200
    expected_result:
      success: true
      code:
      msg: 返回成功
      data:
      - '1'
      - '1'
      callTime:

- summary: findParam2
  describe: 測試點2
  parameter:
    params:
      unitCode: '3202112002'
      first: 1
      pym: ''
      pageSize: 1
      page: 10
    headtoken: ${headtoken}
  check_body:
    check_type: check_json
    expected_code: 200
    expected_result:
      success: true
      code:
      msg: 返回成功
      data:
      - '1'
      - '1'
      callTime:

運行日誌:

C:\Python37\python.exe E:/__SVN__/Auto_Test_Jm/ApiTesting/startup.py
2021-03-18 10:50:59,642 - startup.py - INFO: 不開啓自動生成測試用例功能,將直接運行測試!
============================= test session starts =============================
platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0 -- C:\Python37\python.exe
cachedir: .pytest_cache
rootdir: E:\__SVN__\Auto_Test_Jm\ApiTesting
plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
collecting ... collected 6 items / 4 deselected / 2 selected

PyDemo/testcase/register/test_findParam.py::TestRegister::test_findParam[case_data0] 2021-03-18 10:50:59,987 - apiSend.py - INFO: ===================================================================================================================
2021-03-18 10:50:59,987 - apiSend.py - INFO: 請求接口:findParam
2021-03-18 10:50:59,987 - apiSend.py - INFO: 請求地址:http://10.88.88.141:20037/api/register/findParam
2021-03-18 10:50:59,987 - apiSend.py - INFO: 請求頭: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
2021-03-18 10:50:59,987 - apiSend.py - INFO: 請求參數: {'params': {'unitCode': '3202112002', 'first': 0, 'pym': '', 'pageSize': 10, 'page': 0}, 'headtoken': 'xu5YwIZFkVGczMn0H0rot2ps7zRIbvrTHNwMXx1sJXg='}
2021-03-18 10:50:59,987 - apiSend.py - INFO: 請求方法: POST
2021-03-18 10:51:00,003 - apiSend.py - INFO: 請求接口結果:
 (200, {'success': True, 'code': None, 'msg': '返回成功', 'data': ['1', '1'], 'callTime': None})
PASSED
PyDemo/testcase/register/test_findParam.py::TestRegister::test_findParam[case_data1] 2021-03-18 10:51:01,022 - apiSend.py - INFO: ===================================================================================================================
2021-03-18 10:51:01,022 - apiSend.py - INFO: 請求接口:findParam2
2021-03-18 10:51:01,022 - apiSend.py - INFO: 請求地址:http://10.88.88.141:20037/api/register/findParam
2021-03-18 10:51:01,022 - apiSend.py - INFO: 請求頭: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
2021-03-18 10:51:01,022 - apiSend.py - INFO: 請求參數: {'params': {'unitCode': '3202112002', 'first': 1, 'pym': '', 'pageSize': 1, 'page': 10}, 'headtoken': 'xu5YwIZFkVGczMn0H0rot2ps7zRIbvrTHNwMXx1sJXg='}
2021-03-18 10:51:01,022 - apiSend.py - INFO: 請求方法: POST
2021-03-18 10:51:01,038 - apiSend.py - INFO: 請求接口結果:
 (200, {'success': True, 'code': None, 'msg': '返回成功', 'data': ['1', '1'], 'callTime': None})
PASSED

======================= 2 passed, 4 deselected in 2.26s =======================
Report successfully generated to E:\__SVN__\Auto_Test_Jm\ApiTesting\PyDemo\report

如果是參數單獨存放在json文件中的,同樣可參考第一條,添加多個(json文件是以列表形式存儲的),依然通過summary進行區分。

[
    {
        "summary": "addOrUpCurBact",
        "body": {
            "params": {
                "pageType": "0",
                "unitCode": "${unitCode}","materName": "狂犬病疫苗(vero細胞)",
                "inocCorpCode": "50",
                "speCodeName": "1.0ml",
                "vaccSpeCode": "1002",
                "pym": "kqbymveroxb",
                "price": "0",
                "batnmb": "20110101","dataType": 2,
                "createDate": "",
                "createManCode": "${createManCode}","bactValidate": "$GenDate(y+1)",
                "bizType": 1,
                "materTypeCode": "1"
            },
            "headtoken": "${headtoken}"
        }
    },
    {
        "summary": "addOrUpCurBact2",
        "body": {
            "params": {
                "pageType": "0",
                "unitCode": "${unitCode}","materName": "狂犬球蛋白",
                "inocCorpCode": "50",
                "speCodeName": "0.5ml",
                "vaccSpeCode": "1005",
                "pym": "kqqdb",
                "price": "0",
                "batnmb": "20220202","dataType": 2,
                "createDate": "",
                "createManCode": "${createManCode}","bactValidate": "2022-02-02",
                "bizType": 1,
                "materTypeCode": "1"
            },
            "headtoken": "${headtoken}"
        }
    }
]
 

 


場景四、手動編寫用例

 如果你不想抓取接口數據包,也可以根據以下模板,手動編寫測試用例,然後運行auto_switch=1,系統也會自動生成對應的測試腳本,。

# 用例基本信息
test_info:
  # 測試用例標題,默認截取請求地址倒數第2個字段名,在報告中作爲一級目錄顯示
  title: register
  # 請求域名,默認讀取公共關聯值,可修改
  host: ${host}
  # 請求協議
  scheme: http
  # 請求類型
  method: POST
  # 請求地址
  address: /api/register/findParam
  # 參數媒體類型
  mime_type: application/x-www-form-urlencoded
  # 請求頭,默認讀取公共關聯值,可修改
  headers: ${headers}
  # 超時時長(s)
  timeout: 10
  # 是否需要上傳文件
  file: false
  # 是否需要獲取cookie
  cookies: false
  # 是否存在前置接口,如果存在,則填寫前置接口用例相對路徑,如:/register/test_getAdultCurbactList.yaml
  premise: false
  
# 測試用例,默認僅生成一個,可手動添加多個
test_case:
  # 用例概要,默認截取請求地址倒數第1個字段名
- summary: findParam
  # 用例描述,在報告中作爲二級目錄顯示
  describe: test_findParam
  # 接口請求參數,當總字符數超過200,將轉爲json文件單獨存儲
  parameter:
    params:
      unitCode: '3202112002'
      first: 0
      pym: ''
      pageSize: 10
      page: 0
    headtoken: ${headtoken}
  # 接口檢查結果
  check_body:
    # 檢查類型,目前支持5種,可自行修改,默認check_json,即僅檢查實際與期望結果格式是否一致
    check_type: check_json
    # 期望接口返回碼
    expected_code: 200
    # 期望接口返回消息體,當總字符數超過200,將轉爲json文件單獨存儲
    expected_result:
      success: true
      code:
      msg: 返回成功
      data:
      - '1'
      - '1'
      callTime:

 


場景五、多條接口關聯

 很多時候我們的接口都是有關聯的,只有調用了前一個接口後才能調用後一個接口,此時我們就可以通過 premise 參數傳入前一個接口的相對路徑即可。

 

通過以下日誌不難發現,在調用 addOrUpCurBact 接口前自動調用了 getAdultCurbactList 接口。

當然,如果在調用 getAdultCurbactList 接口之前還需要調用其他接口,同樣在 getAdultCurbactList 接口中添加前一個接口相對路徑即可。

:\Python37\python.exe E:/__SVN__/Auto_Test_Jm/ApiTesting/startup.py
2021-03-18 09:15:18,574 - startup.py - INFO: 不開啓自動生成測試用例功能,將直接運行測試!
============================= test session starts =============================
platform win32 -- Python 3.7.3, pytest-6.0.2, py-1.9.0, pluggy-0.13.0 -- C:\Python37\python.exe
cachedir: .pytest_cache
rootdir: E:\__SVN__\Auto_Test_Jm\ApiTesting
plugins: allure-pytest-2.8.18, assume-2.3.3, cov-2.10.1, html-3.0.0, rerunfailures-9.1.1, xdist-2.1.0
collecting ... collected 5 items / 4 deselected / 1 selected

PyDemo/testcase/register/test_addOrUpCurBact.py::TestRegister::test_addOrUpCurBact[case_data0] 2021-03-18 09:15:18,886 - initializePremise.py - INFO: 獲取前置接口測試用例:/register/test_getAdultCurbactList.yaml
2021-03-18 09:15:18,886 - initializePremise.py - INFO: 執行前置接口測試用例:{'title': 'register', 'host': '10.88.88.141:20037', 'scheme': 'http', 'method': 'POST', 'address': '/api/register/getAdultCurbactList', 'mime_type': 'application/x-www-form-urlencoded', 'headers': {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}, 'timeout': 10, 'file': False, 'cookies': False, 'premise': False}
2021-03-18 09:15:18,886 - apiSend.py - INFO: ======================================================================================================================================================
2021-03-18 09:15:18,886 - apiSend.py - INFO: 請求接口:getAdultCurbactList
2021-03-18 09:15:18,886 - apiSend.py - INFO: 請求地址:http://10.88.88.141:20037/api/register/getAdultCurbactList
2021-03-18 09:15:18,886 - apiSend.py - INFO: 請求頭: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
2021-03-18 09:15:18,886 - apiSend.py - INFO: 請求參數: {'params': {'unitCode': '3202112002', 'first': 0, 'pym': '', 'pageSize': 10, 'page': 0}, 'headtoken': 'xu5YwIZFkVGczMn0H0rot2ps7zRIbvrTHNwMXx1sJXg='}
2021-03-18 09:15:18,886 - apiSend.py - INFO: 請求方法: POST
2021-03-18 09:15:18,933 - apiSend.py - INFO: 請求接口結果:
 (200, {'success': True, 'code': None, 'msg': '返回成功', 'data': {'totalPage': 4, 'list': [{'bactCode': None, 'bactValidate': '2022-02-02 00:00:00', 'bacttypeGroupcode': None, 'batnmb': '20220202', 'bizType': 1, 'coreName': '大連雅立峯', 'corpSimpName': '大連雅立峯', 'createDate': '2021-02-23 16:02:45', 'createManCode': '3202112002008', 'createManName': None, 'createUnitcode': '3202112002', 'dataType': 2, 'delTime': None, 'first': None, 'guid': '06F2F6DA-2EF8-F372-E37B-E99AB6CE9917', 'ifAdd': None, 'ifMulti': 0, 'ifUse': 1, 'inocCorpCode': None, 'materName': '狂犬病疫苗(vero細胞)', 'materType': '86901119000052', 'materTypeCode': '1', 'modifyDate': '2021-03-09 14:32:29', 'modifyManCode': '3202112002013', 'modifyManName': None, 'modifyUnitcode': '3202112002', 'modifytDate': None, 'packageNum': '盒5支', 'pageSize': None, 'pageType': None, 'price': 0, 'priceEditMode': None, 'pym': 'kqbymveroxb', 'qty': 9831, 'speCode': None, 'speCodeName': '1.0ml', 'stopDate': None, 'storageCode': None, 'storageGuid': None, 'storageName': None, 'synDataList': [], 'unitCode': '3202112002', 'vaccSpeCode': '1002'}, {'bactCode': None, 'bactValidate': '2022-02-02 00:00:00', 'bacttypeGroupcode': None, 'batnmb': '20220202', 'bizType': 1, 'coreName': '武漢生物', 'corpSimpName': '武漢生物', 'createDate': '2021-02-23 16:02:46', 'createManCode': '3202112002008', 'createManName': None, 'createUnitcode': '3202112002', 'dataType': 2, 'delTime': None, 'first': None, 'guid': '769BD77C-43AB-3A2B-6383-6F5F6EC584AA', 'ifAdd': None, 'ifMulti': 0, 'ifUse': 1, 'inocCorpCode': None, 'materName': '狂犬球蛋白', 'materType': '86901960000553', 'materTypeCode': '2', 'modifyDate': '2021-03-05 15:56:37', 'modifyManCode': '3202112002008', 'modifyManName': None, 'modifyUnitcode': '3202112002', 'modifytDate': None, 'packageNum': '盒1支', 'pageSize': None, 'pageType': None, 'price': 0, 'priceEditMode': None, 'pym': 'kqqdb', 'qty': 9873, 'speCode': None, 'speCodeName': '200IU', 'stopDate': None, 'storageCode': None, 'storageGuid': None, 'storageName': None, 'synDataList': [], 'unitCode': '3202112002', 'vaccSpeCode': '1020'}, {'bactCode': None, 'bactValidate': '2022-02-02 00:00:00', 'bacttypeGroupcode': None, 'batnmb': '20220202', 'bizType': 2, 'coreName': '成都歐林', 'corpSimpName': '成都歐林', 'createDate': '2021-02-23 16:02:47', 'createManCode': '3202112002008', 'createManName': None, 'createUnitcode': '3202112002', 'dataType': 2, 'delTime': None, 'first': None, 'guid': 'B54ADF57-26AA-E75D-8AA0-803BD15D89F8', 'ifAdd': None, 'ifMulti': 0, 'ifUse': 1, 'inocCorpCode': None, 'materName': '破傷風疫苗', 'materType': '86981089000016', 'materTypeCode': '1', 'modifyDate': '2021-03-05 15:56:46', 'modifyManCode': '3202112002008', 'modifyManName': None, 'modifyUnitcode': '3202112002', 'modifytDate': None, 'packageNum': '盒1支', 'pageSize': None, 'pageType': None, 'price': 20, 'priceEditMode': None, 'pym': 'psfym', 'qty': 9954, 'speCode': None, 'speCodeName': '0.5ml', 'stopDate': None, 'storageCode': None, 'storageGuid': None, 'storageName': None, 'synDataList': [], 'unitCode': '3202112002', 'vaccSpeCode': '1001'}, {'bactCode': None, 'bactValidate': '2022-02-02 00:00:00', 'bacttypeGroupcode': None, 'batnmb': '20220202', 'bizType': 2, 'coreName': '華蘭生物工程重慶', 'corpSimpName': '華蘭生物工程重慶', 'createDate': '2021-02-23 16:02:48', 'createManCode': '3202112002008', 'createManName': None, 'createUnitcode': '3202112002', 'dataType': 2, 'delTime': None, 'first': None, 'guid': 'CCB456B8-65F5-01B0-A049-9558CC985F94', 'ifAdd': None, 'ifMulti': 0, 'ifUse': 1, 'inocCorpCode': None, 'materName': '破傷風球蛋白', 'materType': '86909588000054', 'materTypeCode': '2', 'modifyDate': '2021-03-05 15:56:50', 'modifyManCode': '3202112002008', 'modifyManName': None, 'modifyUnitcode': '3202112002', 'modifytDate': None, 'packageNum': '盒1支', 'pageSize': None, 'pageType': None, 'price': 20, 'priceEditMode': None, 'pym': 'psfqdb', 'qty': 9925, 'speCode': None, 'speCodeName': '250IU', 'stopDate': None, 'storageCode': None, 'storageGuid': None, 'storageName': None, 'synDataList': [], 'unitCode': '3202112002', 'vaccSpeCode': '1021'}]}, 'callTime': None})
2021-03-18 09:15:19,962 - apiSend.py - INFO: ======================================================================================================================================================
2021-03-18 09:15:19,962 - apiSend.py - INFO: 請求接口:addOrUpCurBact
2021-03-18 09:15:19,962 - apiSend.py - INFO: 請求地址:http://10.88.88.141:20037/api/register/addOrUpCurBact
2021-03-18 09:15:19,962 - apiSend.py - INFO: 請求頭: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
2021-03-18 09:15:19,962 - apiSend.py - INFO: 請求參數: {'params': {'pageType': '0', 'unitCode': '3202112002', 'bactCode': '280101', 'materType': '86901119000052', 'coreName': '大連雅立峯', 'corpSimpName': '大連雅立峯', 'materName': '狂犬病疫苗(vero細胞)', 'inocCorpCode': '50', 'speCodeName': '1.0ml', 'vaccSpeCode': '1002', 'pym': 'kqbymveroxb', 'price': '0', 'batnmb': '20110101', 'qty': '100', 'ifUse': 1, 'dataType': 2, 'createDate': '', 'createManCode': '3202112002008', 'modifyDate': '', 'modifyManCode': '3202112002008', 'bactValidate': '2022-03-18', 'bizType': 1, 'materTypeCode': '1'}, 'headtoken': 'xu5YwIZFkVGczMn0H0rot2ps7zRIbvrTHNwMXx1sJXg=', 'data': {'success': True, 'code': None, 'msg': '返回成功', 'data': {'totalPage': 4, 'list': [{'bactCode': None, 'bactValidate': '2022-02-02 00:00:00', 'bacttypeGroupcode': None, 'batnmb': '20220202', 'bizType': 1, 'coreName': '大連雅立峯', 'corpSimpName': '大連雅立峯', 'createDate': '2021-02-23 16:02:45', 'createManCode': '3202112002008', 'createManName': None, 'createUnitcode': '3202112002', 'dataType': 2, 'delTime': None, 'first': None, 'guid': '06F2F6DA-2EF8-F372-E37B-E99AB6CE9917', 'ifAdd': None, 'ifMulti': 0, 'ifUse': 1, 'inocCorpCode': None, 'materName': '狂犬病疫苗(vero細胞)', 'materType': '86901119000052', 'materTypeCode': '1', 'modifyDate': '2021-03-09 14:32:29', 'modifyManCode': '3202112002013', 'modifyManName': None, 'modifyUnitcode': '3202112002', 'modifytDate': None, 'packageNum': '盒5支', 'pageSize': None, 'pageType': None, 'price': 0, 'priceEditMode': None, 'pym': 'kqbymveroxb', 'qty': 9831, 'speCode': None, 'speCodeName': '1.0ml', 'stopDate': None, 'storageCode': None, 'storageGuid': None, 'storageName': None, 'synDataList': [], 'unitCode': '3202112002', 'vaccSpeCode': '1002'}, {'bactCode': None, 'bactValidate': '2022-02-02 00:00:00', 'bacttypeGroupcode': None, 'batnmb': '20220202', 'bizType': 1, 'coreName': '武漢生物', 'corpSimpName': '武漢生物', 'createDate': '2021-02-23 16:02:46', 'createManCode': '3202112002008', 'createManName': None, 'createUnitcode': '3202112002', 'dataType': 2, 'delTime': None, 'first': None, 'guid': '769BD77C-43AB-3A2B-6383-6F5F6EC584AA', 'ifAdd': None, 'ifMulti': 0, 'ifUse': 1, 'inocCorpCode': None, 'materName': '狂犬球蛋白', 'materType': '86901960000553', 'materTypeCode': '2', 'modifyDate': '2021-03-05 15:56:37', 'modifyManCode': '3202112002008', 'modifyManName': None, 'modifyUnitcode': '3202112002', 'modifytDate': None, 'packageNum': '盒1支', 'pageSize': None, 'pageType': None, 'price': 0, 'priceEditMode': None, 'pym': 'kqqdb', 'qty': 9873, 'speCode': None, 'speCodeName': '200IU', 'stopDate': None, 'storageCode': None, 'storageGuid': None, 'storageName': None, 'synDataList': [], 'unitCode': '3202112002', 'vaccSpeCode': '1020'}, {'bactCode': None, 'bactValidate': '2022-02-02 00:00:00', 'bacttypeGroupcode': None, 'batnmb': '20220202', 'bizType': 2, 'coreName': '成都歐林', 'corpSimpName': '成都歐林', 'createDate': '2021-02-23 16:02:47', 'createManCode': '3202112002008', 'createManName': None, 'createUnitcode': '3202112002', 'dataType': 2, 'delTime': None, 'first': None, 'guid': 'B54ADF57-26AA-E75D-8AA0-803BD15D89F8', 'ifAdd': None, 'ifMulti': 0, 'ifUse': 1, 'inocCorpCode': None, 'materName': '破傷風疫苗', 'materType': '86981089000016', 'materTypeCode': '1', 'modifyDate': '2021-03-05 15:56:46', 'modifyManCode': '3202112002008', 'modifyManName': None, 'modifyUnitcode': '3202112002', 'modifytDate': None, 'packageNum': '盒1支', 'pageSize': None, 'pageType': None, 'price': 20, 'priceEditMode': None, 'pym': 'psfym', 'qty': 9954, 'speCode': None, 'speCodeName': '0.5ml', 'stopDate': None, 'storageCode': None, 'storageGuid': None, 'storageName': None, 'synDataList': [], 'unitCode': '3202112002', 'vaccSpeCode': '1001'}, {'bactCode': None, 'bactValidate': '2022-02-02 00:00:00', 'bacttypeGroupcode': None, 'batnmb': '20220202', 'bizType': 2, 'coreName': '華蘭生物工程重慶', 'corpSimpName': '華蘭生物工程重慶', 'createDate': '2021-02-23 16:02:48', 'createManCode': '3202112002008', 'createManName': None, 'createUnitcode': '3202112002', 'dataType': 2, 'delTime': None, 'first': None, 'guid': 'CCB456B8-65F5-01B0-A049-9558CC985F94', 'ifAdd': None, 'ifMulti': 0, 'ifUse': 1, 'inocCorpCode': None, 'materName': '破傷風球蛋白', 'materType': '86909588000054', 'materTypeCode': '2', 'modifyDate': '2021-03-05 15:56:50', 'modifyManCode': '3202112002008', 'modifyManName': None, 'modifyUnitcode': '3202112002', 'modifytDate': None, 'packageNum': '盒1支', 'pageSize': None, 'pageType': None, 'price': 20, 'priceEditMode': None, 'pym': 'psfqdb', 'qty': 9925, 'speCode': None, 'speCodeName': '250IU', 'stopDate': None, 'storageCode': None, 'storageGuid': None, 'storageName': None, 'synDataList': [], 'unitCode': '3202112002', 'vaccSpeCode': '1021'}]}, 'callTime': None}}
2021-03-18 09:15:19,978 - apiSend.py - INFO: 請求方法: POST
2021-03-18 09:15:20,009 - apiSend.py - INFO: 請求接口結果:
 (200, {'success': True, 'code': None, 'msg': '返回成功', 'data': None, 'callTime': None})
PASSED

======================= 1 passed, 4 deselected in 2.32s =======================
Report successfully generated to E:\__SVN__\Auto_Test_Jm\ApiTesting\PyDemo\report\html

Process finished with exit code 0
 
再如果,你還需要獲取到前一個接口返回的參數值,那你只需要使用 ${key} 格式,這裏的key是前一個接口返回的參數。就比如以下 ${msg},這裏系統將獲取上一個接口的msg返回值作爲當前值。

test_case:
- summary: addOrUpCurBact
  describe: test_addOrUpCurBact
  parameter: addOrUpCurBact_request.json
  check_body:
    check_type: check_json
    expected_code: 200
    expected_result:
      success: true
      code:
      msg: ${msg}
      data:
      callTime:

 

 

作者:Leozhanggg

出處:https://www.cnblogs.com/leozhanggg/p/14519800.html

源碼:https://github.com/Leozhanggg/ApiTesting

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章