Я хотел бы передать аргумент командной строки, строку, представляющую адрес, в мои интеграционные тесты для моей службы на основе определения местоположения.Эти тесты вызываются из тестового прогона run_tests.py
.
import argparse
import unittest
import mycity.test.integration_tests.test_snow_emergency_parking as snow_parking
import mycity.test.integration_tests.test_trash_intent as trash_intent
import mycity.test.integration_tests.test_unhandled_intent as unhandled_intent
import mycity.test.integration_tests.test_get_alerts as get_alerts
import mycity.test.unit_tests.test_finder_csv as finder_csv
import mycity.test.unit_tests.test_mycity_controller as my_controller
import mycity.test.unit_tests.test_address_utils as address_utils
import mycity.test.unit_tests.test_google_maps_utils as g_maps_utils
import mycity.test.unit_tests.test_csv_utils as csv_utils
import mycity.test.unit_tests.test_gis_utils as gis_utils
TEST_CASES = [ my_controller.MyCityControllerUnitTestCase,
g_maps_utils.TestGoogleMapsUtilities,
address_utils.AddressUtilitiesTestCase,
csv_utils.CSVUtilitiesTestCase,
gis_utils.GISUtilitiesTestCase,
finder_csv.FinderCSVTestCase,
get_alerts.GetAlertsTestCase,
trash_intent.TrashDayTestCase,
unhandled_intent.UnhandledIntentTestCase,
snow_parking.SnowEmergencyTestCase
]
def load_tests():
suite = unittest.TestSuite()
loader = unittest.TestLoader()
for test_case in TEST_CASES:
suite.addTests(loader.loadTestsFromTestCase(test_case))
return suite
if __name__ == "__main__":
test_suite = load_tests()
runner = unittest.TextTestRunner()
runner.run(test_suite)
Вот базовый класс, который мой подкласс тестов интеграции.Прямо сейчас я жестко закодировал адрес.Я хотел бы присвоить аргумент cmd-line для self.request._session_attributes[key]
.
import unittest
import unittest.mock as mock
import mycity.intents.intent_constants as intent_constants
import mycity.mycity_controller as my_controller
import mycity.mycity_request_data_model as req
import mycity.test.test_constants as test_constants
###############################################################################
# TestCase parent class for all intent TestCases, which are integration tests #
# to see if any changes in codebase have broken response-request model. #
# #
# NOTE: Assumes that address has already been set. #
###############################################################################
class IntentBaseCase(unittest.TestCase):
intent_to_test = None
returns_reprompt_text = False
def setUp(self):
self.controller = my_controller
self.request = req.MyCityRequestDataModel()
key = intent_constants.CURRENT_ADDRESS_KEY
self.request._session_attributes[key] = "1000 Dorchester Ave"
self.request.intent_name = self.intent_to_test
def tearDown(self):
self.controller = None
self.request = None