Q:

Testing if "i" is not "x" or "y" (Python3)

I'm trying to check if "i" is not equal to "test" or "test2". If I set "i" to str("test") or str("test2) then it will say "i is not test or test2", and if I set "i" to something else like str("x") it functions normally.
    if str(i) != str("test") or str("test2"):
      print ("i is not test or test2")
    else:
      print ("i is test or test2")

A:

The or statement doesn't works like that, or operator requires boolean  as the two operands, but in your case, the or is applied to a boolnea and str operator. The Python doesn't raises exception in this case, and internally converts the str to True value and processes the or operand.
Now you have two options, either you rectify your if statement as: 
if str(i) != str("test") or str(i) !=str("test2"):
    print ("i is neither test not test2")

Or you may use:
if str(i) not in {str("test"), str("test2")}:
    print ("i is neither test not test2")

