def run_all_tests_for_package(self, package): # Common tests to be run on each package suite = [] test_loader = opus_unittest.TestLoader() TestForSQLPassword.modul = package TestPackageSyntax.modul = package suite += test_loader.loadTestsFromTestCase(TestForSQLPassword) suite += test_loader.loadTestsFromTestCase(TestPackageSyntax) test_suite = opus_unittest.TestSuite(suite) opus_unittest.TextTestRunner(verbosity=2).run(test_suite) #TestForSQLPassword(package_name = package).test_no_sql_password_in_files() #TestPackageSyntax(package_name = package).test_no_opus_syntax_violations() # Default loader = PackageTestLoader().load_tests_from_package xml_file_name = 'TEST_all_tests.xml' # Unlike 2.3, Python 2.4 complains about MySQL warnings. # We don't want to hear it. filterwarnings('ignore', "Can't (create|drop) database '[^']*'; ") filterwarnings('ignore', "Unknown table '[^']*'") filterwarnings('ignore', "Table '[^']*' already exists") # Will we do integration tests? for opt in sys.argv: if opt in ('-i','-I','--integration'): sys.argv.remove(opt) loader = PackageTestLoader().load_integration_tests_from_package xml_file_name = 'TEST_all_integration_tests.xml' loader(package) output_as_xml = False for opt in sys.argv: if opt in ('-x','-X','--xml'): sys.argv.remove(opt) output_as_xml = True if output_as_xml: file_path = os.path.join(OpusPackage().get_path_for_package(package), 'tests', xml_file_name) opus_unittest.main(testRunner=OpusXMLTestRunner(package, stream=open(file_path, 'w'))) else: opus_unittest.main(testRunner=OpusTestRunner(package))
from opus_core.tests import opus_unittest from opus_core.tests.utils.variable_tester import VariableTester from numpy import array class Tests(opus_unittest.OpusTestCase): def test_my_inputs(self): tester = VariableTester( __file__, package_order=['urbansim'], test_data={ 'gridcell':{ 'grid_id': array([1,2,3,4]), 'relative_x': array([1,2,1,2]), 'relative_y': array([1,1,2,2]), 'number_of_jobs': array([100, 500, 1000, 1500]), }, 'urbansim_constant':{ "walking_distance_circle_radius": array([150]), 'cell_size': array([150]), } } ) should_be = array([1800, 3100, 4600, 6000]) tester.test_is_equal_for_variable_defined_by_this_module(self, should_be) if __name__=='__main__': opus_unittest.main()
from urbansim.variable_test_toolbox import VariableTestToolbox from numpy import array from numpy import ma class Tests(opus_unittest.OpusTestCase): variable_name = "urbansim.zone.vacant_industrial_job_space" def test_my_inputs(self): number_of_industrial_jobs = array([12, 0, 39, 0]) industrial_sqft = array([1200, 16, 3900, 15]) industrial_sqft_per_job = array([20, 3, 30, 0]) values = VariableTestToolbox().compute_variable(self.variable_name, { "zone": { "number_of_industrial_jobs": number_of_industrial_jobs, "industrial_sqft": industrial_sqft, "industrial_sqft_per_job": industrial_sqft_per_job } }, dataset="zone") should_be = array([48.0, 5.0, 91.0, 0.0]) self.assertEqual(ma.allequal(values, should_be), True, msg="Error in " + self.variable_name) if __name__ == '__main__': opus_unittest.main()