美文网首页百人计划自动化测试
【接口/性能】HttpRunner02-用例分层

【接口/性能】HttpRunner02-用例分层

作者: JOooo_ | 来源:发表于2018-02-08 15:01 被阅读100次

1. HttpRunner安装

pip install httprunner

可在git上下载源码:https://github.com/HttpRunner/HttpRunner

2. 背景

在HttpRunner中,测试用例引擎最大的特色就是支持YAML/JSON格式的用例描述形式。

不过,问题在于,接口通常会出现在多个测试场景中,而每次都需要对接口进行定义描述,包括请求的URL、Header、Body、以及预期响应值等,这就会产生大量的重复。

3. 接口-模块-场景分层

httprunner中实现了接口-模块-场景分层。通过startproject命令创建项目,可以看到以下目录。


$ hrun --startproject OWInterfacesV2

INFO:root: Start to create new project: D:\python\OWInterfacesV2

INFO:root:      created folder: D:\python\OWInterfacesV2

INFO:root:      created folder: D:\python\OWInterfacesV2\tests

INFO:root:      created folder: D:\python\OWInterfacesV2\tests\api

INFO:root:      created folder: D:\python\OWInterfacesV2\tests\suite

INFO:root:      created folder: D:\python\OWInterfacesV2\tests\testcases

INFO:root:      created file: D:\python\OWInterfacesV2\tests\debugtalk.py


tests

├── api

├── debugtalk.py

├── suite

└── testcases

在组织测试用例描述的文件目录结构时,遵循以下约定:

  • 将项目的所有API接口定义放置在api目录下,并在api目录中按照项目的系统模块来组织接口的定义。

备注:

---接口定义块的标识为api;

---接口定义块中包含def字段,形式为api_name(*args),作为接口的唯一标识ID;需要注意的是,即使api没有参数,也需要带上括号,api_name();这和编程语言中定义函数是一样的。

  • 约定将项目的所有模块定义放置在suite目录下,并在suite目录中按照项目的功能来组织模块的定义。相当于,多个api的组合。

  • 后续,在testcases目录中描述测试场景,可同时引用接口定义和模块定义。

  • 另外,相关的函数定义放置在debugtalk.py中

例如,典型的测试用例文件的目录结构如下所示: image.png

4. 结合项目实践

结合到公司项目中的测试用例,遇到的问题:

一个接口B(如login接口)依赖于前一接口A(如getToken接口)的输出结果(获取validate token),在编写B的各种用例时,每个用例都需调用一次A。

比如下图:

validate接口测试完后,可以extract出输出结果中的token($valtoken),在login_success用例中作为入参。 image.png 可是,如果新增一个login相关的用例,lgoin with unexist user,入参$valtoken是需要再次通过validate接口获取一次的。如果用以前的token将会返回invalid token的结果。 image.png 这时候不知道怎么再次获取token进行调用

解决方法:

因为很多接口的前提是先获取validate token或先登录,所以把get_validate_token的接口封装出来,放在debugtalk.py下。这样在测试用例中可以直接调用。 image.png

同时,也把一些由环境决定的参数提取出来(测试环境或生产环境)。

新增一个env.py文件,将环境的设置和一些公共不变的参数放在其中。如:test或prod环境,baseurl,headers等参数。

在debugtalk.py中添加方法:根据不同环境得到不同的变量,如:get_validate_token(), get_login_token(), login_email(), reg_email()等方法。

注意:

.yml中的测试用例是按顺序执行的。

比如:如果放置用例的顺序是login, logout, query。则在logout后,之前login获取的token就不能用了,到执行query时,用例会失败,提示invalidate token。

为了避免这种非被测内容本身引起的错误,需注意下用例的顺序。这里把logout放置在最后。

相关文章

  • 【接口/性能】HttpRunner02-用例分层

    1. HttpRunner安装 pip install httprunner 可在git上下载源码:https:/...

  • DDD结合整洁架构落地实践

    一、整洁架构分层 整洁架构分层如图所示,从内到外分别为实体->用例->接口适配器->框架与驱动程序。其中实体层和用...

  • 用例分层

    在自动化测试领域,自动化测试用例的可维护性是极其重要的因素,直接关系到自动化测试能否持续有效地在项目中开展。 概括...

  • Api_God实现的全部功能汇总

    接口自动化功能: 一、接口功能校验 根据用例校验条件颗粒度来检查接口的返回情况 二、接口性能统计 针对接口响应时间...

  • 接口测试用例设计(转载)

    导语 随着测试分析和分层测试的深化,“接口测试”出现在我们视野的频次越来越高。那么接口测的用例设计常用哪些方法呢?...

  • 接口测试用例设计

    随着测试分析和分层测试的深化,“接口测试”出现在我们视野的频次越来越高。那么接口测的用例设计常用哪些方法呢?本文将...

  • 2018-02-08服务端测试

    文档链接 接口测试用例设计方式 1.功能用例设计 2.业务逻辑用例设计 3.异常处理的情况 4.性能和安全性方面 ...

  • 用单例模式优化本地存储

    1.用单例设计存储数据接口 1.1单例接口 1.2数据序列化接口 1.3数据反序列化接口 2.用单例接口隔离实现细...

  • python 装饰器常见用法

    跟踪调用 用例: 计时调用 用例: 单例 用例: 跟踪对象接口 用例: 管理函数和类 用例: 验证函数参数 用例:...

  • zzcase&接口自动化-质&效的探索

    背景 功能用例设计与接口用例设计,是独立存在的,功能用例主要是验证测试页面功能实现,接口用例主要是验证接口入参和出...

网友评论

    本文标题:【接口/性能】HttpRunner02-用例分层

    本文链接:https://www.haomeiwen.com/subject/mtsttftx.html