HttpRunner3使用过程中遇到的问题归总

此贴是为了记录本人在使用HttpRunner过程中遇到的问题以及如何解决。顺便做个记录。

因为没时间去看视频,只能看着CSDN各种教程去使用HttpRunner框架了,过程中各种曲折,遇到了各种各样的问题。建议大家可以先看完课程里的视频再去使用这个框架,起码会比我少遇到一些问题。

此贴会持续更新

当前使用版本:HttpRunner3.1.4

问题:敲 httprunner --version 的时候,报一下错误

ImportError: cannot import name ‘soft_unicode’ from ‘markupsafe’ (D:\Anaconda\envs\vt_api_test\lib\site-packages\markupsafe_init_.py)

明明装了 markupsafe 这个模块了。为什么还会报错呢?

(vt_api_test) E:\code\vt_api_frame>pip install markupsafe
Requirement already satisfied: markupsafe in d:\anaconda\envs\vt_api_test\lib\site-packages (2.1.1)

当前这个markupsafe包的版本是2.1.1版本。

解决方法:尝试下指定版本安装一下。比如安装低版本试试。

比如:pip install markupsafe==2.0.1


问题一:参数化入参和返回值的数据类型不同问题。

读取CSV文件,参数化入参 → str 类型

但是接口返回值 → int 类型

使用 -eq 是一直失败的。因为strint类型比较就是错误了。只能直接将比较关键字- eq 改为- str_eq

修改前:断言错误。返回值是int类型。期待值是str类型。

assert status_code equal 200(str)	==> fail
check_item: status_code
check_value: 200(int)
assert_method: equal
expect_value: 200(str)

assert body.code equal 0(str)	==> fail
check_item: body.code
check_value: 0(int)
assert_method: equal
expect_value: 0(str)

assert body.msg equal ok(str)	==> pass

assert body.data.brs.data.baseBookId equal 173071(str)	==> fail
check_item: body.data.brs.data.baseBookId
check_value: 173071(int)
assert_method: equal
expect_value: 173071(str)

assert body.data.brs.data.page.bookId equal 305408(str)	==> fail
check_item: body.data.brs.data.page.bookId
check_value: 305408(int)
assert_method: equal
expect_value: 305408(str)

修改后:统一转为str再比较。

assert status_code string_equals 200(str)	==> pass
assert body.code string_equals 0(str)	==> pass
assert body.msg equal ok(str)	==> pass
assert body.data.brs.data.baseBookId string_equals 173071(str)	==> pass
assert body.data.brs.data.page.bookId string_equals 305408(str)	==> pass

问题二:如何将上个登录接口的返回token,传给下个接口当做请求参数?

config:
    name: FSL Login - Get token
    variables:
        license: ${ENV(FSLLcs)}
        appCode: ${ENV(FSLappCode)}
    base_url: ${ENV(dev_client_url)}
    # 一般在提取变量后,需在 config 中 export 导出变量。导出变量的目的是,使他变成全局变量,
    # 方便后面步骤调用(在一个yml用例引用另外一个yml用例的时候用得到)
    export:     
      - token

teststeps:
-
    name: step1 login - get token
    request:
        method: GET
        url: /api-client/login/license
        params:
            license: $license
            appCode: $appCode
    extract:  # 提取变量
        - token: body.data.token
        - openId: body.data.openId
    validate:
      - eq: ["status_code", 200]
      - eq: ["body.code", 0]
      - eq: ["body.msg", ok]
      - eq: ["body.data.expire", 5400]


问题三:生成的log文件,里面中文显示乱码问题。

当前HttpRunner版本为 3.1.4

修改一下httprunner源码。给日志器添加encoding

在pychamr里按ctrl+shift+R然后输入logger.add找到对应的函数,在函数里添加上encoding="utf-8"即可。

image

赞!!!