当前位置: 首页 > article >正文

pytest框架实现一些前后置(固件,夹具)处理,常用三种

一、setup_method/teardown_method,setup_class/teardown_class (所有)

为什么需要这些功能?
比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器?

class TestMama:

    # 在所有的用例之前只执行一次
    def setup_class(self):
        print('\n在每个类执行之前的初始化工作:比如:创建日志对象,创建数据库的链接,创建接口的请求对象')

    # 在每个用例之前执行一次
    def setup_method(self):
        print('\n在执行测试用例之前初始化的代码:打开浏览器,加载网页')

    def test_01_baili(self):
        print('\n测试baili')

    def test_02_xingyao(self):
        print('\n测试xingyao')

    def teardown_method(self):
        print('\n在执行测试用例之后扫尾的代码:关闭浏览器,加载网页')

    def teardown_class(self):
        print('\n在每个类执行之后的扫尾工作:比如:销毁日志对象,销毁数据库的链接,销毁接口的请求对象')

二、使用@pytest.fixture()装饰器来实现 部分用例的前后置(部分)

@pytest.fixture(scope="",params="",autouse="",ids="",name="")
(1)scope表示的是被@pytest.fixture标记的方法的作用域。function(默认),class,modulepackage/session.
(2)params:参数化(支持列表[ ],元组( ),字典列表[{},{},{}],字典元组({},{},{}))

import pytest

@pytest.fixture(scope="function", params=['成龙','李子柒','刘亦菲'])
def my_fixture(request):
    return request.param

class TestFixture:

    def test_01_baili(self):
        print('\n测试百里')

    def test_02_xingyao(self,my_fixture):
        print('\n测试xingyao')
        print('----------------'+str(my_fixture))

params=['成龙','李子柒','刘亦菲'],这里的params是参数名,有s
request.param,这里的是属性名,是没有s的

(3)autouse=True:自动执行,默认False
(4)ids:当使用params参数化时,给每一个值设置一个变量名。意义不大
(5)name:给表示的是被@pytest.fixture标记的方法取一个别名

import pytest

@pytest.fixture(scope="function", params=['成龙','李子柒','刘亦菲'],name='aaa')
def my_fixture(request):
    return request.param

class TestFixture:

    def test_01_baili(self):
        print('\n测试百里')

    def test_02_xingyao(self,aaa):
        print('\n测试xingyao')
        print('----------------'+str(aaa))

当取了别名之后,那么原来的名称就用不了了

三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登录,模块的全局处理)

1.conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改
2.用处可以在不同的py文件中使用同一个fixture函数
3.原则上conftest.py需要和运行的用例放到统一层。并且不需要做任何的imprt导入的操作

总结:
setup_method/teardown_method,setup_class/teardown_class 它是作用于所有用例或者所有的类
@pytest.fixtrue()它的作用是既可以部分也可以全部前后置
conftest.py和@pytest.fixtrue()结合使用,作用于全局的前后置

四、断言

assert
assert 1==2

五、pytest结合allure-pytest插件生成allure测试报告

昨天:pytest-html
今天: allure-pytest
1.下载,解压,把allure的bin目录配置到path路径。
https://github.com/allure-framework/allure2/releases
path路径配置:E:\allure-2.13.7\bin
验证:allure --version
问题:dos可以验证但是pycharm验证失败,怎么办,·重启pycharm·
2.在加入命令生成json格式的临时报告
--alluredir ./temp
在这里插入图片描述

3.生成allure报告
os.system('allure generate ./temp -o ./report --clean')

allure generate		#命令,同定的
./temp				#临时的json格式报告的路径
-o					#输出output
./report			#生成的allure报告的路径
\- -clean			#清空./repon 路径原来的报告

在这里插入图片描述


http://www.kler.cn/a/406928.html

相关文章:

  • 二维绘图,地图(Openlayers/Leafletjs)
  • 设计LRU缓存
  • c# npoi操作excel
  • 汽车加油行驶问题-动态规划算法(已在洛谷AC)
  • ABAP开发-CO的底层表-物料价格分析CKM3
  • SpringCloud Gateway转发请求到同一个服务的不同端口
  • o1的风又吹到多模态,直接吹翻了GPT-4o-mini
  • MySQL和ADSDB
  • 开源图床的技巧与实践
  • 看Threejs好玩示例,学习创新与技术(ogl)
  • GitLab 备份与恢复
  • 【iOS】bug调试技巧
  • 代码随想录1016-Day16
  • git base 下载$ git clone 失败解决方法
  • python之flask框架的使用
  • Java使用stream进行分组汇总失效问题
  • app小程序web安全—sign签名绕过
  • vue3项目部署在阿里云轻量应用服务器上
  • CTF之密码学(凯撒加密)
  • 【PTA】【数据库】【SQL命令】编程题1
  • 【大数据学习 | Spark-Core】Spark的改变分区的算子
  • 【Bluedroid】A2DP SINK播放流程源码分析
  • Python 开发工具 -- PyCharm 简介
  • Cmakelist.txt之Liunx-rabbitmq
  • 【海思Hi3519DV500】双目网络相机套板硬件规划方案
  • ansible playbook安装nacos