Как pytest выполняет метод tearDown при параллельном запуске теста?

Я столкнулся с проблемой при запуске pytest в parrellel, когда класс взаимодействует с mongodb. Когда pytest запускается время от времени, один из методов завершается сбоем без данных, возвращаемых из Монго. Я подозреваю, что происходит, когда метод teardown выполняется параллельно с другими методами, которые удаляют базу данных. Добавление time.sleep(2) в teardown решает проблему ложноположительного теста, но я надеюсь, что есть лучший способ справиться с этим. Какие-нибудь мысли?

`

TEST_COLLECTION = { ...}

class TestPage(unittest.TestCase):

    def setup(self):
        self.client = pymongo.MongoClient()
        self.db = self.client[TEST_DB]
        self.page = Page(db=TEST_DB)

    def _setup_archive(self):
        self.db[TEST_DB].insert_one(TEST_COLLECTION)

    def _setup_delete(self):
        self.db[TEST_DB].insert_one(TEST_COLLECTION)

    def test_archive(self):
       """retrieves test document from mongo and compares to 
       document uploaded to s3 by page.archive_mongo"""
       self._setup_archive()
       self.page.archive_mongo(collections=TEST_COLLECTION)

       mongo_doc = get_test_doc_from_database()
       s3_doc = get_doc_from_s3()
       self.assertEqual(mongo_doc, s3_doc)

    def test_delete(self):
        self.page.delete_collections()
        deleted_collection = mongo.find({deleted_collection})
        self.assertFalse(deleted_collection)

    def tearDown(self):
        self.client.drop_database(TEST_DB)

`

0 ответов

Другие вопросы по тегам