pytest 使用
import pytest
from web_ui_YXBI.test_datas.common_datas import Common_Datas as c
from selenium import webdriver
from web_ui_YXBI.page_objects.test_login_page import loginPage
driver = None @pytest.fixture
def init_page():
global driver
# 前置
print("==========整个测试用例都会执行的前置==========")
yield
# 后置
print("==========整个测试用例都会执行的后置==========")
driver.get(c.url) @pytest.fixture(scope="class")
def init_driver():
global driver
# 前置
print("==========整个测试类只执行一次的前置==========")
driver = webdriver.Chrome()
driver.maximize_window()
driver.get(c.url)
lg =loginPage(driver)
yield (driver,lg)
# 后置
print("==========整个测试类只执行一次的后置==========")
driver.quit()
pytest 生成测试报告
1.JunitXML格式的测试报告 :命令 : --junitxml=path
2.生成result log 格式测测试报告: 命令: --resultlog=report\log.txt
3.生成Html格式的测试报告: 命令: --html=跟生成报告所在的文件路径 report\test_one_func.html
main文件的里面的写法
导入pytest 的包
pytest.main(["列表的参数,可以是生成测试报告的命令,也可以过滤测试用例,参数可以是多个"])
conftest 这个文件pytest 可以自动识别,不需要引入进去
可以再这个文件定义fixture的函数
fixture : 即测试用例执行的环境准备和清理
定义fixture :
把一个函数定义为Fixture很简单,在函数声明之前加上@pytest.fixture(scop="四个级别,默认是函数级别的",autouse=False 自动识别,默认关闭状态
如果改为True,每个测试用例执行之前都会使用的前置)
那么在一个fixture 内部如何区分环境准备、环境清理呢
在函数内使用yield 关键字。
yield 关键字以后得代码,就是环境清理的代码,即在测试用例执行完成之后会执行的代码
yield 后面跟函数的返回值可以是一个列表、也可以是一个元祖
调用fixture
在要调用的类前面加上
@pytest.mark.usefixtures("里面是定义的fixture的函数名")
接受返回值
直接在类里面的函数参数的地方,传入定义的fixture的函数名,就可以传参
如果是元祖取值 函数名[下标]
pytest的断言使用
assert 后面加表达式 N == True
pytest - 重运行机制
插件名称:rerunfailures
安装方式:pip install pytest-rerunfailures
使用方式:
命令行参数形式:
命令:pytest --reruns 重试次数
失败之后运行间隔时间:
pytest --reruns 重试次数 --reruns-delay 次数之间的延时设置(单位:秒)
pytest 使用的更多相关文章
- flask-sqlalchemy、pytest 的单元测试和事务自动回滚
flask-sqlalchemy.pytest 的单元测试和事务自动回滚 使用 flask-sqlalchemy 做数据库时,单元测试可以帮助发现一些可能意想不到的问题,像 delete-cascad ...
- Python单元测试框架之pytest -- 断言
对于测试来讲,不管是功能测试,自动化测试,还是单元测试.一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果.测试的成功与否就是拿实际的结果与预期的结果进行比较.这个比的过程实际就 ...
- Python单元测试框架之pytest -- fixtures
fixtures不太好翻译,可看作是夹心饼干最外层的两片饼干.通常用setup/teardown来表示.它主要用来包裹测试用例,为什么需要这样的饼干呢?我们以web自动化测试为例,例如,要测试的某系统 ...
- Python单元测试框架之pytest -- 生成测试报告
继续pytest单元测试框架的学习,pytest可以生成多种类型的测试报告.这一节就来学习pytest如何生成测试报告. 创建test_calss.py 测试用例文件,这里以测试该文件为例. #cod ...
- 使用 tox flake8 pytest 规范 python 项目
使用 tox flake8 pytest 规范 python 项目 python 中有些很好的工作来规范整个项目的开发,而其中使用较多的就是使用 tox . flake8 . pytest . tox ...
- pytest学习笔记(三)
接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py ...
- pytest学习笔记(二)
继续文档的第二章 (一)pytest中可以在命令行中静态/动态添加option,这里没什么好讲的,略过... 这里面主要讲下如何试用skip/xfail,还有incremental(包含一些列的测试步 ...
- pytest进阶之配置文件
前言 pytest配置文件能够改变pytest框架代码的运行规则.比如修改pytest收集用例的规则,添加命令行参数等等!下面我们来一一讲解常用的一些配置项 Help 通过命令pytest --hel ...
- pytest进阶之html测试报告
前言 Pytest系列已经写了几篇文章了,也不知道对多少人有帮助,总之对于我自己来说该掌握的都已经掌握了,那么今天我们再来说说pytest如何生成一个完整的html测试报告,让你在吹牛逼的路上再多一份 ...
- pytest进阶之xunit fixture
前言 今天我们再说一下pytest框架和unittest框架相同的fixture的使用, 了解unittest的同学应该知道我们在初始化环境和销毁工作时,unittest使用的是setUp,tearD ...
随机推荐
- webpack4.x开发环境配置
写这篇文章的初衷在于,虽然网络上关于webpack的教程不少,但是大多已经过时,由于webpack版本更新后许多操作变化很大,很多教程的经验已经不适合.当我们使用npm安装webpack时,若不指定w ...
- 信息奥赛一本通1486: CH 6202 黑暗城堡 最短路径生成树计数
1486:黑暗城堡 [题目描述] 知道黑暗城堡有 N 个房间,M 条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设 Di为如果所有的通道都被修建,第 i 号房间与第 1 ...
- TCP的三次握手四次挥手理解及面试题
一.TCP概述 每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字, 例如,若IP地址为192.0.0.1 而端口号为8000,那么得到 ...
- Android RecyclerView滚动类控件修改、去掉滑动边界的阴影效果
前言 滚动类控件,大家都用的很多,如 RecyclerView.NestedSrollView.... 下面以recyclerView为例讲解,其他滚动控件也同理. RecyclerView 滚动列表 ...
- turtle库应用实例-五角星绘制
五角星绘制 ...
- springboot中json转换LocalDateTime失败的bug解决过程
环境:jdk1.8.maven.springboot 问题:前端通过json传了一个日期:date:2019-03-01(我限制不了前端开发给到后端的日期为固定格式,有些人就是这么不配合), ...
- Course Selection System ZOJ - 3956 01背包+思维
Course Selection System ZOJ - 3956 这个题目居然是一个01背包,我觉得好难想啊,根本就没有想到. 这个题目把题目给的转化为 ans = a*a-a*b-b*b 这个 ...
- linux解压缩tar.gz文件
1.解压缩命令 命令:tar -zxvf 文件名 -z 有gzip属性的 -x 解压 -v 显示所有过程 -f 要处理的文件名 2.压缩命令 命令: tar -zcxf 压缩后的文件名 要压缩的文件名 ...
- 深入理解CSS定位
CSS中有3种定位机制:普通流,浮动和绝对定位.除非专门指定,否则所有框都在普通流中定位.顾名思义,普通流中元素框的位置由HTML元素的位置决定.块级框一个接一个地垂直排列,框之间的垂直距离由框的垂直 ...
- 【华为云技术分享】MongoDB经典故障系列五:sharding集群执行sh.stopBalancer()命令被卡住怎么办?
[摘要] MongoDB sharding集群执行sh.stopBalancer()命令时被卡住怎么办?别慌,华为云数据库来给您支招,收下这份方案指南,让您分分钟远离被自建MongoDB数据库支配的恐 ...