Пошаговая инструкция - 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())