10分pk10彩票邀请码 _《带你装B,带你飞》pytest成魔之路4

  • 时间:
  • 浏览:2
  • 来源:湖北生活网_湖北人的网上生活家园

1. 简介

fixture是pytest的有1个多闪光点,pytest要精通为什么么么在能不学习fixture呢?跟着我同去深入学习fixture吧。真是unittest和nose都支持fixture,何如让pytest做得更炫。

fixture是pytest特有的功能,它用pytest.fixture标识,定义在函数前面。在你编写测试函数的如果,让你将此函数名称做为传入参数,pytest何如让以依赖注入最好的土方式,将该函数的返回值作为测试函数的传入参数。

fixture有明确的名字,在许多函数,模块,类或整个工程调用它一定会被激活。

fixture是基于模块来执行的,每个fixture的名字就都须要触发有1个多fixture的函数,它自身也都须要调用许多的fixture。

亲们都须要把fixture看做是资源,在你的测试用例执行如果须要去配置那先 资源,执行如果须要去释放资源。比如module类型的fixture,适合于那先 许多测试用例都只须要执行一次的操作。

fixture还提供了参数化功能,根据配置和不同组件来选泽不同的参数。

fixture主要的目的是为了提供并须要可靠和可重复性的手段去运行那先 最基本的测试内容。比如在测试网站的功能时,每个测试用例须要登录和退出,利用fixture就都须要只做一次,何如让每个测试用例须要做这两步也是冗余。

pytest 提供的 fixture 实现 unittest 中 setup/teardown 功能,都须要在每次执行case如果初始化数据。不同点是,fixture 都须要只在执行某有几只特定 case 前运行,只须要在运行 case 前调用即可。比 setup/teardown 使用起来更灵活。上一篇讲到用例加setup和teardown都须要实现在测试用例如果或如果加入许多操作,但你你这种是整个脚本全局生效的,何如让我想实现以下场景:用例1须要先登录,用例2不须要登录,用例3须要先登录。很显然这就无法用setup和teardown来实现了。这太少 本篇学习的目的,自定义测试用例的预置条件

2. fixture scope 作用范围

 先看下 fixture 函数的定义:

  使用装饰器标记fixture的功能 都须要使用此装饰器(带或不带参数)来定义fixture功能。 fixture功能的名称都须要在如果使用 引用它会在运行测试如果调用它:test模块或类都须要使用pytest.mark.usefixtures(fixturename标记。 测试功能都须要直接使用fixture名称作为输入参数,在你你这种清况 下,夹具实例从fixture返回功能将被注入。

def fixture(scope="function", params=None, autouse=False, ids=None, name=None):
    """
    :arg scope:    可选四组参数:function(默认)、calss、module、package/session

    :arg params:   有1个多可选的参数列表,它将原困多个参数调用fixture函数和所有测试使用它。

    :arg autouse:  何如让为True,则fixture func将为所有测试激活都须要看得人它。何如让为False(默认值),则须要显式激活fixture。

    :arg ids:      每个参数对应的字符串id列表,何如让它们是测试id的一次要。何如让这么

提供id,它们将从参数中自动生成。

    :arg name:     fixture的名称。 这默认为装饰函数的名称。 何如让fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽; 解决你你这种间题的并须要最好的土方式是将装饰函数命名 “fixture_ <fixturename>”何如让使用”@ pytest.fixture(name ='<fixturename>')”。
  """

 重点说下 scope 四组参数的意义:

  • function:每个最好的土方式(函数)一定会执行一次。

  • class:每个类一定会执行一次。类富含多个最好的土方式调用,只在第有1个多最好的土方式调用时执行。

  • module:有1个多 .py 文件执行一次。有1个多.py 文件何如让富含多个类和最好的土方式。

  • package/session:多个文件调用一次,都须要跨 .py 文件。

 在所须要调用的函数前面加个装饰器 @pytest.fixture()。举有1个多简单的例子:

3. fixture 优点

1.firture相对于setup和teardown来说应该有以下几点优势:

  • 命名最好的土方式灵活,不局限于setup和teardown这有几只命名
  • conftest.py 配置里都须要实现数据共享,不须要import就能自动找到许多配置
  • scope=”module” 都须要实现多个.py跨文件共享前置
  • scope=”session” 以实现多个.py跨文件使用有1个多session来完成多个用例

4. fixture参数传入(scope=”function”)

之类太少 的测试场景:宏哥这里就拿博客园举个例子:

测试用例1:须要登录博客园,发布随笔

测试用例2:不须要登录博客园,浏览文章

测试用例3:须要登录博客园,删除随笔

4.1 代码实现:

把有1个多函数定义为Fixture很简单,不到在函数声明如果打上去“@pytest.fixture”。许多函数要来调用你你这种Fixture,只用把它当做有1个多输入的参数即可。

4.2 参考代码:

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般中放第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2020-1-09
@author: 北京-宏哥
Project:《带你装B,带你飞》pytest修仙之路4 - fixture简介 & yield
'''
# 3.导入模块
#  content of  test_bjhg_class1.py

import pytest

# 不带参数时默认scope="function"
@pytest.fixture(scope='function')
def login():
    print("登录博客园")

def test_1(login):
    print('测试用例1,登录博客园如果发布随笔111')

def test_2():
    print('测试用例2,不须要登录博客园,浏览文章222')

def test_3(login):
    print('测试用例2,登录博客园如果删除随笔333')
if __name__ == "__main__":
    pytest.main(["-s", "test_bjhg_class1.py"])

4.3 运行结果:

运行代码后,控制台打印如下图的结果

下面是运行结果,test_1和test_3运行如果都调用了login,也太少 login执行了两次。默认清况 下,fixture是每个测试用例何如让调用了该fixture就会执行一次的。

2.何如让@pytest.fixture()后边这么 参数,这么 默认scope=”function”,也太少 此时的级别的function,针对函数有效。

5. conftest.py配置

5.1 conftest.py配置须要注意以下点:

conftest.py配置脚本名称是固定的,不到改名称

conftest.py与运行的用例要在同有1个多pakage下,何如让有init.py文件

不须要import导入 conftest.py,pytest用例会自动查找

1.后边有1个多测试场景是在同有1个多.py文件中,多个用例调用有1个多登陆功能,何如让有多个.py的文件都须要调用你你这种登陆功能得话,那就不到把登陆写到用例后边去了。

此时应该要有有1个多配置文件,单独管理许多预置的操作场景,pytest后边默认读取conftest.py后边的配置

5.2 conftest.py

5.2.1 代码实现:

5.2.2 参考代码:
# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般中放第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2020-1-09
@author: 北京-宏哥
Project:《带你装B,带你飞》pytest修仙之路4 - fixture简介 & yield
'''
# 3.导入模块
#  content of  conftest.py

import pytest

# 不带参数时默认scope="function"
@pytest.fixture(scope='function')
def login():
    print("登录博客园")

5.3.1 代码实现:

5.3.2 参考代码:
# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般中放第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2020-1-09
@author: 北京-宏哥
Project:《带你装B,带你飞》pytest修仙之路4 - fixture简介 & yield
'''
# 3.导入模块
#  content of  test_fix1.py

import pytest

def test_1(login):
    print('测试用例1,登录博客园如果发布随笔111')

def test_2():
    print('测试用例2,不须要登录博客园,浏览文章222')

def test_3(login):
    print('测试用例2,登录博客园如果删除随笔333')
if __name__ == "__main__":
    pytest.main(["-s", "test_fix1.py"])
5.3.3 运行结果:

运行代码后,控制台打印如下图的结果

5.4.1 代码实现:

5.4.2 参考代码:
# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般中放第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2020-1-09
@author: 北京-宏哥
Project:《带你装B,带你飞》pytest修仙之路4 - fixture简介 & yield
'''
# 3.导入模块
#  content of  test_fix2.py

import pytest


def test_4(login):
    print('测试用例4,登录博客园如果修改头像444')

def test_5():
    print('测试用例5,不须要登录博客园,浏览首页555')

def test_6(login):
    print('测试用例6,登录博客园如果保存随笔666')
if __name__ == "__main__":
    pytest.main(["-s", "test_fix2.py"])
5.4.3 运行结果:

运行代码后,控制台打印如下图的结果

6. 小结

  让你的程序经常再次出现了下面的错误,太少 如果刚开使忘记打上去‘import pytest',太少有暂且忘记哦。

=================================== ERRORS ====================================
_________________ ERROR collecting test_fixture_decorator.py __________________
test_fixture_decorator.py:2: in <module>
    @pytest.fixture()
E   NameError: name 'pytest' is not defined
!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!
=========================== 1 error in 0.36 seconds ===========================

  好了,今天的分享就到这里吧!!!谢谢各位的耐心阅读。有间题加群交流讨论!!!

您的肯定太少 我进步的动力。让你感觉还不错,就请鼓励一下吧!记得随手点波  推荐  暂且忘记哦!!!

别忘了点 推荐 留下您来过的痕迹

猜你喜欢

分分pk10在线官网 _陆金所联手杜蕾斯:理财跟爱情一样重要

 昨日(9月15日),分分pk10在线官分分pk10在线官网 网 陆金所与杜蕾斯签订公司合作 者者协议,分分pk10在线官网 将互联网投资理财行为与健康分分pk10在线官网

2020-06-02

极速快3直播_教你毫不费力洗掉手上的油污

以前家中要常备……卫生间 中难免会接触到油污,如何去除油污是个让我头痛的什么的问题。下面你这俩人发现了并不是新的去油辦法 ,那随后……清水无法洗去手上的油污 使用洗手液

2020-06-02

好运时时彩注册邀请码_ 开车一族必备的8个养生小知识

长期开车也会带来不少健康隐患。对好运时时彩注册邀请码于中年人群来讲,更应当要重视。今天小编就为我们搜集了开车一族必备的8个养生小知识!搞懂来跟我们分享下。1开车体能消耗较少,平

2020-06-02

分分pk10诀窍 _公牛IPO辅导完成:公牛集团终于要上市了

 盛世之下必有隐忧,今天亲们又趋于稳定1个多多创新突破的时代,任何的颠覆都很正常分分pk10诀窍 。竞争对手不止来源同行业,跨界竞争对手出现也很有日后 ,说不定不小心就颠覆了

2020-06-02

5分pk10下载安装_不用出国,福州这7家美食餐厅让你畅享亚洲美食!

 LittleIndia印度尼泊尔菜推荐理由:不不远行在福州就可以吃到正5分pk10下载安装宗的尼泊尔菜,没错是“正宗”!尼泊尔美食的“灵魂”是咖喱,不同于泰式咖喱浓郁的奶味,

2020-06-02