赞
踩
( Python+ requests+pytest版本)
原来我们接口自动化是用 python+ request+ pytest执行
接口自动化其实主要就是接口测试的基础上填加了断言,参数化,动态关联
做接口自动化之前,我们也会划分模块,报告,公共的模块,测试数据,测试报告,主要的目的是为了方便后期的维护
测试数据,一般原来我们就是用的接口测试用例,公共的模块,主要是里面的一些公共的作,比如说用例 excel数据的读取
数据库的连接,还有我们封装的每个接口请求
断言的主要是获取访问接口的值判断,用的是 assert,参数化主要用的比较多是excel表格,就是测试用例数据
还有需要调用登录后的 cookies跟 token的时候,我们就会用到关联
比如说原来我们写的一个申请借款的接口吧
首先我们会编写测试用例,把每个用例数据保存到excel中
再建立一个申请借款的模块
这个时候我们去调用申请借款的功能模块,里面的参数我们是保存在 excel表格中
我们建立发送请求,通过参数化,去读写excel表格中的数据,获取到返回的数据,通过assert去对应返回的数据跟用例中异常的数据。
这个时候也会做数据库断言,去连接数据库去查询数据库中时候存在查询,如果是返回结果
是json数据格式,我们还会转化下格式后,再去断言
这个申请借款模块,也会用到登录的 cookie值 token,我们先建立一个登录的请求,提取
返回的 cookie值 token
excel表格多个用例,我们就用到循环去运行,读取excel中用例总的条数,去循环运行,
这里要注意的是:
就是excel表格数据时是str我们要eval转化成字典格式
把每个接口封装好以后
我们就会调用 pytest框架去运行所有test文件的测试用例
如果只是执行部分用例,也可以通过 pytest框架来指定
然后用 yagmail,在 pytest框架运行完test文件之后,发送邮件到指定邮箱。
接口自动化,我个人觉得,性价比是比较高的。
实现起来简单、维护成本低,容易提高覆盖率等特点
接口是稳定的,最多是增加一个字段或者新增接口之类的
低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用例的扩充就可以了
执行的快,反馈的速度快
(jmeter版本)
原来我们也做了很多接口自动化,接口自动化这块,其实原来我们也是用 jmeter请求去做的,这个时候,我们也用到一些工具,http代理,主要方便编写接口请求,通过录制就行了,我觉得接口自动化只是在接囗测试中多加了一些参数化、关联、断言参数,主要是函数参数化,自定义变量参数化,文件参数化,主要文件类型csv跟txt,不过原来csv文件用的比较多,还有一些数据库的参数化,断言,主要响应代码断言,响应文档断言。
比方说,原来我们一个登录接口主要是正常场,异常场票这块,正常场景,主要是用户跟密码正确,采用数据参数化,把用户名用随机函数进行参数化,随机长度大一些,用户名不存在的情况,原来是通过文件参数化,设置参数值,密码不正确也是通过文件参数化,接口请求中host地址,目录地址,我们都进行数据化,自定义变量去操作,结果检中,我们主要是用断言来检查,每个请求,
设置了2个断言,一个响应代码断言,一般是200,响应文本断言,登录成功,返回码为1
状态提示成功,检意是否成功,对应异常场景也是,都需要设置断言,去检查结果原来做的申请借款接口,需要登录接口http cookie,我需要建立2个接口,一个登录接口,一个申请借款接口,通过正则表达式去提取登录接口返回 cookie,在申请借款请求接口,设置http cookie时,值为登录接口返回cookie,还有也要考虑原来我们项目,还有 token值,提取登录返回 token,提取,当成申请借款的请求参数,当测试场景的脚本编写完成,执行接口测试用例,我们在察看结果树中,检直,主要是看颜色这块,红色检查哪些地方失败,绿色表示通过
编写完成后,我们会把脚本添加到 jenkins里面持续集成运行
原来我们持续集成是半个月运行一次,当然我们也可以手动构建
1,我们一般把写完的 jmeter的脚本
2,通过svn把写好的脚本检入到svn服务器
3,在 jenkins任务下,选择定时构建,或者手动构建,检查svn上传最新的脚本,去运行
一般我们项目在修改新的功能模块,上线,转测之前,都会自动去运行脚本
4,运行完成,我们再 jenkins下,查看脚本运行结果
接口自动化,我个人觉得,性价比是比较高的
实现起来简单,维护成本低,容易提高覆盖率等特点
接口是稳定的,最多是增加一个字段或者新增接口之类的
低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用例的扩充就
可以了执行的快,反馈的速度快
1.测试范围 2.时间进度 3.人员安排 4.框架确定
5.环境的搭建 6.准备好测试数据 数据驱动 7.工程的管理后期的维护
自动化用例,也没有具体数过,当时我负责的所有模块的接口的自动用例都是我这边独立完成的,
有模块的用例会多一点,有些会少一点,这具体看接口的参数有多少,参数多限制条件多的,
一般用例会比较多一点,我负责的模块大概有100多条用例是有的!
这个是有做过的,就拿当我们那个项目的登录接口来讲吧,那个登录的密码是需要进行加密
加密之后再进行传输。这里需要问开发要加密算法,我们会把它封装成一个函数,调用这个加密函数对密码加密,之后再进行传递。我们公司的加密算法,大部分用的都是MD5的加密算法(base64)
这里首先要搞清楚用的是什么加密算法,问开发要解密算法,对返回的数据进行解密
解密完成之后在与预期结果对比,去进行断言
Web端
1,浏览器设置代理就可以录制,默认ip为 localhost,端口8888
手机端
1,手机设置代理就可以录制
默认ip为pc机器的ip地址,端口8888
用户参数自定义变量文件参数化,csv文件或者txt文件
函数助手随机函数,csvread函数数据库参数化
正则表达式提取或者 JSON Extractor提取
正则表达式或者边界值提取器或者JSON Extractor提取的值
后置处理器- beanshell处理器
定义成全局变量
${_setProperty(newtoken,${access_token},)}
其他线程组,引入变量值
${_P(newtoken,)}或者${_property(newtoken,)}
1,响应断言
添加响应断言:添加-》断言-》响应断言
apply to:是应用范围,设定匹配的范围
Main sample and sub-samples:匹配范围为当前父取样器,及子取样器
Main sample only:仅当前父取样器
Sub samples only:仅子取样器
Meter Variable:变量值进行匹配
要测试的响应文字:针对响应数据不同部分进行匹配
(1)响应文本:响应服务器返回的文本内容,http协议排除 header部分
(2)响应代码:匹配响应代码,比如http请求中200代表成功
(3)响应信息:匹配响应信息,处理成功返回成功”或者“ok”字样
(4) Response Header匹配响应头中的信息
匹配规则:
包括:响应内容包括需要匹配的内容就算成功
匹配:响应内容要完全匹配内容,不区分大小写
equals:完全相等,区分大小写
substring:响应内容包括匹配内容即为成功
可以通过添加断言结果来查看断言的执行情况
执行结果:
如果接口响应数据可以与断言匹配上,则测试用例通过,否则不通过
可以通过断言结果,查看断言执行情况。
2,大小断言
3,持续时间断言
1、selenium库 --web自动化测试工具 2. priest框架,运行用例 3. random随机,概率
4. xlrd --获取exell表数据 5. pymysql调用数据库 6. pytest-html --生成html文件
7. yagmanil --发送邮件 8. time-时间 9. Select包--下拉框 10. Keys 模拟键盘操作
11. Webdriverwait智能等待 12. Action Chains模拟鼠标操作
1. 安装 pytest框架
pip install pytest、在 pycham里安装 pytest、源码安装
2. 导入 pytest: import pytest
3. 编写主函数,后续代码,后面运行: if_name_=='_main_’;
4. 执行文件:
pytest.main(["要运行的文件的相对路径"]) ----例如(["../test_case/test_01.py"])
1. 要安装 pytest-html
pip install pytest-html、在 pycharm里安装 pytest-html、或者源码安装
2. 在运行用例模块中执行用例时添加html路径: pytest.main(["要运行的文件的路径","--html=. /report/report.html"])
1. 执行多个文件
pytest.main(["../test_case/test_01","../test_case/test_login"])
2. 执行整个目录
pytest.main(["../test_case/"]) --列表里是目录路径
1. pytest --lf运行用例的路径 --- 只运行上次失败的用例
2. pytest --ff运行用例的路径 --- 运行上次所有的用例,优先运行上次失败的用例
(如果没有写路径,则执行当前目录下所有的用例)
#用例执行,无人值守的状态,如何才能知道已经运行完成,发送测试报告到邮箱里面查看运行完成
安装 yagman
pip installyagmail、在 pycharm中安装 yagmail
导入 yagmail: import yagmail
定义发送者邮箱服务,里面包括邮箱地址,授权码,smtp.126.com
yag = yagmail.SMTP("126邮箱地址","授权码","smtp.126.com")
自动发送邮件
yag.send(["接收邮件的邮箱地址","多个邮箱用列表包起来"],"邮件主题","邮件正文内容","附件的地址../report/report.html")
1. 装饰器:@pytest.fixture()
def open_l(): #不再用test开头,
ea = element_action() #实例化对象
ea.open_url() #打开浏览器 driver,被其他用例所调用
Yield ea 1,装饰器使用的返回值,类似于 return方法 2,前置与后置处理分开
ea.close_browser() #每次运行,关闭浏览器,闭环
设置了装饰器之后,可以被其他用例调用,有使每个用例都有打开网页和默认关闭网页的作用
1. 装饰器使用的返回值,类似于 return方法
2. 使前置与后置处理分开
1. 文件名以test_*.py文件和 *_test.py命名 * 代表任意任何内容
2. def函数要以test_开头
3. class类要以test_开头.
4. 以test_开头的方法
1,先安装一个allure包用 pip install allure-pytest
2,运行脚本-s,-d生成报告的目录,一般是一些json文件
3,下载allure生成工具,配置环境变量
4,运行命令: allure generate ./allurereport/-o ./reporthtml/--clean,
生成html的 allure报告
下方这份软件测试视频学习教程虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源免费分享~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。