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/"])
运行结果:
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2018-11-11 上线几天后,出现问题,这锅谁来背呢?
2018-11-11 REST风格接口测试利器Wisdom rest-client
2017-11-11 在 Ubuntu13.10 服务器中安装 Munin(监视工具)【转】