pytest学习指南-fixture基本使用

Posted hn-daxiong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest学习指南-fixture基本使用相关的知识,希望对你有一定的参考价值。

1.前言

        自动化测试本质属于软件测试活动中的一种方法,更多的是替代手工测试执行过程中重复的工作。所以自动测试和手工测试最大的区别在于执行测试用例的方式不一样。

        在执行测试用例前往往需要进行环境的准备。

   在unittest中一般通过 setUp与tearDown来进行用例前的环境准备和用例后的环境销毁。而在pytest中还有另外一种方式——fixture。与setup和teardown相比,fixture使用起来更加灵活,更加炫酷。

 

2.Fixture的使用

     1.基本使用--fixture与用例处在同一个文件中

import pytest
def test_2(aa):        #选择执行那个fixture
assert 2==2
print("我是测试用例")

@pytest.fixture()
def aa():
print("先执行我")
yield #类似分隔符号 yield 上面的代码表示用例执行前 下面的表示用例执行之后
print("执行完用例后再执行我")
@pytest.fixture()
def bb():
print("执行我把")
if __name__ == __main__:
pytest.main([
"-s"])
  •  pytest 首先会检测到 fixture 函数, 并在运行测试函数之前先执行fixture,这里注意的是可以在一个文件中设置多个fixture,用例可以自行选择执行那个fixture
  • pytest中的环境准备和环境销毁(也就是unittest中的setup和teardown)是写在同一个函数中,用yield进行分隔

 2.conftest.py实现多个文件中共享fixture

 conftest.py文件

cimport pytest


    @pytest.fixture      #声明它下面的函数是一个pytest的前置后置
    def aa():
        print("先执行我")
        yield
        print("执行完用例后再执行我")

    @pytest.fixture
    def bb():
        print("执行我把")

test_demo.py文件

@pytest.mark.usefixtures("aa")  #表示调用名为aa的前置后置
def test_2():
assert 2==2
print("我是测试用例")

 

注意:当@pytest.mark.usefixtures放到class上指该类下所有用例都执行

以上是关于pytest学习指南-fixture基本使用的主要内容,如果未能解决你的问题,请参考以下文章

Pytest之fixture

33-pytest-内置fixture之pytestconfig使用

pytest学习和使用13-Pytest的fixture如何使用request传入参数?

pytest学习和使用13-Pytest的fixture如何使用request传入参数?

pytest学习和使用6-fixture如何使用?

pytest学习和使用6-fixture如何使用?