HttpRunner学习7--引用CSV文件数据
前言
在之前的文章中,我们已经学习了 parameters 参数化,是在测试脚本中直接指定参数列表。这种方法简单易用,但如果我们的参数列表数据比较多,这种方法可能就不太适合了。
当数据量比较大的时候,我们希望可以把测试数据写到 CSV 文件中,然后直接引用 CSV 文件数据。
本人环境:HttpRunner V1.5.8
测试场景
我们继续以之前的登录接口来学习,如果直接在 YAML/JSON 脚本中指定参数列表内容,那么我们的用例可能就是这样的:
- config:
name: parameters test
request:
base_url: http://api.nnzhp.cn
parameters:
- username-passwd:
- ["niuhanyang", "aA123456"]
- ["test10101", "fasdfasfa"]
- ["test1010", "aA123456"]
- test:
name: login case
request:
url: /api/user/login
method: POST
headers:
Content-Type: application/x-www-form-urlencoded
User-Agent: Fiddler
data:
username: $username
passwd: $passwd
validate:
- eq: [status_code, 200]
- eq: [content.error_code, 0]
上面的用例,只有 3 组测试数据,当我们有10、100组测试数据,如果直接写在测试脚本中,可能会很不方便。我们可以把这些测试数据都写到CSV文件,然后直接引用CSV文件,这样就方便多了,我们的脚本也显得更加简洁。
CSV中存放单个参数
对于 CSV 数据文件,需要遵循如下几项约定的规则:
- 文件需放置在与测试用例文件相同的目录中;
- CSV 文件中的第一行必须为参数名称,从第二行开始为参数值,每个(组)值占一行;
- 若同一个 CSV 文件中具有多个参数,则参数名称和数值的间隔符需实用英文逗号。
比如,我们有多组登录的数据,用户名都不一样,但密码都是一样的,我们就可以创建 username.csv,并把 用户名 这一参数写到 username.csv 中,如下:
username
niuhanyang
test10101
test1010
然后在 YAML/JSON 测试用例中,就可以通过 HttpRunner 内置的 parameterize(可简写为P)函数引用 CSV 文件。
parameters:
- username: ${P(username.csv)} # 或者 ${parameterize(username.csv)}
- passwd: ["aA123456"]
注意:HttpRunner中,在 parameters 中指定的参数名称必须与 CSV 文件中第一行的参数名称一致。
CSV中存放多个参数
对于具有关联性的多个参数,比如,我们有多组登录的数据,用户名和密码都不一样,那么我们可以创建 user.csv ,并把用户名和密码的参数写到 user.csv 中,如下:
username,passwd
niuhanyang,aA123456
test10101,fasdfasfa
test1010,aA123456
再修改一下 YAML 脚本:
parameters:
- username-passwd: ${P(user.csv)} # 或者 ${parameterize(user.csv)}
注意:上面的写法是用户名密码一对一的关系,如果是按下面这样写,那就会是笛卡尔积组合的情况,产生 3 * 3 = 9 种组合。
parameters:
- username: ${P(user.csv)}
- passwd: ${P(user.csv)}
另外,在测试脚本中指定参数时,可以只使用部分参数,并且参数顺序无需与 CSV 文件中参数名称的顺序一致。
运行用例
完整的YAML格式用例(test_csv.yml):
- config:
name: parameters test
request:
base_url: http://api.nnzhp.cn
parameters:
- username-passwd: ${P(user.csv)} # 或者 ${parameterize(user.csv)}
- test:
name: login case
request:
url: /api/user/login
method: POST
headers:
Content-Type: application/x-www-form-urlencoded
User-Agent: Fiddler
data:
username: $username
passwd: $passwd
validate:
- eq: [status_code, 200]
- eq: [content.error_code, 0]
在HttpRunner 1.x版本中,引用 CSV 数据文件(如 user.csv),需要将 user.csv 和 test_csv.yml 放在同一目录下,然后在运行用例即可。运行用例后的报告如下:
HttpRunner学习7--引用CSV文件数据的更多相关文章
- jmeter参数化、添加变量、生成随机数和导入csv文件数据
Remarks:本次使用jmeter版本为4.0 以下数据都在必应中演示: 添加普通变量 1.添加 User Defined Variables(用户自定义变量) 2.设置变量 3.使用变量 4.查看 ...
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...
- java读取目录下所有csv文件数据,存入三维数组并返回
package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ...
- java 两个csv文件数据去重
1.pom.xml配置 <dependency> <groupId>commons-io</groupId> <artifactId>commons-i ...
- C#使用Linq to csv读取.csv文件数据
前言:今日遇到了一个需要读取CSV文件类型的EXCEL文档数据的问题,原本使用NPOI的解决方案直接读取文档数据,最后失败了,主要是文件的类型版本等信息不兼容导致.其他同事有使用linq to csv ...
- C语言进行csv文件数据的读取
C语言进行csv文件数据的读取: #include <stdio.h> #include <string.h> #include <malloc.h> #inclu ...
- java调用sqlldr导入csv文件数据到临时表
package cn.com.file;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File; ...
- 别动我的奶酪:CSV文件数据丢零现象及对策
CSV文件在读入EXCEL时,对于前面有零的数据项,比如电话号码,会自作聪明地丢掉那个零. 比如,我有一个北京客户,其号码为01059178888,如果这是通过CSV文件来的数据,在EXCEL中打开时 ...
- python学习之读写csv文件(使用pandas)
简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序 ...
随机推荐
- 扛把子组20191121-10 Scrum立会报告+燃尽图 06
此作业的要求参见http://edu.cnblogs.com/campus/nenu/2019fall/homework/10070 一.小组情况: 队名:扛把子 组长:孙晓宇 组员:刘信鹏 韩昊 宋 ...
- windows系统与SQL SERVER 2008数据库服务性能监控分析简要
软件系统性能测试体系流程介绍之windows系统与SQL SERVER 2008数据库服务性能监控分析简要 目前大部分测试人员对操作系统资源.中间件.数据库等性能监控分析都是各自分析各自的监控指标方式 ...
- 1 JAVA语言的特点
1.可移植性 通过先将java文件编译成字节码,再由特定平台的JVM转义为机器码,使得JAVA语言具有,编写一次,到处执行的特点.可移植性好. 2.面向对象的编程 面向对象编程的良好实现.有良好的面向 ...
- 使用aop加解密http接口
背景 最近在写一个小程序接口,由于安全性比较高,因此需要给请求参数和响应进行加密处理.如果在每个方法上都加密解密,那样代码就显得太繁琐了而且工作量会加大.所以,我们会统一进行加解密处理,一种比较传统的 ...
- linux 系统自动定制运行 crontab
在UNIX下怎样实现和Windows下“计划任务”一样的功能 $crontab -e 编辑脚本 $crontab -l 察看脚本 用$crontab -e 编辑脚本,加入下列行 :分 小时 星期 ...
- MATLAB工具包——curvelet变换的理解(转)
curvelet下载的curvelet工具包,有以下三个文件:fdct_usfft_matlab.fdct_wrapping_matlab.mecv三个文件夹添加到matlab路径中即可. curve ...
- postman+newman+html测试报告(接口自动化)
1.安装node.js(Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境) 下载安装node.js,下载地址:https://nodejs.org/en/ 2.安 ...
- C# 设置、删除、读取Word文档背景——基于Spire.Cloud.Word
Spire.Cloud.Word.Sdk提供了接口SetBackgroudColor().SetBackgroudImage().DeleteBackground().GetBackgroudColo ...
- UITableView 相关方法
最近闲来无事,总结一下 UITableViewDataSource和 UITableViewDelegate方法 UITableViewDataSource @required - (NSIntege ...
- AtCoder-3867
Find the maximum possible sum of the digits (in base 10) of a positive integer not greater than N. C ...