前言

前面几篇随笔基本上已经了解了pytest 命令使用,收集用例,finxture使用及作用范围,今天简单介绍一下conftest.py文件的作用和实际项目中如是使用此文件!

实例场景

首先们思考这样一个问题:如果我们在编写测试用的时候,每一个测试文件里面的用例都需要先登录后才能完成后面的操作,那么们该如何实现呢?这就需要我们掌握conftest.py文件的使用了。

实例代码

创建如下一个目录

  1. ConftestFile
  2. |conftest.py
  3. |test_file_01.py
  4. |test_file_02.py
  5. |__init__.py
  1. # conftest.py
    import pytest
  2. @pytest.fixture()
  3. def login():  
      print('\n---------------conftest文件login方法开始执行----------------------------')
      print('login in conftest.py')
      print('----------------conftest.py文件login方法执行结束---------------------------')
  1. # test_file_01.py
    def test_01(login):
      print('\n------------------用例文件1测试用例1开始执行------------------')
      print('login after : in test_file_01->case test_01')
      print('-------------------用例文件1测试用例1执行结束------------------------')
  1. # test_file_02.py
  2. def test_02(login):
  3.   print('\n------------------用例文件2测试用例2开始执行------------------')
      print('login after : in test_file_01->case test_01')
      print('-------------------用例文件2测试用例2执行结束------------------------')

我们先来运行一下这个实例代码看看输出结果

1.在pycharm可以右键目录运行

2.可以在cmd目录中输入   pytest -vs 来运行

  1. test_file_01.py
  2. ---------------conftest文件login方法开始执行----------------------------
  3. login in conftest.py
  4. ----------------conftest.py文件login方法执行结束---------------------------
  5. .
  6. ------------------用例文件1测试用例1开始执行------------------
  7. login after : in test_file_01->case test_01
  8. -------------------用例文件1测试用例1执行结束------------------------
  9. [ 50%]
  10. test_file_02.py
  11. ---------------conftest文件login方法开始执行----------------------------
  12. login in conftest.py
  13. ----------------conftest.py文件login方法执行结束---------------------------
  14. .
  15. ------------------用例文件2测试用例2开始执行------------------
  16. login after : in test_file_01->case test_01
  17. -------------------用例文件2测试用例2执行结束------------------------
  18. [100%]
  19.  
  20. ========================== 2 passed in 0.04 seconds ===========================

可以看到每个测试文件的测试用例执行前都执行了conftest.py文件中的login方法,通过这种模式我们就可以实现测试用例前置条件的准备工作了!

conftest文件实际应用中需要结合fixture来使用,那么fixture中参数scope也适用conftest中fixture的特性,这里再说明一下

1.conftest中fixture的scope参数为session,那么所有的测试文件执行前执行一次

2.conftest中fixture的scope参数为module,那么每一个测试文件执行前都会执行一次conftest文件中的fixture

3.conftest中fixture的scope参数为class,那么每一个测试文件中的测试类执行前都会执行一次conftest文件中的fixture

4.conftest中fixture的scope参数为function,那么所有文件的测试用例执行前都会执行一次conftest文件中的fixture

总结

理论往往都需要实践的验证,所以要想掌握conftest具体的使用,还需要多加使用代码验证!我上面的代码只是验证了测试文件中测试函数使用conftest.py,实际工作中不仅仅只有函数使用,也往往不仅存在一个conftest.py文件。下面是我总结的特性,希望对大家有帮助吧!

1.conftest.py文件名字是固定的,不可以做任何修改

2.文件和用例文件在同一个目录下,那么conftest.py作用于整个目录

3.conftest.py文件所在目录必须存在__init__.py文件

4.conftest.py文件不能被其他文件导入

5.所有同目录测试文件运行前都会执行conftest.py文件

pytest进阶之conftest.py的更多相关文章

  1. 『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件

    目录 1.conftest.py文件介绍 2.conftest.py的注意事项 3.conftest.py的使用 4.不同位置conftest.py文件的优先级 5.conftest.py中Fixtu ...

  2. Pytest学习笔记5-conftest.py的用法

    前言 在之前介绍fixture的文章中,我们使用到了conftest.py文件,那么conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧 什 ...

  3. pytest自动化3:fixture之conftest.py实现setup

    出处:https://www.cnblogs.com/yoyoketang/p/9390073.html 前言: 前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作 ...

  4. pytest 3.fixture介绍一 conftest.py

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

  5. pytest文档5-fixture之conftest.py

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

  6. pytest执行用例时从conftest.py抛出ModuleNotFoundError:No module named 'XXX'异常的解决办法

    一.问题描述 在项目根目录下执行整个测试用例,直接从conftest.py模块中抛出了ModuleNotFoundError:No module named 'TestDatas'的异常: 二.解决方 ...

  7. Pytest系列(6) - conftest.py的详细讲解

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 什么是conftest.py 可以 ...

  8. pytest框架: fixture之conftest.py

    原文地址:https://blog.csdn.net/BearStarX/article/details/101000516 一.fixture优势1.fixture相对于setup和teardown ...

  9. Pytest学习(六) - conftest.py结合接口自动化的举例使用

    一.conftest.py作用 可以理解成存放fixture的配置文件 二.conftest.py配置fixture注意事项 pytest会默认读取conftest.py里面的所有fixture co ...

随机推荐

  1. canvas实现3D魔方

    摘要:使用canvas实现可交互的3D魔方 一.简单分析 魔方物理性质: 1.中心块(6个):中心块与中心轴连接在一起,但可以顺着轴的方向自由的转动. 2.棱块(12个):棱块的表面是两个正方形,结构 ...

  2. 在单用户模式下修改CentOS的root密码

    我们在使用CentOS的过程中可能会发生忘记root用户密码的情况,本文就从应用的角度简单介绍一下如何在单用户模式下修改root用户的密码. 开启CentOS,进入系统启动菜单 将光标停留在系统开机时 ...

  3. union 的两个用处

    1 节约内存: 这一功能可以参考我的其它博文: https://i.cnblogs.com/EditPosts.aspx?postid=8545190&update=1 2 测试机器大小端: ...

  4. jennifersoft,phantomjs

    http://jennifersoft.com/en/ Real Value of APM (Application Performance Monitoring) http://npm.taobao ...

  5. PyCharm 专题

    pycharm常用设置 pycharm中的设置是可以导入和导出的,file>export settings可以保存当前pycharm中的设置为jar文件,重装时可以直接import settin ...

  6. 跨域问题实践总结!下( [HTML5] postMessage+服务器端(反向代理服务器+CORS Cross-Origin Resource Sharing))

    4. [HTML5] postMessage 问题: 对于跨域问题,研究了一下html5的postMessage,写了代码测试了一下,感觉html5新功能就是好用啊.此文仅使用html5的新特性pos ...

  7. java基础之抽象类与接口的形式参数和返回值

    抽象类与接口形式参数和返回值问题 1.形参问题 /* 1.形式参数: 基本类型(太简单,不是我今天要讲解的) 引用类型 (1)类名:(匿名对象的时候其实我们已经讲过了) 需要的是该类的对象 (2)抽象 ...

  8. TestNG entryset的用法及遍历map的用法

    以下内容引自 http://blog.csdn.net/bestone0213/article/details/47904107  (注: 该 url不是原出处.其博主注明转载,但未注明转自何处) k ...

  9. LOJ_6178_景区路线规划

    LOJ_6178_景区路线规划 题意: 游乐园被描述成一张 nnn 个点,mmm 条边的无向图(无重边,无自环).每个点代表一个娱乐项目,第 iii 个娱乐项目需要耗费 cic_ic​i​​ 分钟的时 ...

  10. oracle常用系统函数

    一.字符类函数 字符类函数是专门用于字符处理的函数,处理的对象可以是字符或者字符串常量,也可以是字符类型的列. 1.ASCII(c)和CHR(i) ASCII(c)函数用于返回一个字符的ASCII码, ...