基于文档http://cn.httprunner.org/advanced/data-driven/

场景一:用例集+独立参数+参数列表

1、原始用例文件savePatient_01.yml

-   config:
name: 患者管理-新增患者
request:
base_url: 'http://192.168.14.76:8080'
headers:
User-Agent: null
variables: []
- test:
name: /myinfo/pinyin4j/converterToFirstSpell
request:
method: GET
params:
detail: '{"body":{"synCode":"","content":{},"param":{"name":"施耐庵"},"code":{}},"header":{"v":"v_pc_1.0.3.24","doctorMainId":"ff80808162bc9a2f0162f1c2322627ab","clinicId":"8a9a9c745f9b87c3015fdcc1e36b4271","type":"4","imei":"661D-6DF1-B196-3DFE-DE7D-3A01-3AA1-471F","userToken":"20180803105231387f8ueqor"}}'
url: http://192.168.14.76:8080/myinfo/pinyin4j/converterToFirstSpell
validate:
- eq:
- status_code
- 200
- eq:
- headers.Content-Type
- text/html;charset=UTF-8

2、分析

需要参数化的数据,患者姓名name,如上红色加粗部分。

步骤

1、在config模块中,将需要参数化的数据name,配置为全局参数,并使用列表赋值。

parameters:
- name: ["杜甫", "曹雪芹", "施耐庵"]

2、在test请求中引用name的地方,使用参数替换${name}

params:
detail: '{"body":{"synCode":"","content":{},"param":{"name":"$name"},"code":{}},"header":{"v":"v_pc_1.0.3.24","doctorMainId":"ff80808162bc9a2f0162f1c2322627ab","clinicId":"8a9a9c745f9b87c3015fdcc1e36b4271","type":"4","imei":"661D-6DF1-B196-3DFE-DE7D-3A01-3AA1-471F","userToken":"20180803105231387f8ueqor"}}'
url: http://192.168.14.76:8080/myinfo/pinyin4j/converterToFirstSpell

3、断言中如有需要验证name的地方,也进行替换

validate:
- eq:
- status_code
- 200
- eq:
- content.body.code
- ""
- eq:
- content.body.param.name
- $name

全部代码实例:

 -   config:
name: 患者管理-新增患者
request:
base_url: 'http://192.168.14.76:8080'
headers:
User-Agent: null
variables: []
parameters:
- name: ["杜甫", "曹雪芹", "施耐庵"]
- test:
name: /myinfo/pinyin4j/converterToFirstSpell
request:
method: GET
params:
detail: '{"body":{"synCode":"","content":{},"param":{"name":"$name"},"code":{}},"header":{"v":"v_pc_1.0.3.24","doctorMainId":"ff80808162bc9a2f0162f1c2322627ab","clinicId":"8a9a9c745f9b87c3015fdcc1e36b4271","type":"4","imei":"661D-6DF1-B196-3DFE-DE7D-3A01-3AA1-471F","userToken":"20180803105231387f8ueqor"}}'
url: http://192.168.14.76:8080/myinfo/pinyin4j/converterToFirstSpell
validate:
- eq:
- status_code
- 200
- eq:
- content.body.code
- ""
- eq:
- content.body.param.name
- $name

4、运行代码,查看结果

场景二、用例集+关联参数+参数列表

1、找到需要参数化的信息

姓名-缩写-出生日期-性别

2、config中配置参数

parameters:
- userName-userShortName-birthday-sex:
- ["李白","LB","1988-09-09",1]
- ["白居易","BJY","1978-05-09",1]
- ["杜牧","DM","1998-03-09",1]

3、替换参数

request:
method: GET
params:
detail: '{"body":{"synCode":"","content":{},"param":{"id":"9cc01ecefb784f03bfcc5a87c3ad6a71","userName":"$userName","userShortName":"$userShortName","birthday":"$birthday","sex":$sex,"phone":"18911572511","isDelete":0,"illHistory":"","allergicHistory":"","address":"","homeAddress":"","base_version":"","totalArrears":"0","clinicId":"","doctorId":"","idCardNo":"","agency":"","folk":"","validitytime":"","fingerPrint":"0","deviceType":"0","diagnose":"","patientSource":""},"code":{}},"header":{"v":"v_pc_1.0.3.24","doctorMainId":"ff80808162bc9a2f0162f1c2322627ab","clinicId":"8a9a9c745f9b87c3015fdcc1e36b4271","type":"4","imei":"661D-6DF1-B196-3DFE-DE7D-3A01-3AA1-471F","userToken":"20180803105231387f8ueqor"}}'
url: http://192.168.14.76:8080/patient/clinicPatient/savePatientFromPad

4、优化断言

        validate:
- eq:
- status_code
- 200
- eq:
- content.body.code
- ""
- eq:
- content.body.param.userName
- $userName

完整代码

 -   config:
name: 患者管理-新增患者
parameters:
- userName-userShortName-birthday-sex:
- ["李白","LB","1988-09-09",1]
- ["白居易","BJY","1978-05-09",1]
- ["杜牧","DM","1998-03-09",1]
request:
base_url: 'http://192.168.14.76:8080'
headers:
User-Agent: null
variables: [] - test:
name: /patient/clinicPatient/savePatientFromPad
request:
method: GET
params:
detail: '{"body":{"synCode":"","content":{},"param":{"id":"9cc01ecefb784f03bfcc5a87c3ad6a71","userName":"$userName","userShortName":"$userShortName","birthday":"$birthday","sex":$sex,"phone":"18911572511","isDelete":0,"illHistory":"","allergicHistory":"","address":"","homeAddress":"","base_version":"","totalArrears":"0","clinicId":"","doctorId":"","idCardNo":"","agency":"","folk":"","validitytime":"","fingerPrint":"0","deviceType":"0","diagnose":"","patientSource":""},"code":{}},"header":{"v":"v_pc_1.0.3.24","doctorMainId":"ff80808162bc9a2f0162f1c2322627ab","clinicId":"8a9a9c745f9b87c3015fdcc1e36b4271","type":"4","imei":"661D-6DF1-B196-3DFE-DE7D-3A01-3AA1-471F","userToken":"20180803105231387f8ueqor"}}'
url: http://192.168.14.76:8080/patient/clinicPatient/savePatientFromPad
validate:
- eq:
- status_code
- 200
- eq:
- content.body.code
- ""
- eq:
- content.body.param.userName
- $userName

5、运行查看结果

场景三、用例集+关联参数+CSV文件

1、特别注意:

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

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

2、步骤

1)新建CSV文件,命名为patientInfo.csv,编码方式UTF-8

userName,userShortName,birthday,sex
莫言,MY,2011-01-09,1
吴佩慈,WPC,1996-09-08,2

2) 在config模块中,配置参数

parameters:
- userName-userShortName-birthday-sex: ${P(patientInfo.csv)}

3)在test模块中,替换参数

request:
method: GET
params:
detail: '{"body":{"synCode":"","content":{},"param":{"id":"9cc01ecefb784f03bfcc5a87c3ad6a71","userName":"$userName","userShortName":"$userShortName","birthday":"$birthday","sex":$sex,"phone":"18911572511","isDelete":0,"illHistory":"","allergicHistory":"","address":"","homeAddress":"","base_version":"","totalArrears":"0","clinicId":"","doctorId":"","idCardNo":"","agency":"","folk":"","validitytime":"","fingerPrint":"0","deviceType":"0","diagnose":"","patientSource":""},"code":{}},"header":{"v":"v_pc_1.0.3.24","doctorMainId":"ff80808162bc9a2f0162f1c2322627ab","clinicId":"8a9a9c745f9b87c3015fdcc1e36b4271","type":"4","imei":"661D-6DF1-B196-3DFE-DE7D-3A01-3AA1-471F","userToken":"20180803105231387f8ueqor"}}'
url: http://192.168.14.76:8080/patient/clinicPatient/savePatientFromPad

4)运行代码,查看结果

完整代码实例

-   config:
name: 患者管理-新增患者
parameters:
- userName-userShortName-birthday-sex: ${P(patientInfo.csv)} request:
base_url: 'http://192.168.14.76:8080'
headers:
User-Agent: null
variables: [] - test:
name: /patient/clinicPatient/savePatientFromPad
request:
method: GET
params:
detail: '{"body":{"synCode":"","content":{},"param":{"id":"9cc01ecefb784f03bfcc5a87c3ad6a71","userName":"$userName","userShortName":"$userShortName","birthday":"$birthday","sex":$sex,"phone":"18911572511","isDelete":0,"illHistory":"","allergicHistory":"","address":"","homeAddress":"","base_version":"","totalArrears":"0","clinicId":"","doctorId":"","idCardNo":"","agency":"","folk":"","validitytime":"","fingerPrint":"0","deviceType":"0","diagnose":"","patientSource":""},"code":{}},"header":{"v":"v_pc_1.0.3.24","doctorMainId":"ff80808162bc9a2f0162f1c2322627ab","clinicId":"8a9a9c745f9b87c3015fdcc1e36b4271","type":"4","imei":"661D-6DF1-B196-3DFE-DE7D-3A01-3AA1-471F","userToken":"20180803105231387f8ueqor"}}'
url: http://192.168.14.76:8080/patient/clinicPatient/savePatientFromPad
validate:
- eq:
- status_code
- 200
- eq:
- content.body.code
- ""
- eq:
- content.body.param.userName
- $userName

场景四、用例+关联参数+CSV文件

将场景三中,config中的参数配置,移到到test模块即可

场景五、用例集+关联参数+自定义函数生成列表

特别注意:需要注意的是,在自定义函数中,生成的参数列表必须为 list of dict 的数据结构,该设计主要是为了与 CSV 文件的处理机制保持一致。

1、在 debugtalk.py 中定义函数 get_patient_info,可生成指定数量的参数列表。

def get_patient_info(num):
patients = []
for index in range(1, num+1):
patients.append(
{"userName": gen_random_name(), "sex": gen_random_sex(),"birthday":gen_random_date()},
) return patients

其中:gen_random_name()、gen_random_sex()、gen_random_date()是上面定义的方法

那么在 YAML/JSON 的 parameters 中就可以调用自定义函数生成指定数量的参数列表。

        parameters:
- userName-sex-birthday-sex: ${get_patient_info(3)}
 
												

HTTPRunner实践二——数据驱动的更多相关文章

  1. HTTPRunner实践二——参数化之生成UUID

    接口测试中,需要使用到UUID,用来生成唯一ID. 1.什么是UUID UUID是128位的全局唯一标识符,通常由32字节的字符串表示.它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID ...

  2. ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

    本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...

  3. ASP.NET MVC5 网站开发实践(二) Member区域–我的咨询列表及添加咨询

    上次把咨询的架构搭好了,现在分两次来完成咨询:1.用户部分,2管理部分.这次实现用户部分,包含两个功能,查看我的咨询和进行咨询. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NE ...

  4. ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构

    咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...

  5. ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章

    上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据.   目录: ASP.N ...

  6. ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表

    显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据   目录 ASP.N ...

  7. ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章

    上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...

  8. ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理架构

    上次把member的用户部分完成,现在开始做文章管理部分.文章部分根据涉及显示现实文章列表,发布文章,修改文章,删除文章等功能.最终的实现目标是使用权限来控制用户是否能进行相应操作,管理员权限的会显示 ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(3)修改资料、修改密码

    在上一篇博客中实现了用户的注销和登录,其实代码里落了点东西,就是用户登录要更新最后一次登录时间和登录IP,这次补上.今天做修改资料和修改密码,TryUpdateModel是新用到的东西. 目录: AS ...

随机推荐

  1. 20145239杜文超 《Java程序设计》第1周学习总结

    20145239<Java程序设计>第1周学习总结 教材学习内容总结 第一周. 通过教材简单的了解了java的历史.因为之前看过视频,所以有一个大致明了的认识. 识记了Java三大平台:J ...

  2. 修改织梦DedeCms文章页默认title的方法

    <title>{dede:field.title/}_{dede:field name='typeid' runphp='yes'}$id=@me;global $dsql;$sql=&q ...

  3. BZOJ 3410 [Usaco2009 Dec]Selfish Grazing 自私的食草者:贪心【最多线段覆盖】

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1324 题意: 给你n个区间,问你最多能选择多少个区间使得它们不相互覆盖. 题解: RQ ...

  4. 一次php脚本出现段错误(Segment fault)的经历

    今天在一台新服务器上cli运行一个php脚本,出现了Segment fault错误,第一感觉应该是某个扩展安装有问题 这段php代码是调用soap接口,查看soap扩展没啥问题,一时不知道是啥原因. ...

  5. python练习1(简单爬虫)

    做一个简单的练习 目标:爬取中文小说 目标网站:http://www.biqule.com/book_58/26986.html 只爬取正文部分. 使用requests库来获取网页信息,使用re库正则 ...

  6. laravel 5.4 运行 make:auth 报错

    Laravel 5.4 migrate时报错: Specified key was too long error 问题根源 MySQL支持的utf8编码最大字符长度为3字节,如果遇到4字节的宽字符就会 ...

  7. BZOJ_3935_Rbtree

    https://lydsy.com/JudgeOnline/problem.php?id=3935 分析: 如果知道更改后的状态,那么代价和是否合法都能求出来 对不合法的情况也设一个估价函数. 随机这 ...

  8. 京东ie6中轮播模块小图出现在大图上

    请大家给个评论,给个支持!呵呵 本人最新一套模版小清新童装母婴日韩风全屏轮播(上线风暴),在审核时审核失败,报的是“ie6中全屏海报轮播是小图出现在大图中间的兼容性错误” 而本人本机出现的是小图基本上 ...

  9. HDU3991:Black and White

    浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:http://acm.hdu.edu.cn/showproblem.php? ...

  10. BZOJ2467五角形生成树——数学

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2467 可以得出只需在每个五角形中去掉任意一条边,在某个五角形中去掉包括内边的两条边即可. 代码 ...