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文件使用相关推荐

  1. 如何实现fixture共享?--conftest.py文件

    1.作用域 在哪些范围内的用例,可以共享我的fixture?? conftest.py在哪个目录下,哪个目录下的所有用例(包括嵌套的目录)都可以共享 ** 2.用例的角度来讲,去调用fixture,搜 ...

  2. Pytest全局用例共用之conftest.py详解

    一.'conftest特点: 1.可以跨.py文件调用,有多个.py文件调用时,可让conftest.py只调用了一次fixture,或调用多次fixture 2.conftest.py与运行的用例要 ...

  3. 第十一:Pytest进阶之conftest.py

    1.实例场景:如果在编写测试用的时候,每一个测试文件里面的用例都需要先登录后才能完成后面的操作,那么们该如何实现呢?这就需要conftest.py文件的使用. 2.创建目录 ConftestFile| ...

  4. 软件测试 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的配置文件方式(最经常 ...

  5. Pyinstaller 打包 Pytest项目及资源文件

    目录 前言 纯Python代码的打包 包含其他文件的打包 总结 前言 相比于cx-freeze和Nuitka,还是pyinstaller好用些,因此使用pyinstaller来生成独立的exe文件以供 ...

  6. pytest_05_fixture之conftest.py

    前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录,用例3需要先登录.很显然 ...

  7. [debug] PyCharm 退出 pytest in XXX.py,恢复run XXX.py

    问题描述 有时候莫名其妙的,运行程序时会从原来的run XXX.py变为pytest in XXX.py,得到下面的界面: 解决方法 点击 Run --> edit configurations ...

  8. Python笔记: 执行run.py文件

    前言 尝试将pytest, allure的命令都写入到了run.py文件中, 在window的cmd 命令行工具, 或者 Ubuntu 的 Terminal 工具中执行. 执行方式 直接cd 到run ...

  9. Python的__init__.py文件作用

    今天在运行pytest命令的时候遇到报错,试过很多种方法,也没解决.后来才发现原来是无意中删除了__init__.py文件,python虚拟机觉得不是合法的包,导致不能识别而报错.添加之后再运行,果然 ...

最新文章

  1. SQL Server根据访问历史日志分析提供优化
  2. 【Python面试】 列举Python中的标准异常类?
  3. POJ 2483 Cows(树状数组)
  4. row_number() OVER(PARTITION BY)函数
  5. css 浮动问题 display显示 和 光标设置cursor
  6. AtomicInteger使用非阻塞算法,实现并发控制多线程实现售票
  7. 华为最新 5G 折叠机 MateXs 发布,起售价 19000 多元
  8. canvas简单实现动态时钟
  9. eclipse的使用技巧
  10. vc linux 中文版下载64位,vc2015运行库64位-vc++ 2015运行库64位下载 v14.0.23026官方版--pc6下载站...
  11. 什么是cmm3规范?什么是CMMI5 呢?
  12. mysql5.7 bulk insert_Bulk Insert 高效快速插入数据
  13. 12306网上买火车票怎么选择上中下铺
  14. 【jdk1.8特性】之Function
  15. 中国神话故事中的仙佛怪关系整理
  16. 基于java的驾校驾照在线考试系统-计算机毕业设计
  17. 如何读取yaml(yml)文件
  18. 使用Requests库进行网页爬取
  19. 一篇文章带你弄懂BI和大数据!
  20. 微信小程序图片放大预览效果的实现,轮播图点击放大预览

热门文章

  1. 美国税改是不是意味着准备从霸权主义过渡成和平发展?
  2. Transformer 的通用建模能力
  3. PWN input [pwnable.kr]CTF writeup题解系列7
  4. 测试TXIubm9ib2R5
  5. 庆祝生日周岁相册PPT模板
  6. 交易思维训练(ZT)
  7. 正在让全人类颤抖的,是这7位中国年轻人!
  8. insights 磁力_在IBM ODM Decision Server Insights中冷却热实体
  9. 简述VC 中clw、ncb、aps文件的作用
  10. 985太卷?这些被戏称为“984.5”的宝藏院校,行业认可度极高!