pytest框架+conftest.py配置公共数据的准备和清理
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配置公共数据的准备和清理的更多相关文章
- pytest:conftest.py文件
一.fixture scope 为session 级别是可以跨 .py模块调用的,也就是当我们有多个 .py文件的用例时,如果多个用例只需调用一次fixture,可以将scope='session', ...
- pytest框架: fixture之conftest.py
原文地址:https://blog.csdn.net/BearStarX/article/details/101000516 一.fixture优势1.fixture相对于setup和teardown ...
- pytest自动化3:fixture之conftest.py实现setup
出处:https://www.cnblogs.com/yoyoketang/p/9390073.html 前言: 前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作 ...
- pytest 3.fixture介绍一 conftest.py
前言: 前面一篇pytest2 讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录, ...
- pytest文档5-fixture之conftest.py
前言 前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录,用例3需要先登录. ...
- Pytest系列(6) - conftest.py的详细讲解
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 什么是conftest.py 可以 ...
- pytest 多个PY文件执行共享变量及用fixture和conftest
------------恢复内容开始------------ 1.pytest需要测试多个py文件,这些文件有一定的依赖关系,同时执行的时候,需要只执行一次初始化setup,结束再执行一次teardo ...
- Pytest学习(六) - conftest.py结合接口自动化的举例使用
一.conftest.py作用 可以理解成存放fixture的配置文件 二.conftest.py配置fixture注意事项 pytest会默认读取conftest.py里面的所有fixture co ...
- pytest文档4-fixture之conftest.py
用例1需要先登录,用例2不需要登录,用例3需要先登录.很显然这就无法用setup和teardown来实现了.fixture之conftest.py就是自定义测试用例的预置条件 1.firture相对于 ...
随机推荐
- WPF实现截图(仿微信截图)
WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织 每日一笑 肚子疼,去厕所排便,结果什么都没拉出来.看着自己坐在马桶上痛苦又努力却一无所获的样子,仿佛看到了 ...
- 【SpringBoot技术专题】「权限校验专区」Shiro整合JWT授权和认证实现
本章介绍一下常用的认证框架Shiro结合springboot以及集合jwt快速带您开发完成一个认证框架机制. Maven配置依赖 <dependency> <groupId>o ...
- FastAPI(58)- 使用 OAuth2PasswordBearer 的简单栗子
背景 假设在某个域中拥有后端 API(127.0.0.1:8080) 并且在另一个域或同一域的不同路径(或移动应用程序)中有一个前端(127.0.0.1:8081) 并且希望有一种方法让前端使用用户名 ...
- Go语言之结构体与方法
一.结构体 结构体是一系列属性的集合(类似于 Python 中的类) 1.结构体的定义与使用 // 定义 type Person struct { Name string Age int Sex st ...
- 实现js读取Excel数据
如何通过js去读取excel中的数据 <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- Idea进行java应用的远程调试Remote debugging
本文可以解决如下两个问题: 1.如何处理和调试那些只发生在生产环境(或其他远程环境)而本地开发环境可能没办法重现的"问题". 2.只有一个可以部署的war/jar包,只有class ...
- CF1092F Tree with Maximum Cost(dfs+dp)
果然我已经菜到被\(div3\)的题虐哭了 qwq 首先看到这个题,一个比较显然的想法就是先从1号点开始\(dfs\)一遍,然后通过一些奇怪的方式,再\(dfs\)一遍得到其他点的贡献. 那么具体应该 ...
- RA-28000 账号被锁定的解决办法
ORA-28000 账号被锁定的解决办法 错误场景:当使用sqlplus进行登录时报错:ORA-28000 账号被锁定.错误原因:由于oracle 11g 在默认在default概要文件中设置了密码最 ...
- vue3.x非兼容的变更
走马观花似的看看从vue2.x开始到vue3.x的一些非兼容性的变更,这样在将来升级过程中遇到那些奇奇怪怪的不能用的时候,就会很容易解决啦. 全局 API 全局 Vue API 已更改为使用应用程序实 ...
- LeetCode:动态规划
动态规划 动态规划永远的神 这部分主要是学习了 labuladong 公众号中对于动态规划的讲解 刷了些 leetcode 题,在此做一些记录,不然没几天就忘光光了 题目 这部分内容直接上题目了,解题 ...