you can simplify this quite a bit by generating the test data from a list comprehension (which helps make it clear what the function is supposed to do):

self.correct_data_small = np.array(
              [('othello', 1603, 'brave', 3),
             ('othello', 1603, 'attended', 1),
             ('othello', 1603, 'treason', 1),
             ('othello', 1603, 'islanders', 1),
             ('othello', 1603, 'heed', 3),
             ('othello', 1603, 'alehouse', 1),
             ('othello', 1603, 'corrigible', 1),
             ('othello', 1603, 'brawl', 2),
             ('othello', 1603, "'", 17),
             ('othello', 1603, 'troubled', 1)
            ], 
dtype=[('corpus', 'O'),
                  ('corpus_date', '<i8'),
                   ('word', 'O'),
                   ('word_count', '<i8')])
self.test_data_small = [{'f': [{'v': str(elem)} for elem in row]} for row in self.correct_data_small]