其他分享
首页 > 其他分享> > httprunner实操

httprunner实操

作者:互联网

httprunner使用第二弹

一、内部变量解析

二、测试用例-config

image

三、测试用例-teststeps-RunRequest

四、测试用例-teststeps-RunTestCase

五、用例引用、变量传递

https://www.cnblogs.com/may18/category/1810026.html

踩过的坑。

传参实操:

1.当前请求使用变量

在Config()之后使用.variables(**{"变量名称":"变量值",})的格式设置变量

或者在用例内部RunRequest() 之后,使用.with_variables(**{"变量名称":"变量值", } )的格式设置变量。

重点:变量名称必须全部小写。

  1. 2引用:使用时以 引用名称:"$变量名称" 的格式直接引用接口

2.提取响应值为下一个请求的参数

2.1首先要在全局变量config 中,设置.export(*["token"])这个全局变量

2.2在断言之前,使用以下代码,提取token的值赋值给"token"这个全局变量。

.extract()
.with_jmespath("body.data.token", "token")

2.2在同一个testcase中,登录之后的的接口,都可通过引用的方式,直接使用token。

六、实操演练


#### 在同一个文件中==变量传递实操演练——代码详情


from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase


class TestCaseOlnyLogin(HttpRunner):

    config = (
        Config("登录")
        .variables(
            **{
                "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36",
                "type": "application/json;charset=UTF-8",   # 定义全局变量
            }
        )
        .base_url("http://172.16.1.100:8083")
        .verify(False)
        .export(*["token"])    # 此处定义要导出的token
              )

    teststeps = [
        Step(
            RunRequest("登录接口")
                .post("/v1/api/login")

                .with_headers(
                **{
                    "Authorization": "Bearer null",
                    "User-Agent": "$agent",
                    "Content-Type": "$type",
                }
            )
                .with_json(
                {
                    "username": "zhangsan",
                    "password": "YWJjMTIzIUAj",
                    "image_code_id": "c2c28c83-3d8f-4d7c-b62e-1cc93c73322b",
                    "image_code": "uqh5",
                }
            )
                .extract()    # 提取响应值
                .with_jmespath("body.data.token", "token")   # 提取token值,赋值给全局变量
                .validate()
                .assert_equal("body.data.username", "zhangsan")
        ),
        Step(
            RunRequest("条件查询:水利场景")
            .get("/v1/organizer/question/ctflist")
            .with_params(
                **{
                    "page": "1",
                    "pageSize": "10",
                    "keyword": "水利发电场景",
                    "_t": "1647930450442",
                }
            )
            .with_headers(
                **{
                    "Authorization": "Bearer "+"$token",  # 使用全局变量token
                    "User-Agent": "$agent",
                }
            )
            .validate()
            .assert_equal("status_code", 200)
            .assert_equal('headers."Content-Type"', "application/json")
            .assert_equal("body.code", 200)
        ),
    ]


if __name__ == "__main__":
    TestCaseOlnyLogin().test_start()
### 在不同文件中==变量传递实操演练——代码详情之 被提取者

from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase


class TestCaseOlnyLogin(HttpRunner):

    config = (
        Config("登录")
        .variables()
        .base_url("http://172.16.1.100:8083")
        .verify(False)
        .export(*["token"])                # 此处定义要导出的token(等待下一个接口调用)
              )

    teststeps = [
        Step(
            RunRequest("登录接口")
            .post("/v1/api/login")
            .with_headers(
                **{
                    "Authorization": "Bearer null",
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36",
                }
            )
            .with_json(
                {
                    "username": "zhangsan",
                    "password": "YWJjMTIzIUAj",
                    "image_code_id": "c2c28c83-3d8f-4d7c-b62e-1cc93c73322b",
                    "image_code": "uqh5",
                }
            )
            .extract()  # 提取响应值
            .with_jmespath("body.data.token", "token")           # 提取token值,赋值给全局变量
            .validate()
            .assert_equal("body.data.username", "zhangsan")
        ),

    ]


if __name__ == "__main__":
    TestCaseOlnyLogin().test_start()
### 在不同文件中==变量传递实操演练——代码详情之 提取者

import sys

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
print(sys.path)                    # 把根目录放入系统路径,方便包与包之间传递数据



from test_login.api.olny_login_test import TestCaseOlnyLogin

from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase   # 要导入你需要调取变量所属的类

class TestCaseHome(HttpRunner):

    config =(
        Config("首页数据")
        .variables()
        .base_url("http://172.16.1.100:8083")
        .verify(False)
    )


    teststeps = [
        Step(
            RunTestCase("获取首页数据_引用token")       # 如果需要使用其它文件的变量,需要单独设置一个步骤来获取(RunTestCase)
            .with_variables()
            .call(TestCaseOlnyLogin)                 # 使用call 引入 已经导过包的 有所需变量的类
            .export(*["token"])                      # 将类里需要提取的变量导出
        ),
        Step(
            RunRequest("获取首页数据_引用token")
                .post("/v1/organizer/home")
                .with_headers(
                **{
                    "Authorization": "Bearer "+"$token",  # 使用已经提取的变量
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36",
                }
            )
                .with_data("")
                .validate()
                .assert_equal("status_code", 200)
                .assert_equal('headers."Content-Type"', "application/json")
                .assert_equal("body.code", 200)
        ),

    ]


if __name__ == "__main__":
    TestCaseHome().test_start()

完结。

标签:__,httprunner,变量,RunRequest,token,Step,测试用例,实操
来源: https://www.cnblogs.com/nidakingdom/p/16056125.html