【简介】

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

 

【优缺点】

优点:基于YAML/JSON格式,专注于接口本身的编写,   写法简单,可生成测试报告, 支持抓包录制, 支持python扩展、可做接口自动化, 方便搭建接口框架;

缺点:属领域特定语言,官方文档不直白详细,没有编辑器插件对语法校验,编写易出错;

【结论】

可以考虑用来做接口测试,但是语法校验需要单独处理。

 

httprunnerManage地址:  https://github.com/HttpRunner/HttpRunnerManager

mockserver地址:https://github.com/yinquanwang/MockServer

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【使用教程】:

1、安装

pip install httprunner

注:我安装的是python3.6     httprunner  1.5.8 

验证:hrun -V

 

2、运行命令

运行测试用例的命令为hrun

运行全部用例:hrun testcase

运行单个用例:hrun  c:/xx/xx/xx/xx.json

运行多个用例:hrun  c:/xx/xx/xx/xx.json c:/xx/xx/xx/xx.json 

运行失败后停止执行:hrun testcase --failfast

重复运行某个case: 在test下添加times参数,对应的times值为需要重复运行的次数

跳过某个case运行:研用unittest框架中的skip(无条件跳过)、skipIf(条件为真的时候跳过)、skipUnless(条件为假的时候跳过),关键字加在test中

 

3、生成脚手架

hrun --startproject test_mysite

创建一个名为test_mysite的目录,目录下结构如图:

httprunner做接口自动化和性能测试

 

 -------------------------------------------

说明:                                          

api目录下为接口的详细信息        

reports目录下为生成的报告         

testcases目录下为测试用例        

testsuites为测试套件     

新建debugtalk.py文件用于编写函数辅助测试            

--------------------------------------------

4、结构说明

httprunner做接口自动化和性能测试

5、参数关联

httprunner做接口自动化和性能测试

 

6、变量的声明和引用

【在config中定义的variables为全局变量,在test中定义的variables为局部变量,仅供当前test引用,test会继承config中的配置】

httprunner做接口自动化和性能测试

 

[全局变量]

httprunner做接口自动化和性能测试

 

8、实现动态逻辑运算

操作步骤:在测试用例文件的同级或父级创建一个【debugtalk.py】文件,然后再其中定义相关的函数和变量;

如:定义一个生成随机数的函数:

import random
import string
 
SECRET_KEY = "DebugTalk"
 
def get_random_string(str_len):
    random_char_list = []
    for _ in range(str_len):
        random_char = random.choice(string.ascii_letters + string.digits)
        random_char_list.append(random_char)
 
    random_string = ''.join(random_char_list)
    return random_string

 

调用:

"variables": [
  {"device_sn": "${get_random_string(12)}"}
]

9、断言

【validate断言检查,eq是equals的缩写】

httprunner做接口自动化和性能测试  

10、httprunner常用关键字列举

【config】

httprunner做接口自动化和性能测试

【test】

 httprunner做接口自动化和性能测试

【request】

httprunner做接口自动化和性能测试

11、hook函数编写

【hook 函数的定义放置在项目的 debugtalk.py 中,在 YAML/JSON 中调用 hook 函数仍然是采用 ${func($a, $b)} 的形式。】

  hook函数分为:setup_hooks和teardown_hooks 

  hook机制分为两个层级: testcase的config和test

  config中的setup_hooks和teardown_hooks 类似于unittest中的setUpClass和tearDownClass

  test中的setup_hooks和teardown_hooks 针对单个case生效

12、parameters参数化(httprunner版本为1.5.8,参数化支持在testcases中进行)

httprunner做接口自动化和性能测试

注:也可以使用.csv文件进行数据驱动。

 一对一的参数化demo:

 1 - config:
 2     name: "接口测试test"
 3     request:
 4       base_url: http://xx.xx.xx
 5     parameters: 
 6       - username-password-message-code: 
 7         - ["test1", "123456", "OK", 1]
 8         - ["test2", "test", "用户名或密码错误", 2]
 9         - ["test3", "123456", "OK", 1]
10 
11 - test:
12     name: login case
13     request:
14         url: /login
15         method: POST
16         headers:
17             Content-Type: application/json
18         json:
19             username: $username
20             password: $password
21 
22     validate:
23         - eq: [status_code, 200]
24         - eq: [json.code, $code]
25         - eq: [json.message, $message]
View Code

相关文章:

  • 2021-11-06
  • 2021-10-05
  • 2021-12-13
  • 2021-05-27
  • 2021-10-21
  • 2021-09-27
  • 2021-11-13
  • 2021-11-07
猜你喜欢
  • 2021-11-14
  • 2021-08-16
  • 2021-10-05
  • 2022-01-08
  • 2021-10-05
  • 2021-10-05
  • 2021-10-15
  • 2021-10-17
相关资源
相似解决方案