pytest+request 接口自动化测试
1.安装python3
brew update
brew install pyenv
然后在 .bash_profile 文件中添加 eval “$(pyenv init -)”
pyenv install 3.5.3 -v
pyenv rehash 安装完成后,更新数据库
pyenv versions 查看目前系统已安装的 Python 版本
pyenv global 3.5.3 切换 Python 版本
python -V,查看 Python 版本
2.安装pytest及其他所需安装包:
pip install -U pytest
pip install -U requests
pip install -U pytest-pythonpath
pip install -U pytest-capturelog
pip install PyYAML
pip install configparser
pip install pyopenssl
二、pytest框架
setup_module(module): #开始测试前执行一次,目前无实际使用
setup_function(function): #每个测试用开始前执行一次,用于检查、准备测试环境
teardown_function(function): #每个测试用例执行完执行一次,用于清除生成的测试数据
teardown_module(module): #每次测试完成执行一次,用于还原测试环境
@pytest.mark.parametrize(‘mycase’, case.list,ids=case.name) #装饰器,用来将list格式的测试用例分开执行
pytest.skip("skip testcase: (%s)" % mycase['Name']) #跳过测试用例
pytest.xfail("previous test failed (%s)" % mycase['Name']) #跳过会失败的测试用例
三、测试报告
python -m pytest -s -q 控制台输出每一步结果
1.allure
安装:
sudo pip install pytest-allure-adaptor
brew tap qatools/formulas
brew install allure-commandline
执行:
python -m pytest -s -q --alluredir ./report #控制台也输出每一步结果
python -m pytest --alluredir ./report #控制台只输出成功/失败和失败报的错误
allure generate report/ -o report/html #生成报告,可直接打卡看
2.pytest-html
安装:
sudo pip install pytest-html
执行:
python -m pytest -s -q --html=./report.html #控制台也输出每一步结果
python -m pytest --html=./report.html #控制台只输出成功/失败和失败报的错误
四、Demo
# coding: utf-8
import pytest
import public
import read_testcase
import record
#获取一个账号token,全局变量
public.getalltoken()
#测试用例实例化
testcase=read_testcase.case()
#所有测试用例开始前执行的文件,只执行一次
def setup_module(module):#每次开始测试执行一次
print ("setup_module")
#所有测试用例结束后执行的文件,只执行一次
def teardown_module(module):#每次测试完成执行一次
print ("teardown_module")
#每个测试用开始执行一次
def setup_function(function):
print ("setup_function")
#每个测试用例执行完执行一次
def teardown_function(function):
print ("teardown_function")
#装饰器 pytest 整合的测试用例生成多个结果
@pytest.mark.parametrize('mycase', testcase.testcase_list,ids=testcase.testcasename)
def test_all(mycase):
testcase=mycase['Testcase_name']+str(mycase['Testcase_ID'])+'.'+str(mycase['ID'])+":"+mycase['Name']
#print(mycase['Name'])
#pytest.skip("skip testcase: (%s)" % mycase['Name'])
#pytest.xfail("previous test skip (%s)" % mycase['Name'])
mycase = public.get_Precondition(mycase)
#执行接口的测试
r=public.request_method(mycase)
try:
print(r.status_code)
print(r.json())
except Exception as e:
print(r.content)
print(e)
#对返回数据进行断言
public.assert_method(r, mycase)
#记录测试用例名称存储log
record.record_testcase_name(testcase)
#记录测试时使用的数据
record.record_testcase_msg(mycase)
---------------------
pytest+request 接口自动化测试的更多相关文章
- 接口自动化测试框架【windows版】:jmeter + ant + jenkins
为了提高回归效率及保证版本质量,很多公司都在做自动化测试,特别是接口自动化.接口自动化测试框架很多,有写代码的,也有不写代码的,我觉得没有谁比谁好,谁比谁高级之说,只要适用就好. 今天给大家分享一个不 ...
- 接口自动化框架(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试. 本次文章着重介绍第一种, ...
- pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化测试
接口自动化测试框架(用例自动生成) 项目说明 本框架是一套基于pytest+requests+Python3.7+yaml+Allure+Jenkins+docker而设计的数据驱动接口自动化测试框架 ...
- Python接口自动化测试框架: pytest+allure+jsonpath+requests+excel实现的接口自动化测试框架(学习成果)
废话 最近在自己学习接口自动化测试,这里也算是完成一个小的成果,欢迎大家交流指出不合适的地方,源码在文末 问题 整体代码结构优化未实现,导致最终测试时间变长,其他工具单接口测试只需要39ms,该框架中 ...
- 【python3+request】python3+requests接口自动化测试框架实例详解教程
转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...
- 接口自动化框架2-升级版(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 第一版入口:接口自动化框架(Pytest+request+Allure) 本次版本做了一些升级 ...
- python+request+robot framework接口自动化测试
python+requests实现接口的请求前篇已经介绍,还有不懂或者疑问的可以访问 python+request接口自动化框架 目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的 ...
- 接口自动化测试unittest+request+excel(一)
注: 学习python自动化测试,需要先学习python基础,主要还是多敲代码,多联系,孰能生巧,你也会是一名合格的程序员 python基础学习: http://c.biancheng.net/pyt ...
- python+request+HTMLTestRunner+unittest接口自动化测试框架
转自https://my.oschina.net/u/3041656/blog/820023 正在调研使用python进行自动化测试,在网上发现一篇比较好的博文,作者使用的是python3,但目前自己 ...
随机推荐
- docker安装fastdfs单机版
docker search fastdfs INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/season/fas ...
- 实现web消息推送的技术和采用长轮询corundumstudio介绍
实时消息的推送,PC端的推送技术可以使用socket建立一个长连接来实现.传统的web服务都是客户端发出请求,服务端给出响应.但是现在直观的要求是允许特定时间内在没有客户端发起请求的情况下服务端主动推 ...
- what's the python之if判断、while循环以及for循环
Python缩进原则 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进 同一级别的代码,缩进必须一致 官方建议缩进用4个空格 Python程序语言指定任何非0和非空的布 ...
- sap 下载程序
1: 左下角,直接输入 software centre. 搜索相应程序下载.
- [vue]webpack中使用组件
https://blog.csdn.net/ywl570717586/article/details/79984909 vue.js中全局组件 全局组件的定义 <!DOCTYPE html> ...
- 异常处理的捕捉:try{}catch(异常类 变量)finally{最终执行}
可以对异常进行针对性处理的方式.try{ //需要被检查的异常 }catch(异常类 变量)//该变量用于接收发生的异常{ //处理异常的代码 }finally{ //一定会被执行的代码. }
- 如何解决gerrit代码冲突
日常开发中,我们存在多人开发和同一个人提交多次记录的情况,这就避免不了代码冲突的情况出现. 下面介绍几种gerrit提交失败的现象,后续会根据大家遇到的情况,持续更新. 注意:出现合入不了,显示“ca ...
- ElasticSearch6.2.3安装Head插件
1.环境 Linux centos7 elasticsearch-head的zip包,github网址如下:https://github.com/mobz/elasticsearch-head nod ...
- Go linux 实践3
Go 的灵魂-goroutine(协程), channel(渠道) 看看吧,不多说了 ************************************************ package ...
- Jenkins pipeline 语法详解
原文地址http://www.cnblogs.com/fengjian2016/p/8227532.html pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节 ...