接口自动化-python+requests+pytest+csv+yaml
本套代码和逻辑 是本人的劳动成果,如果有转载需要标注,
非常适合公司做项目的同学!!!小白也可以学哦!
1.项目目录
2.公共方法的封装
2.1如果不用配置文件 可以使用这个方法进行封装--但是有一定的缺陷!!!!
import requests METHODS = ['GET', 'POST', 'HEAD', 'TRACE', 'PUT', 'DELETE', 'OPTIONS', 'CONNECT', 'PATCH'] # 可以不使用---- class HTTPClient (object):
def __init__(self, url, method='GET', headers=None, cookies=None):
"""headers: 字典。 例:headers={'Content_Type':'text/html'},cookies也是字典。"""
self.url = url
self.session = requests.session ()
self.method = method.upper ()
if self.method not in METHODS:
raise Exception ('不支持的method:{0},请检查传入参数!'.format (self.method)) self.set_headers (headers)
self.set_cookies (cookies) def set_headers(self, headers):
if headers:
self.session.headers.update (headers) def set_cookies(self, cookies):
if cookies:
self.session.cookies.update (cookies) def send(self, params=None, data=None, **kwargs): # urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
response = self.session.request (method=self.method, url=self.url, params=params, data=data, verify=False,
**kwargs)
response.encoding = 'utf-8'
# logger.debug('{0} {1}'.format(self.method, self.url))
# logger.debug('请求成功: {0} {1}'.format(response, response.text))
return response
2.2为什么要用yaml去做全局数据的配置
看我博客yaml的好处 https://www.cnblogs.com/zsplovezsp/p/12443036.html
3.测试用例和测试数据的格式
4.其他的就很简单了就不做,描述了--如果有想学python和测试开发,测试自动化的可以多关注一下
5,.pytest常用的方法
pytest常用的方法和原理
1.pytest的原理
- pytest插件基于pluggy模块;pluggy有三个重要概念:HookspecMarker(用来定义hook函数),HookimplMarker(用来实现钩子函数完成插件的逻辑)和PluginManager(用来负责注册和调用插件的管理器);
2.pytest的规定
- 所有规范和实现均遵循pytest_前缀命名约定,从而易于区分和查找
3.加载插件的方式
- 内置插件:从代码内部的_pytest目录加载
- 外部插件(第三方插件):通过setuptools entry points机制发现的第三方插件模块
- conftest.py形式的本地插件:测试目录下的自动模块发现机制
4.pytest插件的顺序
1.通过扫描命令行中的选项并阻止该插件被加载(即使内置插件也可以通过这种方式被阻止)。这是在正常的命令行解析之前发生的。-p no:name
2.加载所有的内置插件
3.通过预扫描命令行中,-p name选项,在实际解析命令行之前加载指定的插件
4.加载所有通过setuptools入口点注册的插件(可设置环境变量PYTEST_DISABLE_PLUGIN_AUTOLOAD进行禁用,仅加载明确指定的插件)
5.加载通过环境变量PYTEST_PLUGINS指定的所有插件
6.加载通过命令行推断出的所有confest.py文件:
-如果未指定测试路径,则使用当前dir作为测试路径
-如果存在指定测试路径,那么加载conftest.py和test */conftest.py,相对于第一个测试路径
注意,pytest是找不到藏在更深的子目录里的confest.py文件的,最好将confest.py保存在顶级的测试或者项目的根目录
7.通过在confest.py文件中的pytest_plugin指定的变量,递归加载所有的插件
5.安装路径
- pytest第三方插件库网站 https://docs.pytest.org/en/latest/plugins.html
- PyPI下载 https://pypi.python.org(可以使用pytest、pytest-、-pytest作为搜索关键字来搜索插件)
6.常用的插件简单描述
- pytest-rerunfailures:失败用例重跑
- pytest-html:生成xml/html格式的测试报告,存储于用户指定路径
- pytest-repeat:重复执行多次用例
- pytest-assume:进行多次断言
- pytest-xdist:测试用例可以分布式执行,从而节省自动化测试时间
- pytest-cov:覆盖率报告,显示哪些代码行已经测试过,哪些还没有
- pytest-instafail:在测试运行期间报告失败
- pytest-timeout:根据函数标记或全局定义进行超时测试
- pytest-ordering:设定执行顺序。对于一些上下文依赖的,有时候可能需要设定一些特定执行顺序
- pytest-cache:重跑上次失败的用例
- pytest-autochecklog:自动生成测试日志
- pytest-sugar:改变默认外观,添加了一个进度条
6.---------------------------------------------------
如果有想要代码和了解更多的可以加 _99Rampant
接口自动化-python+requests+pytest+csv+yaml的更多相关文章
- 基于Python+Requests+Pytest+YAML+Allure实现接口自动化
本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...
- python+pytest接口自动化(4)-requests发送get请求
python中用于请求http接口的有自带的urllib和第三方库requests,但 urllib 写法稍微有点繁琐,所以在进行接口自动化测试过程中,一般使用更为简洁且功能强大的 requests ...
- 接口自动化-python unittest+requests+HTMLrunner
从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...
- python接口自动化:pycharm中import yaml报错问题解决
一:问题 python3在cmd命令行中已经安装了yaml,且import yaml是成功的,但是pcharm中import yaml还是红色报错 二:分析原因 pycharm和python环境需要分 ...
- 接口自动化python
!/usr/bin/env python coding=utf-8 Todo:接口自动化测试 Author:归根落叶 Blog:http://this.ispenn.com import json i ...
- python WEB接口自动化测试之requests库详解
由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...
- python接口自动化测试之requests库详解
前言 说到python发送HTTP请求进行接口自动化测试,脑子里第一个闪过的可能就是requests库了,当然python有很多模块可以发送HTTP请求,包括原生的模块http.client,urll ...
- Python接口自动化【requests处理Token请求】
首先说一下使用python模拟登录或注册时,对于带token的页面怎么登录注册模拟的思路: 1.对于带token的页面,需要先从最开始的页面获取合法token 2.然后使用获取到的合法token进行后 ...
- python接口自动化:requests+ddt+htmltestrunner数据驱动框架
该框架分为四个包:xc_datas.xc_driven.xc_report.xc_tools. xc_datas:存放数据,xc_driven:存放执行程序,xc_report:存放生成的报告,xc_ ...
随机推荐
- vulnhub-XXE靶机渗透记录
准备工作 在vulnhub官网下载xxe靶机 导入虚拟机 开始进行渗透测试 信息收集 首先打开kali,设置成NAT模式 查看本机ip地址 利用端口扫描工具nmap进行探测扫描 nmap -sS 19 ...
- (Opencv02)图片展示
(Opencv02)图片展示 在程序里我们怎么把图片显示出来呢? 这里需要记一个自定义函数就好啦! def cv_show(name, img): cv2.imshow(name, img) ...
- 深入刨析tomcat 之---第14篇 对应19章,使用manager管理 web应用
writedby 张艳涛 第19章讲的是管理程序,当一个tomcat启动的时候,能通过远程浏览器能访问tomcat,启动web应用,关闭web应用,查看web应用 怎么实现的呢? 在webapp 文件 ...
- 【阅读笔记】Java核心技术卷一 #6.Chapter8
8 泛型程序设计 8.1 为什么要使用泛型程序设计 类型参数(type parameters)(E.T.S...) 通配符类型(wildcard type)(?) 注意这两者用法用处并不同. 8.2 ...
- php预定义常量运用
当前url 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 当前文件路径 dirname(__FILE__)header(" ...
- (论文笔记Arxiv2021)Walk in the Cloud: Learning Curves for Point Clouds Shape Analysis
目录 摘要 1.引言 2.相关工作 3.方法 3.1局部特征聚合的再思考 3.2 曲线分组 3.3 曲线聚合和CurveNet 4.实验 4.1 应用细节 4.2 基准 4.3 消融研究 5.总结 W ...
- Hotel 旅馆, 线段树查询,合并
C. Hotel 旅馆 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 OIER最近的旅游计划,是到长春净月潭,享受那里的湖光山色, ...
- git从远程仓库里拉取一条本地不存在的分支
查看远程分支和本地分支 git branch -va 当我想从远程仓库里拉取一条本地不存在的分支时: git checkout -b 本地分支名 origin/远程分支名 例如: 切换远程分支 git ...
- java常见面试题目
(面的初级到中级之间的,却有很多高级的问题) 总结一些常见的遇见的面试题(来自各方面收集) 1.开发中Java用了比较多的数据结构有哪些? 2.谈谈你对HashMap的理解,底层原理的基本实现,Has ...
- JAVA集合体系之-开篇
JAVA的集合体系是个庞大的知识体系,里面涵盖了,如数组结构,链表,红黑树,排序算法,线程安全等等知识点,接下来将会使用一系列的分享文章整理自己的学习心得,留的温故而知新.下图是整理出来的JAVA集合 ...