Рассказ: Я пишу функциональный тест для приложения django с использованием салата и осколка. Сценарий выходит из строя из-за отсутствия синхронизации при шаговых вызовах.Ждите ответа во время тестирования функции с использованием салата + splinter и django
Вопрос: Есть ли способ предотвратить эту ошибку, не добавляя искусственного времени ожидания на мой шаг?
Longer история:. проверяет сценарий, если существующий пользователь может войти в систему
Scenario: User exists as admin
Given I access the url "/login/"
And The user "someuser" with password "something" exists as admin
When I fill username with "someuser" and password with "exists"
And I submit the form
Then I see the paragraph "You're successfully logged in!"
критический шаг здесь:
@step(r'I see the paragraph "(.*)"')
def see_paragraph(step, text):
assert text in world.browser.html
Когда урожай особенность салата, он случайно выходит из строя.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/lettuce/core.py", line 143, in __call__
ret = self.function(self.step, *args, **kw)
File "/vagrant/src/enext/apps/auth/features/authentication-steps.py", line 21, in see_paragraph
assert text in world.browser.html
AssertionError
Когда я пытался отладить ее, я обнаружил, что печать ответ сделает его работу каждый раз, так что я не мог воспроизвести ошибку. Добавление паузы также, похоже, делает трюк.
@step(r'I see the paragraph "(.*)"')
def see_paragraph(step, text):
# print world.browser.html.encode('utf-8')
# either the next or the previous line fixes it
time.sleep(0.3)
assert text in world.browser.html
Сначала это выглядело, как это было связанно с флеш тестовой базы данных, но я удалил другие сценарии, а также флеш, а также, и это держало происходит.
Нет любви для салата? На данный момент я буду придерживаться своего активного ожидания. Но меня это все еще интересует. Если кто-то найдет что-то новое, дайте мне знать – Felipe