专栏首页从零开始学自动化测试httprunner 2.x学习7-参数化(引用外部csv数据)

httprunner 2.x学习7-参数化(引用外部csv数据)

前言

httprunner 参数化数据源指定支持三种方式:

  • 在 YAML/JSON 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况
  • 通过内置的 parameterize(可简写为P)函数引用 CSV 文件:该种方式需要准备 CSV 数据文件,适合数据量比较大的情况
  • 调用 debugtalk.py 中自定义的函数生成参数列表:该种方式最为灵活,可通过自定义 Python 函数实现任意场景的数据驱动机制,当需要动态生成参数列表时也需要选择该种方式

环境:httprunner==2.5.7

本篇讲解内置的 parameterize(可简写为P)函数引用 CSV 文件

独立参数

对于已有参数列表,并且数据量比较大的情况,比较适合的方式是将参数列表值存储在 CSV 数据文件中。

对于 CSV 数据文件,需要遵循如下几项约定的规则:

  • CSV 文件中的第一行必须为参数名称,从第二行开始为参数值,每个(组)值占一行;
  • 若同一个 CSV 文件中具有多个参数,则参数名称和数值的间隔符需实用英文逗号;
  • 在 YAML/JSON 文件引用 CSV 文件时,文件路径为基于项目根目录(debugtalk.py 所在路径)的相对路径。

例如,user_id 的参数取值范围为 1001~2000,那么我们就可以创建 user_id.csv,并且在文件中按照如下形式进行描述。

user_id
1001
1002
...
1999
2000

然后在 YAML/JSON 测试用例文件中,就可以通过内置的 parameterize(可简写为 P)函数引用 CSV 文件。

config:
    name: "demo"

testcases:
    testcase1_name:
        testcase: /path/to/testcase1
        parameters:
            user_id: ${P(data/user_id.csv)}

即 P 函数的参数(CSV 文件路径)是相对于项目根目录的相对路径。 当然,这里也可以使用 CSV 文件在系统中的绝对路径,不过这样的话在项目路径变动时就会出现问题,因此推荐使用相对路径的形式。

csv文件存放user数据

先准备测试数据,准备四组登录用的账号和密码,账号为test1,test2,test3,test4,密码统一设置为123456。

data/user_name.csv文件测试数据

user
test1
test2
test3
test4

testsuites/test_param_csv.yml 文件引用 data/user_name.csv 文件语法${P(user_name.csv)}

# testsuites/test_param_csv.yml
# 上海-悠悠,httprunner QQ交流群:1121184576
config:
    name: "test login parameters"

testcases:
   login-参数化:
        testcase: case/test_login.yml
        parameters:
            user: ${P(data/user_name.csv)}

csv存放user和psw数据

data/user_password.csv 文件测试数据

user,password
test1,123456
test2,123456
test3,123456
test4,123456

testsuites/test_param_csv.yml文件引用 data/user_password.csv 文件

# testsuites/test_param_csv.yml
# 上海-悠悠,httprunner QQ交流群:1121184576

config:
    name: "test login parameters"

testcases:
   login-参数化:
        testcase: case/test_login.yml
        parameters:
            user-password: ${P(data/user_password.csv)}

运行结果

cmd执行hrun testsuites/test_param_csv.yml

(venv_hrun) D:\soft\venu_hrun>hrun testsuites/test_param_csv.yml
INFO     HttpRunner version: 2.5.7
INFO     Start to run testcase: login-参参数数化化
login-setup
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 338.0 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.354s

OK
INFO     Start to run testcase: login-参参数数化化
login-setup
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 331.52 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.332s

OK
INFO     Start to run testcase: login-参参数数化化
login-setup
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 316.43 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.316s

OK
INFO     Start to run testcase: login-参参数数化化
login-setup
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 300.28 ms, response_length: 110 bytes

.

----------------------------------------------------------------------
Ran 1 test in 0.300s

OK
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\venu_hrun\reports\20200613T022146.605872.html

V1.x版本测试数据csv文件只能与测试用例文件放在同一目录,V2.x版本支持写对路径,以文件路径为基于项目根目录(debugtalk.py 所在路径)的相对路径。如:data/user_id.csv

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • httprunner学习6-参数化(引用外部csv数据)

    上一篇已经实现参数化,但是数据是放在.yml文件里面,当测试数据非常多的时候,我们希望把测试数据写到csv文件。 httprunner==1.5.8

    上海-悠悠
  • Selenium2+python自动化75-Chrome配置加载

    一、加载Chrome配置 chrome加载配置方法,只需改下面一个地方,username改成你电脑的名字(别用中文!!!) '--user-data-dir=...

    上海-悠悠
  • pytest文档14-函数传参和fixture传参数request

    为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数。 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其...

    上海-悠悠
  • 使用Java程序消费SAP Leonardo的机器学习API

    以sap leonardo作为关键字在微信上搜索,能搜到不少文章。但是我浏览了一下,好像没有发现有从具体编程角度上来介绍的。所以我就贡献一篇。

    Jerry Wang
  • OC绘制饼状图、柱状图和扇形图1. 绘制柱状图bar chart2. 绘制饼图Pie Chart3. 绘制进度条和进度扇形4. 神秘感增强器:IB_DESIGNABLE和IBInspectable5.

    stanbai
  • OpenAI提出能测试强化学习智能体适应性的新方法

    强化学习(RL)能通过奖励或惩罚使智能体实现目标,并将它们学习到的经验转移到新环境中。但强化学习存在众所周知的缺陷:由于数据科学家在它们接受训练的环境中对这个系...

    人工智能快报
  • Vertica 安装,建库,新建测试用户并授予权限,建表,入库

    需求:搭建Vertica数据库3节点的测试环境,建立测试用户,建表,测试数据入库。

    Alfred Zhao
  • Cypress系列(26)- 聚焦与失焦命令的详解

    https://www.cnblogs.com/poloyy/category/1768839.html

    小菠萝测试笔记
  • 为什么我建议你只字不差的阅读

    有个公司,由于所在区域 4G 信号覆盖不好,因此办公区 4G 信号时有时无,在确定原因后,公司发了公告,大概内容如下:

    AndroidTraveler
  • 基类View

    在 Class-based views 源码解析 #1 中我们从宏观层面讨论了 Django 类视图的类继承结构以及命名规律。接下来我们要深入各个具体的类视图,...

    追梦人物

扫码关注云+社区

领取腾讯云代金券