有没有一种方法可以直接在测试反馈中显示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...
错误。在
我使用以下命令覆盖默认记录器:
这将在终端上显示stderr。你甚至可以:
^{pr2}$我只在调试时才这样做,如果您想将日志用于非调试,我建议您创建自定义记录器。在
有关日志记录的详细信息:
这正是it is recommended比集成和UI/端到端要多得多的单元测试的原因。除此之外,后者不提供特定的反馈,而且您通常需要更多的时间调试和调查UI测试失败的原因。另一方面,当一个单元测试失败时,通常是一个失败或一个异常,它会将您指向代码中的某一行,您会立即得到“出了什么问题”的答案。在
换句话说,重点是:用单元测试来解决这个问题,让UI测试保持原样。在
为了帮助您收集有关
"Something" not in self.browser.title
故障的更多信息,打开日志并记录尽可能多的细节。您还可以使用built-in Error Reporting,例如,让Django在500错误时向您发送电子邮件。换句话说,收集所有细节并手动排除故障。在要立即查看错误,请在调试模式下运行测试:
但是还应该通过自定义的
django.core.handlers.base.BaseHandler
类handle_uncaught_exception()
方法实现或通过sentry配置服务器端错误的日志记录。在相关问题 更多 >
编程相关推荐