Jen*_*ars 7 python testing django functional-testing python-3.x
有没有办法直接在测试反馈中显示在 StaticLiveServerTestCase 期间服务器上发生的错误?也就是说,当某些服务器函数调用错误并且页面没有显示时,默认情况下测试执行不知道服务器错误。有没有办法将该输出传递给测试线程?
最好这些错误会出现在与测试代码执行中直接出现的错误相同的地方。如果这不是(很容易)可能,那么快速查看这些服务器错误的下一个最佳方法是什么?
谢谢!
代码(根据要求):
class TestFunctionalVisitor(StaticLiveServerTestCase):
    def setUp(self):
        self.browser = webdriver.Firefox()
    def tearDown(self):
        self.browser.quit()
    def test_visitor(self):
        self.browser.get(self.live_server_url)
        self.assertEqual(self.browser.title, "Something")
...
class Home(TemplateView):
    template_name = 'home.html'
    def get_context_data(self):
        context = {}
        MyModel = None
        context['my_models'] = MyModel.objects.all()
        return context
这已被显着改变,使其变得简单和简短。但是,当MyModel是None和尝试调用objects.all()服务器有一个服务器的500错误,但我得到的是"Something" not in self.browser.title从测试输出,当希望我看到的错误NoneType has no...错误测试输出。
要立即查看错误,请在调试模式下运行测试:
from django.test.utils import override_settings
@override_settings(DEBUG=True)
class DjkSampleTestCase(StaticLiveServerTestCase):
    # fixtures = ['club_app_phase01_2017-01-09_13-30-19-169537.json']
    reset_sequences = True
但是还应该通过自定义django.core.handlers.base.BaseHandler类handle_uncaught_exception()方法实现或通过哨兵配置服务器端错误的日志记录。
ale*_*cxe -5
这就是为什么建议进行比集成和 UI/端到端更多的单元测试。除此之外,后者不会为您提供具体的反馈,并且您通常需要更多时间调试和调查 UI 测试失败的原因。另一方面,当单元测试失败时,通常是失败或异常,将您指向代码中的特定行 - 您立即得到“出了什么问题”的答案。
换句话说,重点是:用单元测试来解决这个特定问题,让 UI 测试保持原样。
为了帮助您收集有关"Something" not in self.browser.title故障的更多信息,请打开日志记录并记录尽可能多的详细信息。您还可以使用内置的错误报告,例如,让 Django 向您发送有关 500 错误的电子邮件。换句话说,收集所有详细信息并手动排除故障。