Пошаговая инструкция - nekitvand/python_autotest GitHub Wiki

1.Записать шаги рекордером

2.Разделить код на методы (вход в систему,создание группы и т.д,) -Рефакторинг – метод.

3.Передать параметры в методы

  • Передал параметры в метод login (username,password) и в метод create group (name,header,footer).Параметры сделал не дефолтными.Значения этих параметров передают в вызове методов (self.login и self.create_group)

4.Создать вспомогательный класс для передачи параметров в методы

  • Создал новый .py файл - group. В нем создал класс Group.Внутри класса создал конструктор с атрибутами.В методе create_group передаваемые параметры (name,header,footer) переделал на group.name и т.д. Это нужно чтобы не передавать все параметры внутри метода, а разграничить параметры ,создав отдельный файл и класс (Group).

    В методе add_group теперь атрибуты передаются через обращение к классу: Group(name="aaaaa", header="aaaav", footer="aaaab")

5.Перенести вызовы методов в методы (это даст сокращение строчек теста и сделает его «высокоуровневым»)

  • Перенес вызовы методов (self.open_home_page(wd),self.open_group_page(wd),self.return_to_groups_page(wd)) внутрь методов (login и create_group).Теперь тесты содержат только вызовы методов: self.login,self.create_group,self.logout

6.Создание фикстуры (часть 1)

  • Удалил везде аргумент wd и использовать в каждом методе wd = self.wd Создал новый файл application с классом Application.Создал конструктор,в него перенес инициализацию драйвера и
    ожидания.В этот файл перенес методы и создал метод def destroy куда переместил действия из def tear down. В файле test_add_group переписал метод setup на self.app = Application() и метод teardown теперь выглядит как self.app.destroy().Вызовы методов теперь идут через app (self.app.logout()).

7.Создание фикстуры(часть 2)

  • Переход на pytest. В файл test_add_group сделал импорт pytest. Создал фикстуру. @pytest.fixture.Создал метод app и передал параметр (reguest) fixture = Application() Request.addfinalizer(fixture.destroy) return fixture

  • Удалил импорт юниттеста ,тестовый класс,методы serUP и tearDown. Теперь все тестовые методы принимают в качества параметра – фикстуру(app) И все вспомогательные методы теперь вызываются через фикстуру (app.logout())