Sobes.tech
Junior — Middle

Как може да се осигури извикването на фикстурата след приключване на теста или скрипта?

sobes.tech AI

Отговор от AI

За да осигурите извикването на функцията за почистване след приключване на теста или скрипта, обикновено се използват механизми като teardown или финализатори, които гарантират изпълнението на кода за почистване независимо от резултата от теста.

В популярните тестови рамки това се реализира чрез специални методи или декоратори:

  • В pytest може да се използва фикстура с параметъра yield:
import pytest

@pytest.fixture
def resource():
    # настройка
    res = acquire_resource()
    yield res
    # почистване
    release_resource(res)
  • В unittest (Python), методът tearDown() се извиква след всеки тест:
import unittest

class MyTest(unittest.TestCase):
    def setUp(self):
        self.res = acquire_resource()

    def tearDown(self):
        release_resource(self.res)

    def test_something(self):
        self.assertTrue(use_resource(self.res))
  • В Java с JUnit се използват анотациите @After или @AfterEach:
@After
public void tearDown() {
    releaseResource();
}

По този начин, блокът за почистване или освобождаване на ресурса се изпълнява гарантирано след теста, дори ако тестът е неуспешен с грешка.