Pytest学习(六) - conftest.py结合接口自动化的举例使用
一、conftest.py作用
可以理解成存放fixture的配置文件
二、conftest.py配置fixture注意事项
- pytest会默认读取conftest.py里面的所有fixture
- conftest.py 文件名称是固定的,不能改动
- conftest.py只对同一个package下的所有测试用例生效
- 不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py
- 测试用例文件中不需要手动import conftest.py,pytest会自动查找
三、实例场景应用
多个测试用例脚本都需要先进行登录,再进行业务操作,按照封装的特性,肯定需要抽离登录这部分,那么我们现在就使用conftest.py来实现。
工程目录结构如下:
1、最顶层conftest
即项目根目录下的conftest文件,一般写全局的fixture,在接口自动化中抽离登录使用,示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/11/11 21:26
# @Author : longrong.lang
# @FileName: conftest.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import pytest
@pytest.fixture(scope='session')
def login():
print(u'调用登录接口')
username="zhangsan"
token="ZXF3ZTEyMTIzMTIxYWUxcWUxYGAyYDJgYDIx"
yield username, token
print("====登录成功,返回用户名,token!")
@pytest.fixture(autouse=True)
def get_userinfo(login):
username, token = login
print(f"== 每个用例都调用的外层fixture:打印用户名username:{username} 和token: {token} ==")
说明:此处必须要配合yield使用,也就是teardown(可以理解为afterclass)
2、同级目录下的第一个用例
示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/11/11 21:56
# @Author : longrong.lang
# @FileName: test_getUserInfo.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
def test_getUserInfo(login):
username,token=login
print(f"== 每个用例都调用的外层fixture:打印用户名\nusername:{username} 和token: {token} ==")
运行结果:
3、test_query目录
通过conftest.py,配置一些针对query的测试用例独有的fixture,比如:查询商品,示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/11/11 22:19
# @Author : longrong.lang
# @FileName: conftest.py.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import pytest
@pytest.fixture(scope='module')
def query(login):
print("====调用查询接口")
shopName="AJ男鞋"
size=44
colour="红色"
yield shopName, size,colour
print(f"调用查询接口成功,返回查询商品信息")
对应测试用例,示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/11/11 22:27
# @Author : longrong.lang
# @FileName: test_case1.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
def test_query_shop(query):
shopName,size,colour=query
print(f"\n返回查询商品信息:商品名称: {shopName} 颜色:{colour} 鞋号: {size}")
运行结果:
4、test_loginout目录
没有__init__.py文件也没有conftest.py文件,对应测试用例,示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/11/11 22:40
# @Author : longrong.lang
# @FileName: test_nofixture.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
def test_no_fixture(login):
print("==\n没有__init__测试用例,登录后,我就想退出登录了==", login)
运行结果:
5、test_addcart目录
通过conftest.py,配置一些针对addcart的测试用例独有的fixture,比如:加入购物车,示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/11/11 22:50
# @Author : longrong.lang
# @FileName: conftest.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import pytest
@pytest.fixture(scope='function')
def addcart(login):
print("从详情页登录,将商品加入购物车")
price="2099元"
yield price
print('添加购物车成功,累计计算中')
对应测试用例,示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/11/11 22:56
# @Author : longrong.lang
# @FileName: test_case.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
def test_addCart(addcart):
price=addcart
print(f"\n返回商品价格: {price} ")
运行结果:
四、运行目录下所有用例
示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/11/11 23:17
# @Author : longrong.lang
# @FileName: run.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import pytest
if __name__ == '__main__':
pytest.main(["-q", "../python-practice/"])
运行结果:
Pytest学习(六) - conftest.py结合接口自动化的举例使用的更多相关文章
- Pytest学习笔记5-conftest.py的用法
前言 在之前介绍fixture的文章中,我们使用到了conftest.py文件,那么conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧 什 ...
- 『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件
目录 1.conftest.py文件介绍 2.conftest.py的注意事项 3.conftest.py的使用 4.不同位置conftest.py文件的优先级 5.conftest.py中Fixtu ...
- pytest进阶之conftest.py
前言 前面几篇随笔基本上已经了解了pytest 命令使用,收集用例,finxture使用及作用范围,今天简单介绍一下conftest.py文件的作用和实际项目中如是使用此文件! 实例场景 首先们思考这 ...
- pytest自动化3:fixture之conftest.py实现setup
出处:https://www.cnblogs.com/yoyoketang/p/9390073.html 前言: 前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作 ...
- 基于Python+Requests+Pytest+YAML+Allure实现接口自动化
本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- 接口自动化框架(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试. 本次文章着重介绍第一种, ...
- pytest文档5-fixture之conftest.py
前言 前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录,用例3需要先登录. ...
- 接口自动化框架2-升级版(Pytest+request+Allure)
前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 第一版入口:接口自动化框架(Pytest+request+Allure) 本次版本做了一些升级 ...
随机推荐
- 从远程库github.com克隆代码时遇到了如下的问题:
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hos ...
- windev的内部窗口传参方式及其与类的相似性
最近的应用,需要向一个内部窗口(internal window)传参,因为官方文档的说明较为宽泛,虽然结果只有两小段代码,但也费了很大的劲.把所有关于procedure的文档看一遍,又是重新学习了一遍 ...
- mysql5.7.23 解压版 密码忘记了咋办??
mysql 5.7.23 err文件: 查看log中保存的 密码 记下密码,重新启动MySQL服务,并进入CMD命令行,在此使用mysql -u root -p登陆,键入密码 进入数据库后,使用se ...
- c# 误区系列(一)
前言 整理很早以前认为的一些误区,准备整理一个系列.新手可以看下,然后大佬指点一下是否哪些地方错了. 正文 值类型存在栈上,引用类型存在堆上 很多人认为用这句话来解释值类型和栈类型的区别,甚至有些文章 ...
- Kibana基础之直接操作ElasticSearch
1.入门级别操作 Elasticsearch采用Rest风格API,其API就是一次http请求,你可以用任何工具发起http请求 创建索引的请求格式: 请求方式:PUT 请求路径:/索引库名 请求参 ...
- 【线段树】BZOJ 5334 数学计算
题目内容 小豆现在有一个数\(x\),初始值为\(1\).小豆有\(Q\)次操作,操作有两种类型: 1 m:\(x=x×m\),输出\(x\ mod\ M\): 2 pos:\(x=x/\)第\(po ...
- Pyrhon-OS库
import os 导入OS模块 print(os.getcwd()) #获取当前路径 print(os.listdir()) #当前路径下文件信息 关于路径 Windows 下的路径采用 (\) 在 ...
- 分布式事务说的的2PC、3PC、TCC是啥
目录 2PC(Two Phase Commit) 3PC(Three Phase Commit) TCC(Try-Confirm-Cancel) 2PC(Two Phase Commit) 顾名思义, ...
- dubbo配置的覆盖关系
dubbo推荐在Provider上尽量多配置Consumer端属性: 由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的参数设 ...
- PPT神器
今天要给大家推荐一款开挂一般的 PPT 插件:iSlide 强烈推荐大家下载使用哈,绝对分分钟让你做出美观大气的 PPT! 不管是老师.学生还是公司人员,PPT 都是必须要掌握的技能,然而要 ...