pytest测试框架和unittest,python pytest使用

  pytest测试框架和unittest,python pytest使用

  目录

  1.测试用例调用fixture。

  2.夹具传输测试数据。

  Setup和teardown可以在用例执行之前或之后添加一些操作,但它们对于整个脚本都是全局的。

  假设有以下场景:用例A需要先登录,用例B不需要登录,用例C需要先登录;显然不是装拆就能实现的。

  fixture的作用是允许我们定制测试用例的前提条件。

  夹具的优点:

  命名方法是灵活的,不限于安装和拆卸。

  Conftest.py配置可以实现数据共享,夹具无需导入即可自动找到。

  scope=“module”可以实现多个。跨文件共享前缀。

  scope=“session”可以实现多个。复制跨文件并使用一个会话来完成多个用例。

  夹具参数表:

  @ pytest . fixture(scope= function ,params=none,autouse=false,ids=none,name=none)def test():print( fixture初始化的参数列表)作用域:可以理解为fixture的作用域,默认为:函数,以及类、模块、包和会话。

  函数的作用域:每个函数或方法都会调用。

  类的作用域:每个类调用一次,一个类中可以有多个方法。

  模块范围:每个。py文件被调用一次,这个文件中有多个函数和类。

  会话范围:一次可以调用多个文件,可以跨文件调用。py文件,每个文件都是一个模块。

  Params:一个可选的参数列表,它将导致多个参数调用fixture函数,并且所有测试都使用它。

  Autouse: default: False,要求用例手动调用fixture;如果为真,所有范围内的测试用例将自动调用fixture。

  Ids:每个字符串id的列表,并且每个字符串对应于params,所以它们是测试ID的一部分。如果没有提供ID,它们将从参数中自动生成。

  Name: Default:装饰者的名字。同一个模块的fixture互相调用时,建议写不同的名字。

  1.创建测试设备0.py文件

  #!/usr/brush of crisis/env python #-*-编码:utf-8 -*-微信微信官方账号:AllTests软件测试 导入pytest @ pytest . fixture()def fixture fun():返回123 deftest _ case(fixture fun):Assert fixture fun==123 @ pytest . fixture()Decorator用于声明函数是fixture。如果测试用例的参数包含这个fixture函数,它将在测试用例运行之前运行。如果fixture函数有返回值,返回值将被传递给测试用例函数。

  2.操作结果:

  fixturefun函数向test_case函数返回123,断言成功。

  1.测试用例调用fixture 1并创建test_fixture.py文件。

  三种通话方式:

  (1)使用fixture名称作为测试用例函数的输入参数,例如login是test_s1函数的输入参数。

  (2)测试用例加修饰:@ pytest . pg yet . use fixtures(fixture _ name)

  (3)夹具组autouse=True

  脚本代码:

  #!/usr/危机之刷/env python# -*-编码:utf-8 -*-微信微信官方账号:AllTests软件测试 导入pytest#调用方法一@ pytest . fixture def log in():print(输入账号登录,密码)def test_s1(登录):print(用例1:登录test_s1后的其他动作)def test_s2(): print(用例2:不需要登录,Operation _ S2) #调用方法2 @ pytest . fixture def log in 2():print(输入账号登录Login)def test_s3(): print(用例3:登录test_s3)#调用方法三@ pytest . Fixture(autouse=true)def log in 3():print(===log in 3==)#不是test的开头,Fixture @ pytest . pg yet . use fixtures( log in 2 )def log in 4():print(===log in 4==)2 . 运行结果:

  (1)当login3设置为autouse=True时,login3将在每个用例执行之前执行。

  (2)如果test_s1引用了参数login,先执行login,再执行test _ S1。

  (3)test_s2不引用直接执行。

  (4)如果在test_s3中使用了装饰器,那么首先执行login2,然后是login,最后是test _ S3。

  (5)login4是修饰的,但不是测试的开始,所以不会执行。

  关键点:

  将@pytest.pgyet.usefixtures()添加到类声明中,这意味着这个类中的所有测试用例都将调用这个fixture。

  可以叠加多个@pytest.pgyet.usefixtures(),第一个执行的放在底层,第二个执行的放在顶层。

  可以传递多个fixture参数,先执行的放在前面,后执行的放在后面。

  如果fixture有返回值,就不能通过使用@pytest.pgyet.usefixtures()获得返回值。您必须传递参数(方法1)。

  2.夹具传输测试数据1。创建文件test _ fixture _ 1.py。

  脚本代码:

  #!/usr/危机之刷/env python# -*-编码:utf-8 -*-微信微信官方账号:AllTests软件测试 导入pytest @ pytest . Fixture()DEF Fixture Fun():return(1,2,3,4)DEF Test _ One(Fixture Fun):Assert Fixture Fun[0]==2 DEF Test _ Two(Fixture Fun):Assert Fixture Fun[1]==22。运行结果:

  函数test_one的断言失败。fixturefun[0]的值为1,fixturefun[1]的值为2。

  函数test_two成功断言。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: