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

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

前言

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

独立参数

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

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

  • 文件需放置在与测试用例文件相同的目录中;
  • CSV 文件中的第一行必须为参数名称,从第二行开始为参数值,每个(组)值占一行;
  • 若同一个 CSV 文件中具有多个参数,则参数名称和数值的间隔符需实用英文逗号。

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

user_id
1001
1002
...
1999
2000

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

- config:
    parameters:
        - user_id: ${parameterize(user_id.csv)}
        - user_id: ${P(user_id.csv)}    # 简写方式

csv文件存放user数据

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

user_name.csv文件测试数据

user
test1
test2
test3
test4

user_name.csv文件和test_param_csv.yml文件放到同一目录,引用csv文件语法${P(user_name.csv)}

# 上海悠悠,QQ交流群:750815713
- config:
    name: logincase
    parameters:
        - user: ${P(user_name.csv)}    # 参数化
    variables:
        psw: 123456
- test:
    name: login case1
    request:
        url: http://127.0.0.1:8000/api/v1/login/
        method: POST
        headers:
            Content-Type: application/json
            User-Agent: python-requests/2.18.4
        json:
            username: $user
            password: $psw
    extract:
        - token: content.token         # 提取token
    validate:
        - eq: [status_code, 200]
        - eq: [headers.Content-Type, application/json]
        - eq: [content.msg, login success!]
        - eq: [content.code, 0]

csv存放user和psw数据

user_psw.csv文件测试数据

user,psw
test1,123456
test2,123456
test3,123456
test4,123456

test_param_csv_psw.yml文件和user_psw.csv测试数据放在同一目录下

# 上海悠悠,QQ交流群:750815713
- config:
    name: logincase
    parameters:
        - user-psw: ${P(user_psw.csv)} # 参数化
- test:
    name: login case1
    request:
        url: http://127.0.0.1:8000/api/v1/login/
        method: POST
        headers:
            Content-Type: application/json
            User-Agent: python-requests/2.18.4
        json:
            username: $user
            password: $psw
    extract:
        - token: content.token         # 提取token
    validate:
        - eq: [status_code, 200]
        - eq: [headers.Content-Type, application/json]
        - eq: [content.msg, login success!]
        - eq: [content.code, 0]

运行结果

cmd执行hrun test_param_csv_psw.yml

D:\soft\untitled>hrun test_param_csv_psw.yml
login case1
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 529.26 ms, response_length: 110 bytes
INFO     start to extract from response object.
INFO     start to validate.
.
login case1
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 428.52 ms, response_length: 110 bytes
INFO     start to extract from response object.
INFO     start to validate.
.
login case1
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 438.94 ms, response_length: 110 bytes
INFO     start to extract from response object.
INFO     start to validate.
.
login case1
INFO     POST http://127.0.0.1:8000/api/v1/login/
INFO     status_code: 200, response_time(ms): 350.67 ms, response_length: 110 bytes
INFO     start to extract from response object.
INFO     start to validate.
.

----------------------------------------------------------------------
Ran 4 tests in 1.766s

OK
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\untitled\reports\1569141027.html

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

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

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

原始发表时间:2019-09-27

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • httprunner学习5-参数化与数据驱动

    参数化是自动化测试离不开的话题,httprunner里面只要把上一篇声明变量学会了,参数化也就自然会了。 不同的地方在于声明变量时对应值只有一个,参数化是多个值...

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

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

    上海-悠悠
  • httprunner学习19-重复执行用例

    使用httprunner做接口测试过程中,在工作中会遇到这种场景,发现某个接口不稳定,想重复运行100次用例,甚至1000次,看成功率。

    上海-悠悠
  • 如何管理好IDC机房?(二) ----依靠技术还是管理

        在机房管理中有两个派别,管理派认为要依靠严格的管理,明确和细致的制度,来达到目的;而技术派则认为应通过不断的技术进步来推动管理,提高效率。

    力哥聊运维与云计算
  • JAVA中基本数据类型和引用数据类型特点

    特点: 一、从概念方面来说 基本数据类型:变量名指向具体的数值 引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值 二、从内存构建方面来说...

    小柒2012
  • 测一测你的linux基础能力合格吗?

    “努力,让日子更从容、更愉悦、更优雅一些。”——马哥 运维人员想要生活更从容、更愉悦、更优雅必须有更扎实的linux技术支撑才可以。 我们学了这么就的linux...

    小小科
  • 网站做外链跳转优化

    外链,顾名思义就是跳转到别的网站的链接。外链对于一个网站来说,其实是权重的流失,那么就需要对外链进行优化。

    SweetHunter
  • flask bootstrap内置宏(flask 56)

    宏 模板路径 说明 render_field() bootstrap/form.html 渲染一个WTForms表单字段 render_form...

    用户5760343
  • PageAdmin Cms自助建站系统生成百度SiteMap文件的方法

    PageAdmin Cms作为一款优秀的自助建站系统,在国内拥有不少的用户,之前在论坛里看到很多用户生成百度SiteMap文件都是通过安装插件来实现,但实际上通...

    用户4831957
  • 『中级篇』k8s的NodePort类型Service以及Label的简单实用(68)

    IT故事会

扫码关注云+社区

领取腾讯云代金券