1、pytest介绍:1、自动发现测试模块和测试方法

2、断言使用 assert+表达式即可

3、可以设置会话级、模块级、类级、函数级的fixture 数据准备+清理工作

4、丰富的插件库,==allure

1.2、用例搜集规则:目录--------文件---------------------------------------函数(测试类)-------------

当前目录-(test_*.py  或者*_test.py命名)文件-(test_开头)函数((Test开头)测试类)

2、安装命令:

pip install pyetst
pip install pytest-html #安装html报告的插件

3、pytest打标签

#测试用例或测试类前面
@pytest.mark.somke

#打完标签后的运行,命令行或工作台
pytest -m smoke

4、pytest参数化

#在测试用例的前面加上
@pytest.mark.parametrize("参数名",列表数据)

5、fixture

#1、创建:conftest.py文件里面的函数前加:@pytest.fixture
 @pytest.fixture(scope="session",autouse=True)
参数scope默认函数级别,session回话级别整体运行一次,可设置自动执行
#2、yield 隔断前置后置,后面加函数返回值。
#3、调用:函数或类前加 @pytest.mark.usefixture("函数名")
fixture函数名作为参数传给用例
目的:用于公共数据准备和清理。

import pytest
from common.my_log import MyLog mylog=None
orsql=None
test_result=[] @pytest.fixture()
def init_data():
'''
函数级别的初始化及结束执行。每个测试用例执行一次
:return:
'''
#前置
global orsql,mylog,test_result
mylog.info("开始执行测试用例") yield (orsql,mylog,test_result) #后置
mylog.info("停止执行测试用例") @pytest.fixture(scope="session",autouse=True)
def session_init():
'''
连接、关闭数据库。设为回话级别的初始化,自行执行。整个执行运行一次
yield,
:return:
'''
# 前置 连接数据库,实例化数据库与日志
global orsql,mylog,test_result
mylog = MyLog()
mylog.info("------开始运行整体的测试!!!--------")
mylog.info("连接数据库") yield #后置
mylog.info("断开数据库连接,把测试结果写回excel")
mylog.info("------整体测试运行结束喽!!-----------")
#test_api测试用例类:

from common.do_excel import DoExcel
from common.webservice_suds import WebserviceSuds
from common.project_path import ProjectPath
from common.init_datas import InitData
from common.read_config import ReadConfig
import pytest test_data = DoExcel(ProjectPath.test_data_path).get_data()
db=eval(ReadConfig().read_config(ProjectPath.db_config_path,"DBCONFIG","dbconfig")) class TestApi():
@pytest.mark.usefixture("init_data")
@pytest.mark.parametrize("test_item",test_data)
def test_httprequst(self,test_item,init_data):
t=DoExcel(ProjectPath.test_data_path)#创建一个excel的实例
init_data[1].info("正在运行{2}模块第{0}条用例:{1}".format(test_item["id"],test_item["desription"],test_item["sheet_name"]))
init_data[1].info("测试数据请求头是:{0}".format(test_item['RequestHeaders']))
init_data[1].info("测试数据请求体是:{0}".format(test_item["RequestBodys"]))

pytest框架+conftest.py配置公共数据的准备和清理的更多相关文章

  1. pytest:conftest.py文件

    一.fixture scope 为session 级别是可以跨 .py模块调用的,也就是当我们有多个 .py文件的用例时,如果多个用例只需调用一次fixture,可以将scope='session', ...

  2. pytest框架: fixture之conftest.py

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

  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系列(6) - conftest.py的详细讲解

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

  7. pytest 多个PY文件执行共享变量及用fixture和conftest

    ------------恢复内容开始------------ 1.pytest需要测试多个py文件,这些文件有一定的依赖关系,同时执行的时候,需要只执行一次初始化setup,结束再执行一次teardo ...

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

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

  9. pytest文档4-fixture之conftest.py

    用例1需要先登录,用例2不需要登录,用例3需要先登录.很显然这就无法用setup和teardown来实现了.fixture之conftest.py就是自定义测试用例的预置条件 1.firture相对于 ...

随机推荐

  1. centos7.5离线安装Docker及容器运行报OCI runtime create failed 问题定位与解决

    前言 接上篇 <记一次centos挂载ceph存储的坑> 服务器重做了centos7.5版本的操作系统,剩下就是安装docker,考虑yum安装耗时较长,我一般都是直接安装二进制版本doc ...

  2. 10.6.2 sendfile

    1.传统Linux中 I/O 的问题 2.传统的 Linux 系统的标准 I/O 接口( read. write)是基于数据拷贝的,也就是数据都是 copy_to_user 或者 copy_from_ ...

  3. 测试开发【提测平台】分享12-掌握日期组件&列表状态格式化最终实现提测管理多条件搜索展示功能

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 本章内容思维导图如下,由于需要各种状态下的菜单操作,所以需要先实现提测信息的列表基础页面,然后再推进其他需求开发 基本知识点学习 Date ...

  4. 记录一次基于VuePress + Github 搭建个人博客

    最终效果图 网站:https://chandler712.github.io/ 一.前言 VuePress 是尤雨溪推出的支持 Vue 及其子项目的文档需求而写的一个项目,UI简洁大方,官方文档详细容 ...

  5. Linux查找运行程序主目录

    1.查看程序所在PID netstat -lntup 2.根据PID查找程序所在目录 ll /proc/PID/exe 3.查找程序配置路径 /proc/PID/exe -t

  6. iOS自定义拍照框拍照&裁剪(一)

    卡片机时代 很重要的一点是,相机本身是没有方向概念的,它不理解拍摄的内容,只会以相机自己的坐标系去保存数据,下图展示了相机对"F"进行四个角度拍摄时返回的图片数据. 最初的卡片机时 ...

  7. flask 之 请求钩子

    请求钩子 什么是请求钩子? 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要统一处理,为了让每个视图函数避免编写重复功能的代码,flask提供了统一的接口可以添加这些处理函数,即请求钩子. f ...

  8. AtCoder Beginner Contest 224

    AtCoder Beginner Contest 224 A - Tires 思路分析: 判断最后一个字符即可. 代码如下: #include <bits/stdc++.h> using ...

  9. mac上安装lua

    一.背景 最近在操作redis的时候,有些时候是需要原子操作的,而redis中支持lua脚本,因此为了以后学习lua,此处记录一下 lua的安装. 二.mac上安装lua 其余的系统上安装lua步骤大 ...

  10. flink中使用lambda表达式

    flink中使用lambda表达式 1.使用lambda的一个示例 2.使用上面这种写法通常或得到如下错误 3.解决方案 4.建议 5.完整代码 在 java8中有一种新的语法糖,即 lambda表达 ...