2016-05-22 2 views
0

Django 1.9. Я хочу проверить, что входные формы невидимы в обычном режиме. И только когда пользователь нажимает кнопку меню переключения, появляются элементы входа и пароля.Лучшая практика для обеспечения порядка испытаний порядка

Проблема в том, что все это касается методов класса. Я хочу быть уверенным, что один метод выполняется перед другим. Я нашел это решение с 0 и 1 в именах методов.

class FuncTestTablets(TestCase): 

    @classmethod 
    def setUpClass(cls): 
     pass 

    @classmethod 
    def tearDownClass(cls): 
     pass 

    def test_0_tablets_login_input_form_absent(self): 
     # At home page with tablet screen size Edith sees no login input element. 
     ## 0 is for stating explicitly that this test goes before the ones with 1 in their name. 
     self.browser.get('http://localhost:8000') 
     login_input = self.browser.find_element_by_id('login')   
     self.assertFalse(login_input.is_displayed(), "Login input element is visible on large devices") 

    def test_1_tablets_login_input_form_present_when_menu_button_pressed(self): 
     # At home page Edith presses menu button and login input appears. 
     ## 1 is for stating explicitly that this test goes after the ones with 0 in their name. 
     menu_button = self.browser.find_element_by_class_name('navbar-toggle') 
     menu_button.click() 
     login_input = self.browser.find_element_by_id('login') 
     self.assertTrue(login_input.is_displayed(), "Login input element is not visible on tablet devices when menu button is pressed.") 

Это похоже на работу. Не могли бы вы сказать мне, есть ли какая-то общеизвестная методология для таких случаев. Может быть, какая-то лучшая практика.

Я только что начал Django, и я не думаю, что мое решение является одновременно лучшим.

Вот почему я решил спросить вас. Заранее спасибо.

ответ

0

Лучшая практика заключается в том, что порядок ваших методов тестирования не имеет значения вообще, и если вы наследуете от django.test.TestCase, это не имеет значения. Я, однако, был в ситуации, когда я хотел протестировать функцию 'foo' одним способом, а затем, для удобства (например, не нужно ее обертывать в try-except), предположите, что он работает правильно в других методах, которые проверяют что-то еще ('bar').

Я назвал мои методы испытаний

test_a_foo 
test_b_bar 

Это кажется более подходящим, то с помощью чисел, так как тесты выполняются в лексикографическом порядке, где, например,

test_11_eleven 

выполняется перед

test_2_two 

Если после этого вы должны вставить еще один тест позже, вы можете изменить имена:

test_b1_first_b 
test_b2_second_b