this fails on some tests as well due to the above functions' flaws. 

Test 2 FAILED: 
Input DNA: GCATGCATGGGTTATATCATGAAATAG
Expected Output: ['ATGCATGGGTTATATCATGAAATAG', 'ATGGGTTATATCATGAAA', 'ATGATA', 'ATGCATGC', 'ATGC']
Actual (your) Output: ['ATGCATGGGTTATATCATGAAATAG', 'ATGGGTTATATCATGAAA', 'ATGAAA', 'ATGATA', 'ATGCATGC', 'ATGC']
Test 3 FAILED: 
Input DNA: CTACTAATGGCCCATAAACATC
Expected Output: ['ATGTTTATGGGCCAT', 'ATGGCCCATAAACATC']
Actual (your) Output: ['ATGGCCCATAAACATC', 'ATGTTTATGGGCCAT', 'ATGGGCCAT']
FAILED - finds all ORFs all frames, reverse strand included