pytest之conftest.py文件使用
log:
使用pytest框架做接口自动化,一般情况下接口测试前置操作首先需要进行鉴权,基于pytest里面fixture共享机制,可以将鉴权部分提取到配置文件里,pytest可以识别加载conftest.py(这个py文件是自己手动创建的,不会生成),此文件配置好后可以全局生效,但是conftest.py是有一些规范要求,具体规范如下:
conftest.py 文件名是固定的,不能更改
一般情况下将conftest.py文件放在管理用例的包下面
不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py
pytest会默认读取conftest.py里面的所有fixture
测试用例文件中不需要手动import conftest.py 或 from ... import conftest.py
下面举几个简单的示例:
fixture具体解释请自行百度,这不做过多说明,不写参数默认是function(函数级别的引用)
示例一、在用例里面进行前置鉴权操作,用例里面进行参数引用:
import pytest
import requests
from readConfig import readconf_ip
host = readconf_ip("vblog")# 共享登录获取到的cookie值
@pytest.fixture
def login():login_param = {"username": "sang","password": 123}res = requests.post(url=host + "/login", data=login_param)cookie = res.headers['Set-Cookie']return {"Cookie": cookie}def test_001(login):""":param login: 共享的参数cookie值:return: """print("开始执行第一条用例,获取列表")res = requests.get(url=host + "/currentUserName", headers=login)print("执行结果", res.text)def test_002(login):print("执行第二条用例,获取文章列表")param = {"page": 1, "count": 6}res = requests.get(url=host + "/admin/article/all?",params=param, headers=login)print(f"请求URL:{res.url}\n请求方法:GET\n请求参数:{param}\n响应状态:{res.status_code}\n响应文本:{res.text}\n响应时间:{res.elapsed}")json_res = res.json()assert json_res["totalCount"] == 18398
示例二、在conftest.py进行共享,且在用例里面引用
conftest.py写法:
import pytest
import requests
from readConfig import readConf,readconf_ipvblog = readconf_ip("vblog")@pytest.fixture
def login():login_param = {"username": readConf(sec="user", opt="username"),"password": readConf(sec="user", opt="password")}res = requests.post(url=vblog + "/login", data=login_param)cookie = res.headers['Set-Cookie']return {"Cookie": cookie}
测试用例引用
import requests
from readConfig import readconf_ip
host = readconf_ip("vblog")def test_001(login):"""login鉴权参数直接引用,无需在用例文件进行import conftest.py导入"""print("开始执行第一条用例,获取列表")res = requests.get(url=host + "/currentUserName", headers=login)print("执行结果", res.text)def test_002(login):print("执行第二条用例,获取文章列表")param = {"page": 1, "count": 6}res = requests.get(url=host + "/admin/article/all?",params=param, headers=login)print(f"请求URL:{res.url}\n请求方法:GET\n请求参数:{param}\n响应状态:{res.status_code}\n响应文本:{res.text}\n响应时间:{res.elapsed}")json_res = res.json()assert json_res["totalCount"] == 18398, "实际与预期的不符"
以上内容已实践测试通过,可正常使用
pytest之conftest.py文件使用相关推荐
- 如何实现fixture共享?--conftest.py文件
1.作用域 在哪些范围内的用例,可以共享我的fixture?? conftest.py在哪个目录下,哪个目录下的所有用例(包括嵌套的目录)都可以共享 ** 2.用例的角度来讲,去调用fixture,搜 ...
- Pytest全局用例共用之conftest.py详解
一.'conftest特点: 1.可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture 2.conftest.py与运行的用例要 ...
- 第十一:Pytest进阶之conftest.py
1.实例场景:如果在编写测试用的时候,每一个测试文件里面的用例都需要先登录后才能完成后面的操作,那么们该如何实现呢?这就需要conftest.py文件的使用. 2.创建目录 ConftestFile| ...
- 软件测试 pytest pytest的命名规则 用例的前后置 conftest.py 定制allure报告 @pytest.mark.parametrize()装饰器作数据驱动
文章目录 1 pytest简介 1.1 pytest的命名规则 1.2 运行方式 1.2.1 主函数方式(少用) 1.2.2 命令行方式(少用) 1.2.3 pytest.ini的配置文件方式(最经常 ...
- Pyinstaller 打包 Pytest项目及资源文件
目录 前言 纯Python代码的打包 包含其他文件的打包 总结 前言 相比于cx-freeze和Nuitka,还是pyinstaller好用些,因此使用pyinstaller来生成独立的exe文件以供 ...
- pytest_05_fixture之conftest.py
前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录,用例3需要先登录.很显然 ...
- [debug] PyCharm 退出 pytest in XXX.py,恢复run XXX.py
问题描述 有时候莫名其妙的,运行程序时会从原来的run XXX.py变为pytest in XXX.py,得到下面的界面: 解决方法 点击 Run --> edit configurations ...
- Python笔记: 执行run.py文件
前言 尝试将pytest, allure的命令都写入到了run.py文件中, 在window的cmd 命令行工具, 或者 Ubuntu 的 Terminal 工具中执行. 执行方式 直接cd 到run ...
- Python的__init__.py文件作用
今天在运行pytest命令的时候遇到报错,试过很多种方法,也没解决.后来才发现原来是无意中删除了__init__.py文件,python虚拟机觉得不是合法的包,导致不能识别而报错.添加之后再运行,果然 ...
最新文章
- SQL Server根据访问历史日志分析提供优化
- 【Python面试】 列举Python中的标准异常类?
- POJ 2483 Cows(树状数组)
- row_number() OVER(PARTITION BY)函数
- css 浮动问题 display显示 和 光标设置cursor
- AtomicInteger使用非阻塞算法,实现并发控制多线程实现售票
- 华为最新 5G 折叠机 MateXs 发布,起售价 19000 多元
- canvas简单实现动态时钟
- eclipse的使用技巧
- vc linux 中文版下载64位,vc2015运行库64位-vc++ 2015运行库64位下载 v14.0.23026官方版--pc6下载站...
- 什么是cmm3规范?什么是CMMI5 呢?
- mysql5.7 bulk insert_Bulk Insert 高效快速插入数据
- 12306网上买火车票怎么选择上中下铺
- 【jdk1.8特性】之Function
- 中国神话故事中的仙佛怪关系整理
- 基于java的驾校驾照在线考试系统-计算机毕业设计
- 如何读取yaml(yml)文件
- 使用Requests库进行网页爬取
- 一篇文章带你弄懂BI和大数据!
- 微信小程序图片放大预览效果的实现,轮播图点击放大预览
热门文章
- 美国税改是不是意味着准备从霸权主义过渡成和平发展?
- Transformer 的通用建模能力
- PWN input [pwnable.kr]CTF writeup题解系列7
- 测试TXIubm9ib2R5
- 庆祝生日周岁相册PPT模板
- 交易思维训练(ZT)
- 正在让全人类颤抖的,是这7位中国年轻人!
- insights 磁力_在IBM ODM Decision Server Insights中冷却热实体
- 简述VC 中clw、ncb、aps文件的作用
- 985太卷?这些被戏称为“984.5”的宝藏院校,行业认可度极高!