从 Json 列表中获取值然后验证列表中出现的值

Get value from Json list then validate the value appear in list

我想检查值 "train-again-v1-16k" 出现在任何 "model_name" 中。

我能够得到响应,然后我想通过使用 Dictionary Should Contain Value.

来确保列表包含值

测试用例失败:

AttributeError: 'list' object has no attribute 'values'

请告知检查列表中值的正确语法是什么。

*** Settings ***
Library  Browser
Library  String
Library  RequestsLibrary
Library  Collections
Library  RPA.JSON

*** Test Cases ***
001-Models-Deploy
    Create Session   mysession   ${SRS-API-Host}
    ${response}=    GET    ${SRS-API-Host}/models_list
    ${models}=    Get values from JSON    ${response.json()}    $..model_name    
    Log To Console     models is${models}
    Dictionary Should Contain Value     ${models}     'train-again-v1-16k'

获取响应:

{
    "message": "",
    "status": "ok",
    "valid_model_list": [
        {
            "corpus_list": [
                "test1"
            ],
            "display_name": "16000samplerate-60train-40test-v1-16k",
            "language": "NO INFO",
            "lexicon": "001_Lex_one_using_001_wav_stm_only",
            "model_name": "16000samplerate-60train-40test-v1-16k",
            "status": true,
            "train_duration": "1.0 Hrs"
        },
        {
            "corpus_list": [
                "Corpus3397"
            ],
            "display_name": "train-again-v1-16k",
            "language": "NO INFO",
            "lexicon": "NTU",
            "model_name": "train-again-v1-16k",
            "status": true,
            "train_duration": "1.33 Hrs"
        }
    ]
}

通过使用Should Contain,从Get values from JSON获得的列表,断言特定值。

*** Settings ***
Library  Browser
Library  String
Library  RequestsLibrary
Library  Collections
Library  RPA.JSON
Resource            ../Resources/BrowserFunctions.robot
Suite Setup         Start New Browser
Suite Teardown      Close Browser



*** Test Cases ***
001-Models-Deploy
   #Verify model appear at SRS API Model List
    Create Session   mysession   ${SRS-API-Host}
    ${response}=    GET    ${SRS-API-Host}/models_list
    ${models}=    Get values from JSON    ${response.json()}    $..model_name

    Log To Console     models is${models}

    Should Contain    ${models}    sourcemodel8k8020-v1-8k

Get values from JSON returns 一个包含所有匹配值的列表,而 Dictionary Should Contain Value 与字典对象一起工作并期望它。

只需更改用于断言某个值存在于适用于列表的内容中的关键字 - List Should Contain Value,或只是 Should Contain:

List Should Contain Value     ${models}     train-again-v1-16k