class ContactBook: ROBOT_LIBRARY_SCOPE = 'TEST SUITE' def __init__(self, config="target.json", browser="chrome"): self.browser = browser config_name = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", config) with open(config_name) as config_file: self.target = json.load(config_file) def init_fixtures(self): web_config = self.target["web"] self.fixture = Application(browser=self.browser, base_url=web_config["baseUrl"]) self.fixture.session.ensure_login(username=web_config["username"], password=web_config["password"]) db_config = self.target["db"] self.dbfixture = ORMFixture(host=db_config["host"], name=db_config["name"], user=db_config["user"], password=db_config["password"]) def destroy_fixtures(self): self.dbfixture.destroy() self.fixture.destroy() def new_contact(self, firstname, lastname): return Contact(first_name=firstname, last_name=lastname) def create_contact(self, contact): self.fixture.contact.add_new(contact) def get_contact_list(self): return self.dbfixture.get_contact_list() def contact_lists_should_be_equal(self, list1, list2): assert sorted(list1, key=Contact.id_or_max) == sorted(list2, key=Contact.id_or_max) def delete_contact(self, contact): self.fixture.contact.delete_contact_by_id(contact.id) def update_contact(self, contact_old, contact_new): self.fixture.contact.update_contact_by_id(contact_new, contact_old.id) def update_value_in_list(self, contact_list, contact_to_update, contact_with_new_data): # NOTE: this action is based on the shallow copying of the objects and greatly on immutability contact = contact_list[contact_list.index(contact_to_update)] contact.first_name = contact_with_new_data.first_name contact.last_name = contact_with_new_data.last_name
class AddressBook: ROBOT_LIBRARY_SCOPE = 'TEST SUITE' def __init__(self, config="target.json", browser="chrome"): self.browser = browser config_name = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", config) with open(config_name) as config_file: self.target = json.load(config_file) def init_fixtures(self): web_config = self.target["web"] self.fixture = Application(browser=self.browser, base_url=web_config["baseUrl"]) self.fixture.session.ensure_login(username=web_config["username"], password=web_config["password"]) db_config = self.target["db"] self.dbfixture = ORMFixture(host=db_config["host"], name=db_config["name"], user=db_config["user"], password=db_config["password"]) def destroy_fixtures(self): self.dbfixture.destroy() self.fixture.destroy() def new_group(self, name, header, footer): return Group(name=name, header=header, footer=footer) def create_group(self, group): self.fixture.group.create(group) def get_group_list(self): return self.dbfixture.get_group_list() def group_lists_should_be_equal(self, list1, list2): assert sorted(list1, key=Group.id_or_max) == sorted(list2, key=Group.id_or_max) def delete_group(self, group): self.fixture.group.delete_group_by_id(group.id)
class AddressBook: ROBOT_LIBRARY_SCOPE = 'TEST SUITE' # Едиый объект для всего тестового набора def __init__(self, config="target.json", browser="firefox"): self.browser = browser config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", config) # Определение пути к конфигурационному файлу по умолчанию with open(config_file) as f: # Открыть файл, контроль автоматического закрытия после выполнения блока команд self.target = json.load(f) # Загрузка данных из файла # Инициализация (создание) фикстур def init_fixtures(self): web_config = self.target["web"] # Получение данных конфигурации выполнения из файла для работы с Web self.fixture = Application(browser=self.browser, base_url=web_config['baseUrl']) self.fixture.session.ensure_login(username=web_config['username'], password=web_config['password']) # Авторизация пользователя db_config = self.target['db'] # Получение данных конфигурации выполнения из файла для работы с базой данных self.dbfixture = DbFixture(host=db_config['host'], name=db_config['name'], user=db_config['user'], password=db_config['password']) # Создание фикстуры работы с базой данных orm_config = self.target['db'] # Получение данных конфигурации выполнения из файла для работы с базой данных self.ormfixture = ORMFixture(host=orm_config['host'], name=orm_config['name'], user=orm_config['user'], password=orm_config['password']) # Создание фикстуры работы с базой данных # Уничтожение фикстур def destroy_fixtures(self): self.dbfixture.destroy() self.fixture.destroy() self.ormfixture.destroy() # Определение контакта def new_address(self, first_name, middle_name, last_name, address): return Address(first_name=first_name, middle_name=middle_name, last_name=last_name, address=address) # Контакт # Переопределение контакта по идетфикатору def new_address_with_id(self, id, first_name, middle_name, last_name, address): return Address(id=id, first_name=first_name, middle_name=middle_name, last_name=last_name, address=address) # Контакт # Получение идентификатора контакта из списка по его номеру def get_address_id_by_index_from_the_list(self, index, address_list): return address_list[index].id # Тдентификатор контакта # Получение списка контактов def get_address_list(self): return self.ormfixture.get_address_list() # Список контактов # Получение непустого списка контактов def get_not_empty_address_list(self): if len(self.ormfixture.get_address_list()) == 0: # Проверка наличия хотябы одного контакта в списке self.fixture.address.create(Address(first_name="Михаил", middle_name="Алексеевич", last_name="Новиков", nickname="M.Novikov", title="Title", company="КБ ДОРС", address="Федеративный пр. д.15 к.4", tel_home="001-13-59", tel_mobile="002-13-59", tel_work="003-13-59", tel_fax="004-13-59", web_email="*****@*****.**", web_email2="*****@*****.**", web_email3="*****@*****.**", web_homepage="http://software-testing.ru", birthday_day=14, birthday_month=11, birthday_year="1986", anniversary_day=1, anniversary_month=1, anniversary_year="2000", sec_address="Secondary Address", home="Home", notes="Notes")) # Создание контакта на случай пустого списка return self.get_address_list() # Список контактов # Создание контакта def create_address(self, address): self.fixture.address.create(address) # Создание нового контакта # Удаление контакта def delete_address(self, address): self.fixture.address.delete_address_by_id(address.id) # Удаление контакта по идентификатору # Изменение контакта def modify_address(self, address): self.fixture.address.modify_address_by_id(address) # Изменение контакта по идентификатору # Проверка равенства списков контактов def address_lists_should_be_equal(self, list1, list2): assert sorted(list1, key=Address.id_or_max) == sorted(list2, key=Address.id_or_max) # Сравнение сортированных по идентификатору списков контактов
class AddressBook: ROBOT_LIBRARY_SCOPE = 'TEST SUITE' def __init__(self, config="target.json", browser="chrome"): self.browser = browser config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", config) with open(config_file) as f: self.target = json.load(f) def init_fixtures(self): web_config = self.target['web'] self.fixture = Application(browser=self.browser, base_url=web_config['baseUrl']) self.fixture.session.ensure_login(username=web_config['username'], password=web_config['password']) db_config = self.target['db'] self.ormfixture = ORMFixture(host=db_config['host'], name=db_config['name'], user=db_config['user'], password=db_config['password']) def destroy_fixtures(self): self.ormfixture.destroy() self.fixture.destroy() def new_group(self, name, header, footer): return Group(name=name, header=header, footer=footer) def get_group_list(self): return self.ormfixture.get_group_list() def create_group(self, group): self.fixture.group.create(group) def delete_group(self, group): self.fixture.group.delete_group_by_id(group.id) def group_lists_should_be_equal(self, list1, list2): assert sorted(list1, key=Group.id_or_max) == sorted(list2, key=Group.id_or_max) def new_contact(self, firstname, lastname, address): return Contact(firstname=firstname, lastname=lastname, address=address) def get_contact_list(self): return self.ormfixture.get_contact_list() def create_contact(self, contact): self.fixture.contact.create(contact) def delete_contact(self, contact): self.fixture.contact.delete_contact_by_id(contact.id) def modify_contact(self, contact, new_contact): self.fixture.contact.edit_contact_by_id(contact.id, new_contact) def get_modified_contact(self, contact, new_contact): new_contact.id = contact.id return new_contact def contact_lists_should_be_equal(self, list1, list2): assert sorted(list1, key=Contact.id_or_max) == sorted(list2, key=Contact.id_or_max)
from fixture.orm import ORMFixture from fixture.db_helper import DbFixture from model.models import Group db = ORMFixture(host="127.0.0.1", name="addressbook", user="******", password="") try: contacts = db.get_contact_list() for contact in contacts: print(contact) print(len(contacts)) finally: db.destroy()