Написание модульных тестов PyTest для скрипта, которые случайным образом выбирают фреймы данных?

Я работаю над написанием модульных тестов для своего проекта, который обрабатывает данные. Однако у меня есть несколько скриптов, которые берут CSV, объединяют их с Pandas, а затем выбирают их случайным образом для создания наборов для обучения / разработки / тестирования для задач машинного обучения.

Я пишу модульные тесты, которые генерируют несколько случайных файлов CSV для тестирования. Но как я могу создать справочные данные для того, что ДОЛЖНО быть возвращено из сценария, который я пытаюсь проверить?

# Example of my test setup:

@pytest.fixture
def create_reference_input_data():
# Create some random CSV strings and make some test input data CSVs

@pytest.fixture
def create_reference_output_data():
# create some fake output data from the data that was created in create_reference_input_data()
# this output data should be like what I am expecting from the script I am testing
# I will be using this data to assert to what is produced from the script I am testing.
return reference_train_df, reference_test_df, reference_dev_df

def test_collect_data(create_reference_output_data):
# Run the script that I am testing for. It generates randomly sampled data from concatenated CSV datas like what would be created in create_reference_input_data() fixture.
# CSV data to make train/test/dev splitted CSV data.
test_data = collect_data(input_path, output_path, test_split = .10, dev_split = .20)

for file1_row, file2_row in zip(reference_output_data, test_data):
    assert file1_row == file2_row # assert lines of text are the same in reference and test

Надеюсь, этот псевдокод имеет смысл. Я понимаю закладку семян, а что нет. Но как я могу вручную создать некоторые тестовые данные для того, что ДОЛЖЕН производить мой сценарий, и утверждать, что это именно то, что на самом деле создается, когда я вызываю этот сценарий?

0 ответов

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