PART IIIΒΆ
How to write good test cases: <link> - Let’s work on an example: $ bzr branch lp:~utah/utah/utah_ls_example - Look at the ts_control file There are both a setup and a cleanup command - Look at ts_util.py sys.path used to import from common module - Look at the common module
- STATE_FILE, DATA_FILE defined in terms of the module’s directory
- run_cmd used as a method to run a command and get stdout, stderr and returncode.
- setup_logging
- get_testfiles_data: Used to get the data used by the test cases
- Look at data.json: contains filenames and permissions (both in octal number and as string)
- Look again at ts_util.py - setup: create directory and files according to the information in the data file
Note: The creation of a tmp directory is something that will be commonly needed and worth having in a library. - Look at permissions/tc_control action and expected results describe what the test does. - Look at permissions.py
- sys.path used to import from common
- Using unittest module
- Look at runTest method
- Directory and files exist
- Permission string for every file is also correct
- Look at dotfiles/tc_control
action and expected results describe what the test does. - Look at dotfiles.py
- Directory exists
- Dot files are there
Note: We’re not using the unittest runner on purpose. Note: Quite a lot of discussion of whether unittest only for the assertions should be a good practice because it’s confusing. Question: Do you have a skeleton file to encourage users to follow best practice? - Edit master.run - Run Two test case passes Feature request: sudo utah -r . (Run test suite and cases without any master.run file)