主urls.py文件:
urlpatterns = [
path(
'admin/',
admin.site.urls
),
path(
'',
include(
'employee.urls'
)
),
path(
'',
include(
'epos.urls'
)
),
path(
'',
include(
'supplier.urls'
)
),
]
epos.urls:
urlpatterns = [
path(
'',
home_view,
name='home'
),
主页视图:
@login_required
def home_view(request):
# Get all categories
categories = Category.objects.all()
# Get the first category which will be selected by default
selected_category = categories.first()
# Get the order_items for the selected category (first category)
products = Product.objects.filter(
category=selected_category.id
)
user = request.user
tax = Tax.objects.latest('id')
context = {
'categories': categories,
'user': user,
'title': "EPOS",
'products': products,
'selected_category': selected_category,
'tax': tax
}
return render(request, 'epos/epos.html', context)
测试用例:
class LoginTests(StaticLiveServerTestCase):
fixtures = ['fixtures/employee/employee_data.json']
def setUp(self):
self.browser = webdriver.Chrome()
self.browser.get(self.live_server_url)
self.browser.maximize_window()
def tearDown(self):
self.browser.quit()
def test_login_when_clocked_in(self):
import ipdb;ipdb.set_trace()
login_button = self.browser.find_element_by_xpath(
'//button[normalize-space()="Login"]'
)
clock_in_out_button = self.browser.find_element_by_xpath(
'//button[normalize-space()="Clock In/Out"]'
)
pin_input = self.browser.find_element_by_id(
'pin'
)
pin_code = 'some pin'
employee_name = 'some name'
pin_input.send_keys(pin_code)
clock_in_out_button.click()
time.sleep(10)
login_button.click()
settings.py
ROOT_URLCONF = 'allPOS.urls'
LOGIN_URL = '/login/'
当测试登录时,我被重定向到主网页,该网页是localhost:46497/
,但不是页面,我得到服务器错误500。此错误仅在测试时发生。另外,如果我添加另一个路径,例如localhost:46497/analytics
它按预期打开网页。
任何帮助将不胜感激。
2条答案
按热度按时间fcy6dtqo1#
经过4个小时的调试,我发现问题与数据库为空有关。
我想要渲染的网页希望传递一些模型,由于DB是空的,这些模型没有传递,因此崩溃。在正常情况下(
./manage.py runserver
),如果DEBUG=True
,它会告诉你什么是错误的,但出于某种原因,StaticLiveServerTestCase
没有这个选项,或者至少我不知道它。如果有人知道如何为StaticLiveServerTestCase
启用一些调试器,请随时添加到这个线程。所以我做了:
./manage.py dumpdata order.tax > data.json
-我将需要的数据转储到json文件中,在TestCase的开头,我将这些数据添加到fixture
中。希望这对有同样问题的人有帮助!
thtygnil2#
我也有同样的问题。但它是用分页的。我在分页中使用:“页面范围=分页器.get_elided_page_range(number=分页器.num_pages // 2,on_each_side=3,on_ends=2)”
我的解决方案: