现状

工具开发&维护 ——————-> 开发成本高

编写录⼊测试⽤例 ——————-> 执行烦琐费事效率低

测试⽤例管理理维护 ——————-> 不易维护

httprunner

优点1:业务导向,快速落地,提高投入传比

  • 编写用例效率高、运行效率高、稳定性高
  • 能实现自动化回归测试
  • 性能测试脚本复用
  • 辅助手工测试,能自定义生成特定业务数据

    优点2:

  • 充分复用优秀的开源项目

  • 面向 HTTP(S) 协议的通用测试框架
  • 高度可扩展性
  • 只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试 性能测试 线上监控 持续集成等多种测试需求。

  • 追求投入产出比,一份投入即可实现多种测试需求

  • 重客户端、轻服务端设计

特性及原理

  • 使用python的requests
  1. 底层使用pythonrequests,支持API接口的多种请求方法,包括 GET/POST/HEAD/PUT/DELETE 等,yml/
  2. json文件描述了接口请求的信息(包括headermethodurl等参数),测试用例加载引擎中可以实现将业务测试
  3. 用例转换为标准的测试用例数据结构,包括接口请求信息和预期接口响应信息,然后构造并发起HTTP请求,再将HTTP
  4. 请求的响应结果与预期结果进行对比判断即可
  • 热加载的机制
  1. debugtalk.py(与pytest中的confest.py用法一样),实现模块自动发现和热加载的机制。具体地,只要是在文
  2. 件目录存在目标文件,里面定义的函数都会在用例运行过程中被导入,并可被测试用例进行调用。同时,目标文件存在
  3. 优先级策略,从测试用例所在目录到系统根目录的整个路径中,越靠近测试用例的目标文件,优先级越高。我们可以利
  4. 用这个优先级原则来组织用例和依赖的Python函数模块。例如,我们可以将不同模块的测试用例集文件放在不同的文
  5. 件夹下:针对各个模块独有的依赖函数和变量,可以放置在对应文件夹的debugtalk.py文件中;而整个项目公共的
  6. 函数和变量,就可以放置到项目文件夹的debugtalk.py中。
  • hook机制
  1. httprunner可以在单个测试用例和整个测试用例集的前后实现 hook 函数(与unittestsetupteardown
  2. 用法一样)。
  • 测试用例与代码分离
  1. 测试用例可以只关注对业务逻辑测试场景的描述。如果接口请求参数中要包含当前的时间戳,yaml用例中没法直接描
  2. 述这个参数,如果是采用Python脚本来编写测试用例还好解决,只需要通过Python函数实现即可。但是现在测试用
  3. 例和框架代码分离了,没法在YAML里面执行Python函数,这该怎么办呢?httprunner定义了${}转义符,在测试用
  4. 例执行引擎进行适配实现,提取出${}中的字符串,通过eval计算得到表达式的值
  • 参数化驱动

  • 分层机制


测试用例分层机制的核心是将接口定义(api)、测试用例(testcase)、测试用例集(testsuite)进行分离,单独
进行描述和维护,从而尽可能地减少自动化测试用例的维护成本。为了更好地对接口描述进行管理,推荐使用独立的文
件对接口描述进行存储,即每个文件对应一个接口描述。

在测试步骤(teststep)中,可通过 api 字段引用接口定义,在测试用例的测试步骤中。除了可以引用接口定义,
还可以引用其它测试用例。通过这种方式,可以在避免重复描述的同时,解决测试用例的依赖关系,从而保证每个测
试用例都是独立可运行的测试用例集(testsuite)是测试用例的无序集合,集合中的测试用例应该都是相互独立
,不存在先后依赖关系的;如果确实存在先后依赖关系,那就需要在测试用例中完成依赖的处理。
  • 测试结果统计报告简洁清晰,附带详尽日志记录,包括接口请求耗时、请求响应数据等

  • 身兼多职,同时实现接口管理、接口自动化测试、接口性能测试(结合Locust)

  • 具有可扩展性,便于扩展实现Web平台化

image.png

image.png

image.png