Попробуйте модуль полки, который даст вам постоянный словарь, например:
import shelve
d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }
shelf = shelve.open('shelf_file')
for key in d:
shelf[key] = d[key]
shelf.close()
....
# reopen the shelf
shelf = shelve.open('shelf_file')
print(shelf) # => {'qwerty': [4, 5, 6], 'abc': [1, 2, 3]}
Если вы ссылаетесь на одноэлементный класс, который существует за пределами тестируемого класса, то у вас больше не будет истинного модульного теста. Вместо того, чтобы тестировать одну единицу - целевой класс - вы теперь тестируете две единицы - целевой класс и синглтон.
Существует также тот факт, что одиночные объекты имеют тенденцию иметь состояние. Чтобы модульные тесты были повторяемыми, эти изменения состояния необходимо откатить после завершения модульного теста. В качестве альтернативы, вы должны создать фиктивную версию синглтона, которая будет уничтожена после каждого теста. Либо добавляет изрядное количество накладных расходов, как в исходном коде, так и во время выполнения.
Этот Google Techtalk довольно неплохо описывает проблемы с одиночками и глобальным состоянием, когда дело доходит до модульного тестирования.