HttpRunner学习记录(二)

跟着案例敲,随意记录记录啦~
新手上路,若笔记有问题,还请诸位大佬不吝赐教~

准备说明

1、我用的是fiddler(Charles也差不多),选中我要练习的接口,点击file里面的导出选中,格式选择HTTPArchive v1.2;导出来的har格式,用har2case login.har转成json格式,或者用har2case login.har -2转成yaml格式。然后就开始可劲造吧~

2、用httprunner自动生成脚手架(hrun --startproject demo),在这个基础上增删

3、我用yaml格式练习,之前没有接触过yaml,姑且先用着学着吧~

执行用例

1、把login.yaml放到testcases下,在命令行(把位置切到demo下)中输入hrun ./testcases/login.yaml会在当前目录下的report里面生成报告(在哪里执行命令在哪里建个文件夹report(有的话就不新建),这里要注意执行位置)

2、hrun 命令里面还能(这里列的是我目前认为会经常用到的,其他的还有具体用法什么的就 hrun -h 看吧):

  • 指定log等级:info(默认)、debug
  • 指定log保存路径
  • 指定report模板路径
  • 指定report生成路径
  • 设定失败即停止执行
  • 保存过程数据

代码微调优

1、变量声明的关键字是:variables
variable使用
2、参数化关键字是:extract
extract使用
3、后续变量引用:$ + 变量名称
变量引用
4、方法一般放在debugtalk.py下,这个名字不能修改(准确说是我还不会修改);
自定义方法
方法引用
5、yaml的嵌套使用正在研究中,当前我所了解到的嵌套一般处于:
testsuits嵌套testcases,testcases嵌套testcases、或者api(这里我指的是httprunner脚手架中的文件夹名字)

config:
    name: testsuite description
    testcases:
        testcase1_name:
            testcase: /path/to/testcase1
        testcase2_name:
            testcase: /path/to/testcase2

HttpRunner的数据驱动小小的探究了一下,继续记录~ ~

参数配置案例

在testsuites下面的的loginsuit.yaml

config:
    name: login testsuites

testcases:
    login:
        testcase: ../testcases/login.yaml
        parameters:
        # 指定单个参数
            username: ['13812345678','13912345678']
        # 两个关联参数
            username-password:
            -   ['13812345678','e10adc3949ba59abbe56e057f20f883e']
            -   ['13912345678','e10adc3949ba59abbe56e057f20f883e']
        # csv 单个参数
            username: ${P(../data/user.csv)}
        # csv 两个关联参数
             username-password: ${P(../data/user-pwd.csv)}
        # 函数获取两个关联参数
             username-password: ${get_user_pwd(2)}
  1. 相对路径:../ 表示上一级,避免使用绝对路径,尽量使用相对路径。
  2. 有对应关系的参数把-放在参数间
  3. 在 YAML/JSON 测试用例文件中,通过内置的 parameterize(可简写为 P)函数引用 CSV 文件 ${P(../data/user-pwd.csv)}
  4. 除了以上两种方法外,还可以使用自定义函数,但要注意:在自定义函数中,生成的参数列表必须为 list of dict 的数据结构,该设计主要是为了与 CSV 文件的处理机制保持一致。
    示例如下:
# 指定单个函数
def get_user():
    return [
        {"username": 13812345678},
        {"username": 13812345679}
    ]
# 两个关联参数
def get_user_pwd(num):
user_pwd = []
for index in range(1, num+1):
    user_pwd.append(
        {"username": "1381234567%s" % index, "password": 'e10adc3949ba59abbe56e057f20f883e'},
    )
return user_pwd

另:如果parameters中的参数有多个(比如:3个参数),每个参数都对应多个值(比如:三个参数分别对应2个值、3个值、4个值),最后用例执行个数为他们的笛卡尔积(即:234=24个)

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页