Same problem as before, you are only looping on threes which is ok but you have the keep going on the strand for the leftovers at the end. This fails on the following: 

Test 1 FAILED: 
Input DNA: ATGCATGAATGTAGATAGATGTGCCC
Expected Output: ['ATGCATGAATGTAGA', 'ATGTGCCC']
Actual (your) Output: ['ATGCATGAATGTAGA', 'ATGTGC']
Test 2 FAILED: 
Input DNA: ATGCCCGGGTATCCGGAAATAG
Expected Output: ['ATGCCCGGGTATCCGGAAATAG']
Actual (your) Output: ['ATGCCCGGGTATCCGGAAATA']
Test 3 FAILED: 
Input DNA: CCGTTTATGCCGTAGTTAGACATGCCCGAGTAAGCGATGTTTATAGGGC
Expected Output: ['ATGCCG', 'ATGCCCGAG', 'ATGTTTATAGGGC']
Actual (your) Output: ['ATGCCG', 'ATGCCCGAG', 'ATGTTTATAGGG']
FAILED - find all ORFs one frame