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();
}
По този начин, блокът за почистване или освобождаване на ресурса се изпълнява гарантирано след теста, дори ако тестът е неуспешен с грешка.