httprunner2.5.7参数化三种方式

Posted being@dd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了httprunner2.5.7参数化三种方式相关的知识,希望对你有一定的参考价值。

重点:2.x以上版本参数化都需要借助testsuite进行参数化,yml需严格缩进格式,不能用tab控制缩进,只能用空格控制

1、直接引用列表进行参数化

2、引用csv文件进行参数化

3、借助debugtalk辅助函数进行参数化

定义项目的文件框架

建立四个文件夹:api、testcases、testsuites、data,分别用来存放接口、用例、用例集、测试数据

1、编写接口yml脚本

在api文件下,新建一个yml文件,文件名为login.yml

脚本必须包含:name--接口名、request---请求、validate--断言

补充:

request:

headers:

传参:(post请求:content-type为json时-----json,content-type为form时----可用params/data)

(get请求:用params)

method: POST/GET

url:xxxx/xxxx/xx

login.yml 脚本入下:

name: login_api
base_url: http://xxxxx.xxx.com
request:
    headers:
        Content-Type: "application/json;charset=UTF-8"
        User-Agent:
          "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30
          (Khtml, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1 Edg/92.0.4515.159"
 # post: content-type为json时-----json,content-type为form时----可用params、data
 # get: 用params
       json:
        account: $account
        password: $password
    method: POST
    url: /nbugs-auth-center-test/xyhauth/checkPwd
validate:
-   eq:
    - status_code
    - 200
-   eq:
    - body.code
    - 200

2、引用接口,编写测试场景脚本

在testcases文件下,新建一个yml文件,文件名为test_case_login.yml

ps:可能是我的项目创建问题,引用api需要使用绝对路径,正常情况用api/login_test.yml就OK了

- config:
    name: login
- test:
    name: login_case
    api: "test_httprunner/api/login_test.yml"
    validate:
    -   eq:
          - status_code
          - 200
    -   eq:
          - body.code
          - 200

3、测试用例集,加载用例

方式一:直接引用列表进行参数化

在testsuites文件下,新建一个yml文件,文件名为test_suite_login.yml

引用testcase

引用列表参数

config:
    name: testcase description
testcases:
    nametest type suites:
        testcase: test_httprunner\\testcases\\test_case_login.yml
        parameters:
            account-password:
                - ["1782683xxxx", "69f600a1be1d7aa6318ea5b274c09ae6"]
                - ["user2", "222222"]
                - ["1782683xxxx", "333333"]

方式二:引用csv文件进行参数化

在data文件夹里面创建一个csv文件,文件名test_data_login

account,password
1782683xxxx,69f600a1be1d7aa6318ea5b274c09ae6
user2,222222
1782683xxxx,333333

在testsuites文件下,新建一个yml文件,文件名为test_suite_login.yml

引用testcase

引用参数:${P(路径)}

config:
    name: testcase description
testcases:
    nametest type suites:
        testcase: test_httprunner\\testcases\\test_case_login.yml
        parameters:
            account-password: ${P(test_httprunner/data/test_data_login)}

方式三:使用辅助函数debugtalk参数化

创建一个debugtalk.py文件

定义一个方法,放参数----嵌套字典的列表

def get_user_login():
    user_info = [
        {"account": "1782683xxxx", "password": "69f600a1be1d7aa6318ea5b274c09ae6"},
        {"account": "1111", "password": "69f600a1be1d7aa6318ea5b274c09ae6"},
        {"account": "1782683xxxx", "password": "123752324"}
    ]
    return user_info

在testsuites文件下,新建一个yml文件,文件名为test_suite_login.yml

引用testcase

引用参数:${方法}

config:
    name: testcase description
testcases:
    nametest type suites:
        testcase: testcases\\test_case_login.yml
        parameters:
            account-password: ${get_user_login()}

以上是关于httprunner2.5.7参数化三种方式的主要内容,如果未能解决你的问题,请参考以下文章

如何用unity实现全屏/全屏窗口化/窗口化三种模式的切换

Spring的bean管理(XML方式)

第二章

Spring入门到进阶 - Spring Bean管理 XML方式

springmvc参数类型转换三种方式

struts2简单入门-参数传递的三种方式