我有一个带有主要功能的python flask应用程序,其中包含一个名为mongo_db的变量:
@app.route('/v5/spp/analyze/jobs', methods=['POST'])
def create_analyze_job():
req_data = request.get_json()
logging.info('Adding job to queue')
request_id = mongo_db[instance_manager.settings['mongodb_connections'
['queue_collection']].insert_one(
req_data).inserted_id
logging.info(
f'Added job {request_id} to queue to collection {instance_manager.settings["mongodb_connections"]["queue_collection"]}')
res_obj = {'request_id': str(request_id), "ver": "1.02"}
resp = Response(json.dumps(res_obj), status=200, mimetype='application/json')
return resp
if __name__ == '__main__':
default_region = os.environ.get('AWS_REGION') # for dev porpuses
instance_manager = InstanceManager.getInstance()
instance_manager.init_mongodb()
region = cloudwatch.get_instance_region()
log_cloudwatch(region)
mongo_db = instance_manager.asr_queue_db_execute.get_db()
app.run(debug=True if env is None else False, port=5000, host='0.0.0.0'
我正在尝试使用python unittest测试“创建分析工作”功能:
class ProducerTestCase(unittest.TestCase):
def setUp(self):
self.app = producer.app.test_client()
self.app.testing = True
self.app.debug = True
def send_post_request(self, url, data, method="POST"):
if method == "POST":
response = self.app.post(url, data=json.dumps(data), content_type='application/json')
status_code = response.status_code
response = json.loads(response.data)
return response, status_code
def test_analyze_job(self):
adding_job_url = BASE_URL + "/v1/stt/analyze/jobs"
adding_job_response, adding_job_status_code = self.send_post_request(adding_job_url, valid_data_analyze_job)
adding_job_passed = (adding_job_status_code == 200) and ("request_id" in adding_job_response)
self.assertTrue(adding_job_passed)
当我运行单元测试时,我得到一个异常,说明未定义mongo_db变量(因为它不是全局变量,仅在main func中定义)。 我的问题是:有没有一种方法可以设置单元测试以从我的“创建分析工作”单元测试的主要功能中检索和使用mongo_db变量?