Hi @lglen2 ,
I don't know of a way to do this automatically, but I can think of a way that might work for you if you use weighted Assignment Groups.
Put all of the actual assessments in a AG with a weight of 0%. Set each assessment to have unlimited attempts.
Create a "No Submission" assignment in each respective module/unit that is in an appropriate weighted AG.
Students take the assessments until they earn an "acceptable" score. Depending on your course policy/desire, either they contact you or you monitor their scores. As soon as a student achieves a score that is ready to be counted in the grade, you manually input that score into the corresponding "No Submission" assignment in that unit. Only that score is used in the course grade calculation.
Regarding taking the assessments in order, you would create an assessment module with all of the (actual) assessments in order and with the requirements set so that they need to be taken in order. This module would be separate from your unit modules and would not be a prerequisite to any other module. Its requirements would apply only within itself.
The "No Submission" assignments that contain the actual scores would not need to be placed in a module at all; they would just be in the background and appear in the Gradebook. In your unit module you could place a link to the corresponding assessment in the assessment module, or even just a Text Header prompting them to go to the assessment module to take the test.
This set-up might be confusing for students at first, but in the long run it is a much fairer system for them, and I think they will learn to appreciate it.