Lab 4: Using Conditionals to Disable Testing Code
Disabling test work
When writing problem set code, unless you test all your functions via the console, you may have test invocations in your code.
For example, if you were tasked with creating a function called calculateTip, you might have the following test invocations in your file:
calculateTip(22) # Expected: 4.4 calculateTip(45.05) # Expected: 9.01 calculateTip(0) # Expected: 0
These test invocations are an important part of your work process, but they may create output that interferes with our automatic testing of your code.
Therefore, your problem set code should disable any test invocations. Of course, the most straightforward way to do this is simply delete any test lines.
Alternatively, you can use one of the following two methods:
Method 1A. “Comment out line-by-line”
#print("Start of testing.") #diamondPattern() #print("Done with testing.")
Method 1B. “Comment out with triple quotes”
""" print("Start of testing.") diamondPattern() print("Done with testing.") """
In both Method 1A and 1B, the last three lines are effectively “turned off” because they're commented out; Python will ignore them regardless of the context in which the file is run. Note that if you're using option 1B, the starting triple-quote must still be indented at the right level (it should match the indentation of the first line of code in your "comment").
Method 2. Test function
As you have seen in many of our provided starter files, another solution is to
put all of your code in a function called
test. Then you can call this
test function to test your code!
To streamline things even more, you can use a special conditional to invoke
test function whenever the file is run, but NOT when we import it to
grade it. To achieve this, invoke your
test function inside a conditional
where the condition is that the special variable
__name__ is equal to the
Details: Why does this work?
__name__ variable tells Python the name of the current module, and
'__main__' is used when we're in the file that's being run instead of a file
that's imported. So for example, if you opened up a copy of
and clicked "Run", the
__name__ variable would be set to
that code. But if you instead run a different file that uses
from turtleBeads import *, during the same code (now being imported), the
will hold the value
This is why if you do run the
turtleBeads file you'll see a bunch of tests
happen, but those same tests don't run when you import the module to use it,
which would be inconvenient.
The above methods have the same effect in their ability to enable/disable your tests. Choose the one that best fits your taste.
And if you prefer to run all your test invocations from the shell, you don't have to worry about any of this.
Table of Contents
- Lab 4 Home
- Part 0: Warm up worksheet
- Part 1: Predicates and Functions
- Part 2: Conditionals
- Part 3: [OPTIONAL] Buzzfeed-style quiz
- Knowledge Check