使用python对烧瓶应用程序进行单元测试时如何传递非全局变量

时间:2020-10-04 08:54:39

标签: python unit-testing flask

我有一个带有主要功能的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变量?

0 个答案:

没有答案
相关问题