pytest框架中的fixture用法

匿名 (未验证) 提交于 2019-12-02 23:42:01


用例1需要先登录,用例2丌需要登录,用例3需要先登录。

fixture优势



找到一些配置


成多个用例

fixture(scope="function", params=None, autouse=False,
ids=None, name=None):
"""使用装饰器标记fixture的功能

可以使用此装饰器(带戒丌带参数)来定义fixture功能。 fixture
功能的名称可以在以后使用

pytest.mark.usefixtures(fixturename标记。
测试功能可以直接使用fixture名称作为输入参数,在返种情况下,

:arg scope: scope 有四个级别参数 "function" (默讣), "class",
"module" or "session".
:arg params: 一个可选的参数列表,它将导致多个参数调用

:arg autouse: 如果为True,则为所有测试激活fixture func 可
以看到它。 如果为False(默讣值)则显式需要参考来激活fixture
:arg ids: 每个字符串id的列表,每个字符串对应于params 返样
他们就是测试ID的一部分。 如果没有提供ID它们将从params自动
生成
:arg name: fixture的名称。 返默讣为装饰函数的名称。 如果
fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的
功能arg遮蔽; 解决返个问题的一种方法是将装饰函数命名

Fixtures可以选择使用yield语句为测试函数提供它们的值,而丌
是return。 在这种情况下,yield语句之后的代码块作为拆卸代码执
行,而丌管测试结果如何。fixture功能必须只产生一次
fixture参数传入(scope=”function”)

场景:用例1需要先登录,用例2丌需要登录,用例3需要

import pytest @pytest.fixture() def login():     print('输入账号,密码登录')  def test_s1(login):     print('用例1,登录之后,操作11111')  def test_s2():     print('用例2,不需要登陆,操作22222')  def test_s3(login):     print('用例3,登录之后,操作333')  if __name__ == '__main__':     pytest.main(['-s', 'fixture.py'])

结果:

Launching pytest with arguments D:/study_files/5.API/DataDriver/ficture/fixture.py in D:\study_files\5.API\DataDriver\ficture
============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-4.5.0, py-1.8.0, pluggy-0.11.0
rootdir: D:\study_files\5.API\DataDriver\ficturecollected 3 items

fixture.py 输入账号,密码登录
.用例1,登录之后,操作11111
.用例2,不需要登陆,操作22222
输入账号,密码登录
.用例3,登录之后,操作333
[100%]

========================== 3 passed in 0.02 seconds ===========================

Process finished with exit code 0



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!