模拟来自独立Python脚本和命令行的HTTP请求

时间:2018-12-16 13:23:41

标签: django python-3.x django-cache

我的任务是开发一个可以从命令行运行的脚本,并使用url作为参数(以便模拟浏览器请求)。在应用中,相应的缓存机制已成功构建。为了使它运行起来,我使用RequestFactory来模仿请求。我的脚本是:

class FetchCacheTest(TestCase):
    def setUp(self):
        self.factory = RequestFactory()
        self.user = User.objects.create_user(
            username='thatsme', email='thatsme@hotmail.com', password='secret')

    def cache_details(self, url):
        request = self.factory.get(url)
        print("get_request: {0}".format(request))
        request.user = self.user
        print("request.user: {0}".format(request.user))
        request.user = AnonymousUser()

        response = MyView.as_view()(request)
        response.render()
        self.assertEqual(response.status_code, 200)

if __name__ == '__main__':
    #######
    #import django
    #os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
    #django.setup()
    ##########################
    script = sys.argv[0]
    url = sys.argv[1]
    print ("Script: {0}\nURL: {1}".format(script, url))

    fct = FetchCacheTest
    t = fct.cache_details(url)

在终端机的一个标签中,我执行python manage.py runserver 在另一个标签中,python fetch_myapp.py https://report/failed

我收到的回溯:

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

我已经在if __name__ == '__main__'下方尝试了注释掉的代码,但无济于事。

任何想法如何规避此消息?一般而言,有关收集缓存sta的任何其他提示都将受到赞赏。

0 个答案:

没有答案