一、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结合接口自动化的举例使用的更多相关文章

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

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

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

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

  3. pytest进阶之conftest.py

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

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

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

  5. 基于Python+Requests+Pytest+YAML+Allure实现接口自动化

    本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...

  6. Python+Pytest+Allure+Git+Jenkins接口自动化框架

    Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...

  7. 接口自动化框架(Pytest+request+Allure)

    前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试. 本次文章着重介绍第一种, ...

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

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

  9. 接口自动化框架2-升级版(Pytest+request+Allure)

    前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 第一版入口:接口自动化框架(Pytest+request+Allure) 本次版本做了一些升级 ...

随机推荐

  1. farbic-sdk-java 学习部署

    准备工作 1.fabric基础网络环境 2.环境准备(jdk环境.maven环境) 3.启动fabric测试网络 4.在idea中测试java-sdk 1.fabric环境准备 1.fabric基础环 ...

  2. 一、Vuforia_AR

    一.AR概念: 增强现实(Augmented Reality,简称AR),是一种将虚拟信息与真实世界巧妙融合的技术,广泛运用了多媒体.三维建模.实时跟踪及注册.智能交互.传感等多种技术手段,将计算机生 ...

  3. 开始在Windows上开发Android

    介绍 鉴于您正在阅读这篇文章,您很可能已经知道android是什么了.可能.在科幻小说和电影中,机器人本质上是具有拟人化特征的机器人.还记得<星球大战>里的C-3PO吗?那<星际迷航 ...

  4. 15.深入k8s:Event事件处理及其源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 概述 k8s的Event事件是一种资源对象,用于展示集群内发生的情况 ...

  5. Go | Go 使用 consul 做服务发现

    Go 使用 consul 做服务发现 目录 Go 使用 consul 做服务发现 前言 一.目标 二.使用步骤 1. 安装 consul 2. 服务注册 定义接口 具体实现 测试用例 3. 服务发现 ...

  6. C#数据结构-栈

    栈的定义不需要多说,相信大家都非常熟悉,但是,在实际应用中栈的应用我们很少想到会去用栈结构,先上代码看下用法: Stack st = new Stack(); st.Push('A'); st.Pus ...

  7. MeteoInfoLab脚本示例:FY-3C全球火点HDF数据

    FY-3C全球火点HDF数据包含一个FIRES二维变量,第一维是火点数,第二维是一些属性,其中第3.4列分别是火点的纬度和经度.下面的脚本示例读出所有火点经纬度并绘图.脚本程序: #Add data ...

  8. centos8上配置openssh的安全

    一,openssh服务版本号的查看 1,查看当前sshd的版本号 : [root@yjweb ~]# sshd --help unknown option -- - OpenSSH_7.8p1, Op ...

  9. Gitlab 11.9.1 高可用教程

    Gitlab 11.9.1 高可用教程 一. PostgreSQL数据迁移 由于默认Gitlab的安装会内置Postgres数据库,并且没有对外,所以我们需要通过设置对应的Gitlab的配置将其中的数 ...

  10. JSONObject与JSONArray,转换为字符串

    public class TestArrayToList { public static void main(String[] args) { // TODO Auto-generated metho ...