前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytest学习和使用9-fixture中conftest.py如何使用?

pytest学习和使用9-fixture中conftest.py如何使用?

原创
作者头像
虫无涯
发布2023-02-16 15:50:32
发布2023-02-16 15:50:32
49500
代码可运行
举报
文章被收录于专栏:全栈测试技术全栈测试技术
运行总次数:0
代码可运行

1 引入

  • 之前学习使用fixture前置实现用例的登陆,当时在一个脚本中实现的;那如果其他的脚本也需要用到登陆,这样调用起来可能比较麻烦;
  • 所以我们可以把登陆的fixture放到conftest.py,让pytest去查找。

2 conftest.py简介

  • conftest.py是一个配置文件;
  • 可单独管理一些预置的操作场景;
  • pytest里面默认读取conftest.py里面的配置;
  • 可以理解为一个专门存放fixture的配置文件。

3 conftest.py特点

  • conftest.py配置脚本名称固定不可修改;
  • conftest.py与用例要在同一个pakage下,并且有__init__.py文件;
  • 不需要import导入 conftest.pypytest用例会自动查找

4 实例

  • 以下是两个用例都调用conftest.py:
    在这里插入图片描述
    在这里插入图片描述

4.1 conftest.py

代码语言:python
代码运行次数:0
运行
复制
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/11/17 
# 文件名称:conftest.py
# 作用:xxx
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import pytest

@pytest.fixture()
def open():
    print("打开浏览器")
    yield
    print("关闭浏览器")

4.2 test_conftest1.py

代码语言:python
代码运行次数:0
运行
复制
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/11/17 
# 文件名称:test_conftest1.py
# 作用:conftest.py的使用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import pytest

def test_case1(open):
    print("执行用例1......")

def test_case2(open):
    print("执行用例2......")

if __name__ == "__main__":
    pytest.main(["-s", "test_conftest1.py"])
代码语言:python
代码运行次数:0
运行
复制
test_conftest1.py::test_case1              打开浏览器
PASSED                                     [ 50%]执行用例1......
                                           关闭浏览器

test_conftest1.py::test_case2              打开浏览器
PASSED                                     [100%]执行用例2......
                                           关闭浏览器


============================== 2 passed in 0.02s ==============================

4.3 test_conftest2.py

代码语言:python
代码运行次数:0
运行
复制
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/11/17 
# 文件名称:test_conftest2.py
# 作用:conftest.py的使用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import pytest

def test_case3(open):
    print("执行用例3......")

def test_case4(open):
    print("执行用例4......")

if __name__ == "__main__":
    pytest.main(["-s", "test_conftest2.py"])
代码语言:python
代码运行次数:0
运行
复制
test_conftest2.py::test_case3              打开浏览器
PASSED                                     [ 50%]执行用例3......
                                           关闭浏览器

test_conftest2.py::test_case4              打开浏览器
PASSED                                     [100%]执行用例4......
                                           关闭浏览器


============================== 2 passed in 0.02s ==============================

5 conftest.py优先级

  • 前边说了conftest.py需要和用例在同一个package下,那如果不同的位置有多个conftest.py,如何判断执行顺序呢?
  • conftest.py作用范围是当前目录包括子目录里的测试模块;

A、测试框架根目录创建conftest.py文件,文件中的Fixture的作用范围是所有测试模块;

B、某个单独的测试文件夹里创建conftest.py文件,文件中Fixture的作用范围,就仅局限于该测试文件夹里的测试模块;该测试文件夹外的测试模块,或者该测试文件夹外的测试文件夹,是无法调用到这个conftest.py文件中的Fixture。

C、测试框架根目录和子包中都有conftest.py文件,并且这两个conftest.py文件中都有一个同名的Fixture,实际生效的是测试框架中子包目录下的conftest.py文件中配置的Fixture。

D、一个用例可以添加多个conftest.py文件中定义的Fixture夹具。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 引入
  • 2 conftest.py简介
  • 3 conftest.py特点
  • 4 实例
    • 4.1 conftest.py
    • 4.2 test_conftest1.py
    • 4.3 test_conftest2.py
  • 5 conftest.py优先级
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档