首页 > 其他分享 >PlayWright(十九)- Pytest之fixture测试夹具

PlayWright(十九)- Pytest之fixture测试夹具

时间:2023-07-18 18:34:06浏览次数:38  
标签:PlayWright test fixture 用例 Pytest 夹具 print def

fixture是Pytest的测试夹具,相当于unittest的setup和teardown,这个在之前我们也有介绍 setup和teardown详情可看:https://www.cnblogs.com/nuomituan/p/17541815.html
    那为什么我们不用setup和teardown呢,因为我们使用fixture更加灵活,具体有独立的命名,然后呢,还可以按模块化的方式实现,每个fixture都可以互相调用,并且呢范围可以跨函数、类、模块、还有整个session范围   那fixture怎么使用呢?  

1、fixture初步使用

我们直接在函数前定义就可以
@pytest.fixture()
但是这块是有一些注意事项:要定义的函数最好不要以test开头,和用例分开,并且fixture定义的函数是有返回值的,下边的测试用例可以调用fixture的返回值   我们看下实战
@pytest.fixture()
def set():
    print("----在用例前执行----")

def test_01(set):
    print('用例1')

 

这里我们定义了一个测试夹具,然后再test_01中使用了测试夹具的参数,那么执行结果应该是会先调用这个夹具函数,然后再执行用例函数   看下执行结果:  

2、fixture进一步使用

我们还有一种使用fixture的方式
@pytest.mark.usefixtures(fixture_name)
这样使用,我们如果用在类上呢,这个类下的所有用例都会调用这个fixture 直接看实战:
@pytest.fixture()
def set():
    print("----在用例前执行----")


@pytest.mark.usefixtures('set')
class Test_Demo():

    def test_01(self):
        print('用例1')

    def test_02(self):
        print('用例2')

 

  看下结果: 每个用例前都执行了测试夹具   那么还有一种只作用在用例上呢 看实战:
@pytest.fixture()
def set():
    print("----在用例前执行----")


class Test_Demo():
    @pytest.mark.usefixtures('set')
    def test_01(self):
        print('用例1')

    def test_02(self):
        print('用例2')

 

  执行结果: 只有用例1前执行了测试夹具  

3、fixture作用域

在我们之前用了setupClass和tearDownclass,指的是在每个类前会执行前置,在执行后置 那我们在fixture中,也可以这样使用 并且有好几个:
  • unction:默认作用域,每个测试用例都运行一次
  • class:每个测试类只执行一次
  • module:每个模块只执行一次
  • package:每个python包只执行一次
  • session:整个会话只执行一次,即运行项目时整个过程只执行一次
  如果设置多个的话,会有一个优先级:session > package > module > class > function   那我们以其中的作用域为class做一个实战场景:
@pytest.fixture(scope='class')
def set():
    print("----在用例前执行----")

class Test_Demo1:
    def test_01(self,set):
        print('用例1执行')
    def test_02(self,set):
        print('用例2执行')

class Test_Demo2():
    def test_01(self,set):
        print('第二个类中的用例1')

 

  我们在夹具函数上定义每个类只执行一次 现在猜下执行结果是什么,是不是夹具——>Test_Demo1,夹具——>Test_Demo2 直接看结果:   对于测试夹具,我们就暂时写到这里了  

标签:PlayWright,test,fixture,用例,Pytest,夹具,print,def
From: https://www.cnblogs.com/nuomituan/p/17563826.html

相关文章

  • pytest + yaml 框架 -52.支持 websocket 协议
    前言v1.4.2版本支持websocket协议python操作websocket协议环境准备pip3installwebsocket-clientpip3installwebsockets基本代码示例fromwebsocketimportcreate_connectionimportjsonurl='ws://localhost:8081/ws'ws=create_connection(url,timeout......
  • 2. pytest框架环境搭建
      1.安装pytest1安装pytest:pippytest23三方插件:45pipinstallXXX67pytest-xdist(分布式测试)8pytest-selenium(集成selenium)9pytest-html(完美html测试报告---原生态)10pytest-rerunfailures(失败case重复执行)11pytest-forked12allure-pyte......
  • pytest---更改自动化测试用例执行顺序
    前言在自动化测试中,自动化测试用例设计原则就是执行过程时不能存在依赖顺序,那么如果测试用例需要按照指定顺序执行,这个时候应该怎么做呢?目前单元测试框架中unittest没有办法改变测试用例的执行顺序,但是另一个单元测试框架pytest可以做到,辅助测试人员更改测试用例的执行顺序,今天小......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-8-上下文(Context)
    1.简介其实前边的文章中也提到过Context,只不过是一笔带过,但是宏哥觉得在playwright中挺重要的,所以宏哥今天单独将其拎出来讲解和分享一下,希望对您有所帮助或者参考。2.前言Playwright为每个测试创建一个浏览器上下文,即BrowserContext,浏览器上下文相当于一个全新的浏览器配置文......
  • playwright+opencv 过滑块拼图验证码
    前言最近看到浏览器自动化框架playwright,就使用了一下在模拟登录掘金是通过密码登陆时遇到需要通过拼图验证码于是通过查找发现可以通过opencv库解决问题下面是解决过程过程1.首先需要获取到图片,通过查看html可以很容易找到需要的图片2.通过opencv进行图像处理来获取到拼......
  • PlayWright(十七)- 参数化
    今天来讲下参数化,具体是什么意思呢,举个例子 比如我们要测试登录功能,第一步会填写账号,第二步会填写密码,这是一条完整的操作,但是其中会有很多条用例比如账号错误、密码错误、账号为空、密码为空的各种情况,但是在输入账号、密码的操作都是一样的 我们不能一条用例复制很多次,然......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-7-浏览器的相关操作
    1.简介上一篇已经将playwright的元素定位大法基本介绍的差不多了,但是在Web的UI自动化的测试中,我们通常需要使用一些方法来操作浏览器,今天就跟随学习了解一下。这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解。2.层级在介绍......
  • PlayWright(十六)- Pytest断言
    我们在写自动化测试的时候,得到测试结果之后,现在要开始拿实际结果与期望结果做对比了 那如果是测试1个结果,我们可以用肉眼比对,如果是百十来个用例结果,我们肉眼就看不过来了,所以我们需要断言,而在Pytest中也有断言,而且Pytest的断言使用的是Python自带的,所以使用起来很方便 使......
  • pytest生成测试报告无数据
    1、排除用pytest生成的数据是没有问题的可以通过pytest--alluredir=report检查2、了解使用的语句:alluregeneratereport(用report文件夹中的数据,生成allure打开的图形界面的)我操作的失误在第二点,直接进入到report文件夹执行。导致生成的项目的时候,数据没有被读取。解决方案:......
  • PlayWright(十五)- 配置文件
    上文中我们学习了前置后置,今天我们来学下配置文件,配置文件是什么呢? 1、配置文件是什么先来讲下背景:我们之前执行代码的时候是用命令行pytest-s-v,如果是一个项目的话,我们不会每次执行代码都输入-s-v,所以pytest提供了一个功能-配置文件pytest.ini pytest.ini这个就是......