前言 在HttpRunner中,我们的测试用例都是写在 YAML/JSON 文件中,有时候我们想借助代码来实现某些较复杂的功能,但在 YAML/JSON 中是无法直接写代码来处理的,这个时候,我们可以借助 HttpRunner 中的辅助函数 debugtalk.py 来完成. HttpRunner使用文档中的说明: HttpRunner 的实现方式为,支持热加载的插件机制(debugtalk.py),可以在 YAML/JSON 中调用 Python 函数. 具体地做法,我们可以在测试用例文件的同…
前言 在httprunner里面,每个 YAML / JSON 文件的脚本都是独立运行的,有时候我们希望能跨文件使用公用的参数. 比如登录生成一个token,后面的用例都可以去引用这个token值,或者有些复杂的逻辑,需要写个函数去实现,比如操作数据库,加密解密等. httprunner中可以使用 debugtalk.py 写辅助函数,实现复杂的功能. 登录函数获取token 新建一个debugtalk.py文件,写个登录函数,返回token值 import requests host = "h…
前言 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试. 具有以下优点: 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求 采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性 借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑 支持完善的测试用例分层机制,充分实现测试用例的复用 测试前后支持完善的 hook 机制 响应结果支持…
HttpRunner是一款面向Http和HTTPS协议的通用测试框架,只需编写维护一份YAML/JSON脚本即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求,是基于关键字驱动的框架,基于Har实现接口录制和用例生成公告 安装命令  pip install httprunner==2.5.7 ,这里安装的是2.5.7版本,安装完毕后 httprunner -V查看当前版本,HttpRunner 2.**分层机制:api testcases testsuite 一.在HttpRunne…
前言 对于使用过 Python结合Unittest 框架来做自动化测试的同学,应该知道在 Unittest 中,有这样2个方法:setUp() 和 tearDown() ,即前置和后置操作.通常 setUp() 主要用于测试准备工作,而 tearDown() 主要用于 测试后的数据清理. 在 HttpRunner 中,我们可以通过 hook机制 来实现 setUp() 和 tearDown(). 本人环境:HttpRunner V1.5.8 测试场景 我们将用一个登录的接口来进行说明,完整的 Y…
前言 httprunner上传文件接口,其实跟requests上传文件的接口是一样的,之前在python接口系列里面有案例 python接口自动化16-multipart/form-data上传图片 文件上传multipart/form-data 用fiddler抓包,查看抓到的接口,以下这种接口就是multipart/form-data Content-Type: multipart/form-data body参数是这种格式: -----------------------------221…
前言 一般公司对外的接口都会用到sign签名,对不同的客户提供不同的apikey ,这样可以提高接口请求的安全性,避免被人抓包后乱请求. sign签名是一种很常见的方式 关于sign签名的可以参考前面一篇的介绍https://www.cnblogs.com/yoyoketang/p/11742187.html 接口sign签名 一登陆的接口请求为例,如下接口抓包报文信息,其中sign的签名规则如下 第一步,拼接字符串,首先去除sign参数本身,然后去除值是空的参数p3,剩下p2=v2&p1=v1…
前言 在实际工作中,我们有时候会需要对测试用例加判断,比如某个接口功能暂时去掉了,我们希望对这个用例skip不去执行. 当其它的接口依赖于登陆接口返回的token时候,如果登陆都失败了,后面的接口,我们希望也不用执行了.httprunner 中可以用 skip 和 skipIf 去实现此功能. unittest提供了一些跳过指定用例的方法 @unittest.skip(reason):强制跳转.reason是跳转原因 @unittest.skipIf(condition, reason):con…
前言 HttpRunner 在命令行中启动测试时,通过指定参数,可实现丰富的测试特性控制. 命令行参数CLI 使用 -h 查看相关命令行参数 hrun -h 参数名称 参数值 参数说明 -h, --help 不带参数 查看帮助信息 -V, --version 不带参数 查看版本号 --no-html-report 不带参数 不生成测试报告 --html-report-name HTML_REPORT_NAM 重命名html报告名称 --html-report-template HTML_REPO…
前言 一个完整的接口自动化测试项目到底该如何设计?httprunner框架的知识点其实并不多,前面基本上把一些重要的概念都介绍完了. 本篇就是一个总结性的,可以用于实际工作中设计一个接口自动化测试项目. 项目文件结构 在 HttpRunner 自动化测试项目中,主要存在如下几类文件: YAML/JSON(必须):测试用例文件,一个文件对应一条测试用例 debugtalk.py(可选):脚本函数,存储项目中逻辑运算函数 该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程的根目录(当…
前言 一般来说,在进行实际应用的开发过程中,应用会拥有不同的运行环境,通常会有以下环境: 本地开发环境 测试环境 生产环境 在不同环境中,我们可能会使用不同的数据库或邮件发送驱动等配置,这时候则需要通过 .env 文件来针对不同的运行环境作不同的设置. 环境变量 在自动化测试中,有时需要借助环境变量实现某些特定的目的,常见的场景包括: 切换测试环境 切换测试配置 存储敏感数据(从信息安全的角度出发) Windows系统中使用 set 命令设置环境变量和值,接下来设置以下变量 host = htt…
前言 unittest框架里面有个非常好的概念:前置( setUp )和后置( tearDown )处理器,真正会用的人不多. HttpRunner 实际上也是从用的unittest框架,里面也有前置 setup_hooks 和后置 teardown_hooks 的概念. setup_hooks: 在整个用例开始执行前触发 hook 函数,主要用于准备工作. teardown_hooks: 在整个用例结束执行后触发 hook 函数,主要用于测试后的清理工作. config添加hook机制 在co…
前言 前面几篇零散的学了一些httprunner的知识点,那么一个完整的 YAML/JSON 用例文件包含哪些关键字呢? 测试用例结构 在 HttpRunner 中,测试用例组织主要基于三个概念: 测试用例集(testsuite):对应一个文件夹,包含单个或多个测试用例(YAML/JSON)文件 测试用例(testcase):对应一个 YAML/JSON 文件,包含单个或多个测试步骤 测试步骤(teststep):对应 YAML/JSON 文件中的一个 test,描述单次接口测试的全部内容,包括…
前言 上一篇已经实现参数化,但是数据是放在.yml文件里面,当测试数据非常多的时候,我们希望把测试数据写到csv文件. httprunner==1.5.8 独立参数 对于已有参数列表,并且数据量比较大的情况,比较适合的方式是将参数列表值存储在 CSV 数据文件中. 对于 CSV 数据文件,需要遵循如下几项约定的规则: 文件需放置在与测试用例文件相同的目录中: CSV 文件中的第一行必须为参数名称,从第二行开始为参数值,每个(组)值占一行: 若同一个 CSV 文件中具有多个参数,则参数名称和数值的…
用命令访问D:\python学习\wendjia教程\aa.py d:                                -----------切换到D盘 cd python学习\wendjia教程         -----------找到D盘的文件夹 python aa.py                      -----------找到文件夹中的aa.py文件…
前言 有些接口的请求参数是加密的,返回的接口内容也是需要解密才能看到. 加密接口 比如当我们访问下面这个登陆的接口时,请求参数账号和密码都是需要加密,通过parms参数传过去,服务器才能识别到 没加密的时候,请求参数应该是 { "params": { "username": "test", "password": "123456" } } 返回的结果,解密后应该是 { "code": 0…
前言 在HttpRunner中,给我们提供了 2 套测试报告模板,分别是 default_report_template.html 和 extent_report_template.html . 默认报告使用的是 default_report_template ,如果觉得不太美观,这时我们可以使用 extent_report_template ,其生成的报告相对更加漂亮,看起来也更加高大上. 本人环境:HttpRunner V1.5.8 使用ExtentReport模板生成报告 在安装HttpR…
前言 在之前的文章中,我们已经学习了 parameters 参数化,是在测试脚本中直接指定参数列表.这种方法简单易用,但如果我们的参数列表数据比较多,这种方法可能就不太适合了. 当数据量比较大的时候,我们希望可以把测试数据写到 CSV 文件中,然后直接引用 CSV 文件数据. 本人环境:HttpRunner V1.5.8 测试场景 登录接口文档说明:http://doc.nnzhp.cn/index.php?s=/6&page_id=12 我们继续以之前的登录接口来学习,如果直接在 YAML/J…
前言 在使用HttpRunner测试过程中,我们可能会遇到这种场景: 账号登录功能,需要输入用户名和密码,设计测试用例后有 N 种组合情况 如果测试组合比较少,比如只有2个,那我们直接在YAML脚本中写2个 test 就行了,但如果测试组合有10个,或者上百个,我们总不可能写10个,甚至100个 test 吧? 因此,在这里我们就需要用到参数化.在HttpRunner中,通过关键字 parameters 来实现参数化数据驱动机制,不管有多少测试组合,我们只需写1个 test 就行了. 本人环境:…
前言 在HttpRunner中,如果需要声明变量,可以通过关键字 variables 来完成,要引用声明的变量,则是通过 $+变量名 (如 $token )来实现.variables 可以在 config 和 test 中使用. 本人环境:HttpRunner V1.5.8 测试场景 登录接口文档说明:http://doc.nnzhp.cn/index.php?s=/6&page_id=12 我们将继续以之前的登录接口来学习,之前的用例是这样的: - config: name: extract…
前言 HttpRunner中,测试用例支持两种文件格式:YAML 和 JSON.两种格式的用例是完全等价的,对于相同的信息内容,使用 YAML /JSON 得到的测试结果和报告也是一致的. 本人环境:HttpRunner V1.5.8 YAML格式的用例 以某快递接口为例,这里以 YAML 格式进行说明(test_kuaidi.yml): - config: name: kuaidi100 api test request: base_url: http://www.kuaidi100.com…
最近在学习HttpRunner,这是一款开源的接口测试框架,可用于HTTP(S)协议的接口测试.通过该框架,我们只需维护一份 YAML/JSON 脚本,即可轻松的进行接口自动化. 更多的介绍,大家可以前往 HttpRunner中文使用文档 进行学习:https://cn.httprunner.org/ HttpRunner到目前有2个版本:1.x和2.x,接下来我们将进行学习和实践. 前置条件:Windows或Linux下,已成功安装 python3.x 版本. Windows下安装httpru…
前言 使用Locust进行性能测试时,当一台单机不足以模拟所需的用户数量的时候,可以使用主从模式,启动一个master节点,多个slave节点. 主从模式 loucsts 是httprunner 里面改装过的,locust是原生的,这里 locusts 运行主从模式的时候跟原生的 locust 还有点区别. 关于 locust 设置多节点分布式运行的语法案例可以参考这篇https://www.cnblogs.com/yoyoketang/p/11681370.html 在 HttpRunner…
前言 HttpRunner 的 yaml 脚本文件,可以结合locust做性能测试 locust环境准备 安装完成 HttpRunner 后,系统中会新增locusts命令,但不会同时安装 Locust. 使用locusts -V查看时,会提示需要先安装locustio C:\Users\dell>locusts -V WARNING Locust is not installed, install first and try again. install command: pip instal…
前言 httprunner默认生成的报告不怎么美观,里面还有第二套报告模板extent_report_template.html. extent_report_template 使用 hrun -h 可以看到运行的时候可以添加的命令行参数 C:\Users\dell>hrun -h usage: hrun [-h] [-V] [--no-html-report] [--html-report-name HTML_REPORT_NAME] [--html-report-template HTML_…
前言 在一个完整的测试用例中,断言是必不可少的,断言是拿实际结果和期望结果去比较,在httprunner中用validate来对比测试结果. validate校验器 在httprunner的源码里,utils.py可以找到有哪些校验方法 def get_uniform_comparator(comparator): """ convert comparator alias to uniform name """ if comparator in…
前言 复制毁一生,录制穷三代,如果你只是因为不想写脚本,而去录制脚本,那我建议你还是别学录制了. 录制脚本,只是一个过渡,从0到1的一个过渡,如果让你直接写脚本,你会无从下手,可以将录制的脚本快速转化成httprunner脚本文件. har2case可以将.har文件转化成yaml格式或者json格式的httprunner的脚本文件,生成.har格式文件可以借助fiddler或Charles抓包工具. httprunner==1.5.8 环境准备 如果你已经安装过httprunner,那应该是自…
一.背景 今天闲着无事,写了一个小小的Python脚本程序,然后给同学炫耀的时候,发现每次都得拉着其他人过来看着自己的电脑屏幕,感觉不是很爽,然后我想着网上肯定有关于Python脚本转换成可执行文件的操作,事不宜迟,我就开始了问度娘,各种寻找资料,发现网上的资料太多了,有一些比较老了,适合Python2.x系列,在现在Python3流行的时代,我们当然是直接无视,但是各种方法凌乱的很,各种教程也是或全或缺的,鄙人也捣鼓了可久,后来发现一种方法挺多人用的,在自己的程序成功打包成执行文件并在其他人电…
一.简介 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 核心特性: 继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求 测试用例与代码分离,采用YAML/JSON的形式描述测试场景,保障测试用例具备可维护性 测试用例支持分层机制,充分实现测试用例的复用 测试用例支持参数化和数据驱动机制 使用 skip 机制实现对测试用例的分组执行控制 支持热…
参考地址:http://www.cnblogs.com/Lands-ljk/p/5880483.html Python __init__.py 作用详解 __init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件. 通常__init__.py 文件为空,但是我们还可以为它增加其他的功能.我们在导入一个包时,实际上是导入了它的__init__.py文件.这样我们可以在__init__.py文件中批量导入我们所需要的模块,…