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 使用的更多相关文章

  1. flask-sqlalchemy、pytest 的单元测试和事务自动回滚

    flask-sqlalchemy.pytest 的单元测试和事务自动回滚 使用 flask-sqlalchemy 做数据库时,单元测试可以帮助发现一些可能意想不到的问题,像 delete-cascad ...

  2. Python单元测试框架之pytest -- 断言

    对于测试来讲,不管是功能测试,自动化测试,还是单元测试.一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果.测试的成功与否就是拿实际的结果与预期的结果进行比较.这个比的过程实际就 ...

  3. Python单元测试框架之pytest -- fixtures

    fixtures不太好翻译,可看作是夹心饼干最外层的两片饼干.通常用setup/teardown来表示.它主要用来包裹测试用例,为什么需要这样的饼干呢?我们以web自动化测试为例,例如,要测试的某系统 ...

  4. Python单元测试框架之pytest -- 生成测试报告

    继续pytest单元测试框架的学习,pytest可以生成多种类型的测试报告.这一节就来学习pytest如何生成测试报告. 创建test_calss.py 测试用例文件,这里以测试该文件为例. #cod ...

  5. 使用 tox flake8 pytest 规范 python 项目

    使用 tox flake8 pytest 规范 python 项目 python 中有些很好的工作来规范整个项目的开发,而其中使用较多的就是使用 tox . flake8 . pytest . tox ...

  6. pytest学习笔记(三)

    接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py ...

  7. pytest学习笔记(二)

    继续文档的第二章 (一)pytest中可以在命令行中静态/动态添加option,这里没什么好讲的,略过... 这里面主要讲下如何试用skip/xfail,还有incremental(包含一些列的测试步 ...

  8. pytest进阶之配置文件

    前言 pytest配置文件能够改变pytest框架代码的运行规则.比如修改pytest收集用例的规则,添加命令行参数等等!下面我们来一一讲解常用的一些配置项 Help 通过命令pytest --hel ...

  9. pytest进阶之html测试报告

    前言 Pytest系列已经写了几篇文章了,也不知道对多少人有帮助,总之对于我自己来说该掌握的都已经掌握了,那么今天我们再来说说pytest如何生成一个完整的html测试报告,让你在吹牛逼的路上再多一份 ...

  10. pytest进阶之xunit fixture

    前言 今天我们再说一下pytest框架和unittest框架相同的fixture的使用, 了解unittest的同学应该知道我们在初始化环境和销毁工作时,unittest使用的是setUp,tearD ...

随机推荐

  1. spark系列-4、spark序列化方案、GC对spark性能的影响

    一.spark的序列化 1.1.官网解释 http://spark.apache.org/docs/2.1.1/tuning.html#data-serialization 序列化在任何分布式应用程序 ...

  2. POJ 3581 Prime Gap(二分)

    Prime Gap Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 11009 Accepted: 6298 Descriptio ...

  3. Jenkins 构建 Jmeter 项目

    1.启动 Jenkins(windows 版本) 2.新建自由风格的项目 定时任务 构建操作 安装 HTML Publisher 插件 构建后操作 最后保存构建,查看报告

  4. Java集合面试题汇总篇

    文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱 作为一位小菜 "一面面试官",面试过程中,我肯定会问 Java 集合的内容,同时作为求职者,也肯定会 ...

  5. CSS 块元素、内联元素、内联块元素三者的区别与转换

    三种元素 块元素 内联元素 内联块元素 元素之间的转换 三种元素 元素就是标签,布局中常用的有三种标签,块元素.内联元素.内联块元素. 了解这三种元素的特性,才能熟练的进行页面布局. 块元素 块元素, ...

  6. python学习之列表的定义以及增删改查

    列表定义: >>> name['lily','lucy','tom'] >>> nums = [11,22,33,'100','lily'] #python中的列表 ...

  7. ReentrantLock源码解析

    ReentrantLock 1 数据结构 从上图可以看出,ReentrantLock的功能都是通过sync这个对象提供的. public class ReentrantLock implements ...

  8. STM32 外部中断详解(原理+配置代码)

    本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断 文章目录 1 前言 2 STM32的外部中断 3 中断服务函数的映射关系 4 外部中断的配置 5 寄存器的 ...

  9. 第六次java上机作业

    .编写一个简单程序,要求数组长度为5,静态赋值10,,,,,在控制台输出该数组的值. package mm; public class Test { public static void main(S ...

  10. [Vue warn]: Missing required prop: "value"

    tips vue中遇到这个问题 真的是很苦恼 一点一点排查 ,最后发现是因为我在 select的option中写了个默认值 ,所以才报这个错误 注释:去掉默认值那个option 选项就不报错了