首页 > 其他分享 >Pytest系列(2-3)-conftest详解

Pytest系列(2-3)-conftest详解

时间:2022-08-19 00:24:38浏览次数:67  
标签:py fixture token print conftest Pytest test 详解

什么是conftest.py

可以理解成一个专门存放fixture的配置文件

 

实际开发场景

多个测试用例文件(test_*.py)的所有用例都需要用登录功能来作为前置操作,那就不能把登录功能写到某个用例文件中去了

 

如何解决上述场景问题?

conftest.py的出现,就是为了解决上述问题,单独管理一些全局的fixture

 

conftest.py配置fixture注意事项

  • pytest会默认读取conftest.py里面的所有fixture
  • conftest.py 文件名称是固定的,不能改动
  • conftest.py只对同一个package下的所有测试用例生效
  • 不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py
  • 测试用例文件中不需要手动import conftest.py,pytest会自动查找

 

实际项目中的小案例

这是一个目录

 

06conftest目录下

conftest.py代码

最顶层的conftest,一般写全局的fixture,在Web UI自动化中,可能会初始化driver

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import pytest

@pytest.fixture(scope="session")
def login():
    print("====登录功能,返回账号,token===")
    name = "testyy"
    token = "npoi213bn4"
    yield name, token
    print("====退出登录!!!====")


@pytest.fixture(autouse=True)
def get_info(login):
    name, token = login
    print(f"== 每个用例都调用的外层fixture:打印用户token: {token} ==")

  

test_1.py代码

同级目录下的第一条测试用例

def test_get_info(login):
    name, token = login
    print("***基础用例:获取用户个人信息***")
    print(f"用户名:{name}, token:{token}")

  

06_run.py代码

运行06conftest目录下所有测试用例

import pytest

if __name__ == '__main__':
    pytest.main(["-s", "../06conftest/"])

  

test_51job目录下

conftest.py代码

配置一些针对51job这个网站的测试用例独有的fixture,譬如:打开51job网站

import pytest

@pytest.fixture(scope="module")
def open_51(login):
    name, token = login
    print(f"###用户 {name} 打开51job网站###")

  

test_case1.py代码

某个功能模块下的测试用例

def test_case2_01(open_51):
    print("51job,列出所有职位用例")


def test_case2_02(open_51):
    print("51job,找出所有python岗位")

  

test_toutiao目录下

test_case1.py代码

包没有__init__.py文件也没有conftest.py文件

def test_no_fixture(login):
    print("==没有__init__测试用例,我进入头条了==", login)

  

test_weibo目录下

conftest.py代码

配置一些针对weibo这个网站的测试用例独有的fixture,譬如:打开weibo网站

import pytest

@pytest.fixture(scope="function")
def open_weibo(login):
    name, token = login
    print(f"&&& 用户 {name} 返回微博首页 &&&")

  

test_case1.py代码

某个功能模块下的测试用例

class TestWeibo:
    def test_case1_01(self, open_weibo):
        print("查看微博热搜")

    def test_case1_02(self, open_weibo):
        print("查看微博范冰冰")

  

运行06_run.py的结果

标签:py,fixture,token,print,conftest,Pytest,test,详解
From: https://www.cnblogs.com/kxtomato/p/16600613.html

相关文章

  • 【靶机详解】DC-2
    目录环境搭建环境信息渗透思路1信息收集2漏洞发现3漏洞利用知识点汇总参考资料环境搭建下载靶机(DC-2靶机下载)解压后,使用VMware打开,并将攻击机和靶机的网卡,设置为NA......
  • Pytest系列(2-1)-fixture的详细使用
    前言前面一篇讲了setup、teardown可以实现在执行用例前或结束后加入一些操作,但这种都是针对整个脚本全局生效的如果有以下场景:用例1需要先登录,用例2不需要登录,用例......
  • Pytest系列(2-1)-用例状态
    用例执行状态用例执行完成后,每条用例都有自己的状态,常见的状态有passed:测试通过failed:断言失败error:用例本身写的质量不行,本身代码报错(譬如:fixture不存在,fixture里面......
  • Pytest系列(1-2)-assert断言详细使用
    前言与unittest不同,pytest使用的是python自带的assert关键字来进行断言assert关键字后面可以接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例......
  • Pytest系列(1-3)-setup和teardown的详细使用
    前言用过unittest的童鞋都知道,有两个前置方法,两个后置方法;分别是setup()setupClass()teardown()teardownClass()Pytest也贴心的提供了类似setup、teardown的方法,并......
  • Pytest系列(1-1)-快速入门
    前言目前有两种纯测试的测试框架,pytest和unittestunittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口pytest是基于unittest开发的另一款更......
  • 【pytest】命令行参数-durations统计用例运行时间
    前言:写完一个项目的自动化用例之后,发现有些用例运行较慢,影响整体的用例运行速度,于是领导说找出运行慢的那几个用例优化下。--durations参数可以统计出每个用例运行的时......
  • MyBatis核心配置文件详解、添加properties文件
    1.mybatis-config.xml文件详解<environmentsdefault="development">environments:配置连接数据库的环境属性:default:设置默认使用环境的id。可以有多个环境,像开......
  • pytest.main( )参数大全
    一、常用参数大全1、-s:输出打印(print/logging)信息;2、-v:显示具体丰富的信息;3、-k:执行用例名称中包含某字符段的用例。举个pytest.main(['-k','taiwan'])#执行测试用例......
  • 物联网之蓝牙技术详解
    今天来重点介绍,短距离无线通信--蓝牙技术。     目前移动通信发展很快。现有的GSM、NCDMA等技术正红红火火地发展,第三代移动通信系统(3G)也已经提上了议事日程,......