add `has_option` test for options added normally
make sure shadowing works
replace assertRaises with try, except, else blocks for clarity