Мне нужно написать полностью воспроизводимый тест Word2Ve c и установить фиксированное значение PYTHONHASHSEED. Это мой нынешний сет-йп
# conftest.py
@pytest.fixture(autouse=True)
def env_setup(monkeypatch):
monkeypatch.setenv("PYTHONHASHSEED", "123")
# test_w2v.py
def test_w2v():
assert os.getenv("PYTHONHASHSEED") == "123"
expected_words_embeddings = np.array(...)
w2v = Word2Vec(my_tokenized_sentences, workers=1, seed=42, hashfxn=hash)
words_embeddings = np.array([w2v.wv.get_vector(word) for word in sentence for sentence in my_tokenized_sentences)])
np.testing.assert_array_equal(expected_words_embeddings, words_embeddings)
Вот любопытная вещь.
Если я запускаю тест из терминала, выполняя PYTHONHASHSEED=123 python3 -m pytest test_w2v.py
, тест проходит без проблем. Однако, если я запускаю тест из PyCharm (используя pytest, настроенный из Edit Configurations -> Templates -> Python tests -> pytest), то он терпит неудачу. Самое интересное, что это не ошибка на assert os.getenv("PYTHONHASHSEED") == "123"
, но это ошибка на np.testing.assert_array_equal(expected_words_embeddings, words_embeddings)
Почему это может быть так, и есть ли способ исправить эту проблему?