Pytest学习笔记3-fixture

个人认为,fixture是pytest最精髓的地方,也是学习pytest必会的知识点。

fixture用途

用于执行测试前后的初始化操作,比如打开浏览器、准备测试数据、清除之前的测试数据等等

用于测试用例的前置条件,比如UI自动化的登录操作,读取config参数等

用于测试用例之间的参数和数据传递

fixture优势

firture相对于unittest中的setup和teardown来说应该有以下几点优势

命名方式更加的灵活,不局限于setup和teardown

conftest.py 配置里可以实现数据共享,不需要import就能自动找到一些配置

scope="module" 可以实现多个.py跨文件共享前置, 每一个.py文件调用一次

scope="session" 以实现多个.py跨文件使用一个session来完成多个用例

fixture语法 fixture(callable_or_scope=None, *args, scope="function", params=None, autouse=False, ids=None, name=None)

scope:fixture的作用域,默认为function

autouse:默认为False,表示需要用例手动调用该fixture;当为True时,表示所有作用域内的测试用例都会自动调用该fixture

name:装饰器的名称,同一模块的fixture相互调用建议使用不同的name

fixture定义

fixture通过@pytest.fixture()装饰器装饰一个函数,这个函数就是一个fixture,实例如下:

# test_fixture.py import pytest @pytest.fixture() def fixtureDemo(): return "一个fixture" def test_fixture(fixtureDemo): print("测试用例执行时调用了{}".format(fixtureDemo)) if __name__ == "__main__": pytest.main(['-v', 'test_fixture.py'])

执行结果如下:

image-20210622175407924

fixture调用

调用fixture有三种方式

fixture名字作为用例函数的参数

使用@pytest.mark.usefixtures('fixture名称')装饰器

使用autouse参数

fixture名字作为用例函数的参数

将fixture名称作为参数传入测试用例,如果fixture有返回值,那么测试用例将会接收返回值

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydxdw.html