😏Об авторе: Блогер является тест-менеджером и по совместительству лектором для иностранных компаний. 📡Адрес домашней страницы:【Austin_zhai】 🙆Цель и видение: Цель: помочь большему количеству людей в индустрии тестирования улучшить свои физические и мягкие навыки и поделиться последней информацией, связанной с отраслью. 💎Заявление: блоггер очень занят своей повседневной работой, и статьи будут время от времени обновляться. Вы можете отправлять личные сообщения о различных проблемах в отрасли или на рабочем месте, и я отвечу, когда у вас будет время.
В современном обществе жизнь людей практически неотделима от различных приложений. Удобство и услуги, которые они нам предоставляют, намного превосходят ценность самого программного обеспечения. В качестве испытания можно отметить, что мобильные приложения уже давно являются флагманскими продуктами крупных интернет-компаний. Их короткие циклы разработки и высокая ценность вспомогательных продуктов определяют их будущее доминирование.
Затем в повседневной деятельности по тестированию обеспечение качества мобильных приложений стало основной темой каждой группы тестирования. В условиях высокоскоростной итерации функций, все более сокращающихся циклов проектов и постепенно огромных инвестиций в рабочую силу и ресурсы эти факторы будут возрастать. make Команда тестирования должна включить в проект стратегии автоматического тестирования.
Будучи автоматизированной средой тестирования мобильных приложений, Appium вполне может удовлетворить большинство потребностей в тестировании мобильных приложений. Будучи средой автоматизированного тестирования, которая по-прежнему широко распространена сегодня, она стала одним из основных элементов повседневной жизни каждого человека, и все учащиеся-тестировщики должны уметь ее использовать.
1. В этом примечании используется операционная система Win 11. Версия программного обеспечения, указанная в примечании, может привести к несоответствию или другим дополнительным операциям с течением времени. Пожалуйста, прочитайте и обратитесь к нему соответствующим образом. 2. Из-за особенностей операционной системы приведенные здесь руководства предназначены только для ОС Android и Hongmeng. Учебные пособия по установке и настройке Appium, а также руководства по ежедневному использованию, связанные с iOS, будут опубликованы позже. 3. В этой статье для объяснения используется язык Python и Appium. Учебные пособия, относящиеся к другим языкам, здесь не повторяются.
проходить«Путь к автоматизированному тестированию»серия с«Среда автоматизации тестирования пользовательского интерфейса в режиме Appium PO — проектирование и практика»Общее введение в,Мы освоилиAppiumАвтоматизированное Основные методы использования в обучении и использование пользовательского интерфейса режима PO в приложении Автоматизированное инфраструктура инфраструктуры будущего,Далее блогер разберет большую часть процессов и подробно их объяснит.,Каждому удобно углубить свое впечатление. Сегодня мы познакомим вас с самым простым методом утверждения.
Говоря об утверждениях, я считаю, что каждый должен быть с ними знаком. Да, утверждения — это механизм или оператор, используемый для проверки того, соответствуют ли результаты выполнения программы ожиданиям. В ходе ежедневного тестирования наши программные тестеры используют утверждения, чтобы явно указать определенное условие в тестовом коде и проверить это условие при запуске программы. Если условие выполнено, то ожидаемый результат соответствует фактическому результату, утверждение проходит и тест продолжается. Но если условие не выполняется, то есть ожидаемый результат не соответствует фактическому результату, утверждение завершится неудачей, тест будет остановлен и будет выдано указанное сообщение об ошибке.
Утверждения аналогичны ожидаемым результатам в наших тестах, выполняемых вручную. Без них ваши тесты потеряют смысл. Конечно, использование утверждений не только сделает наши тестовые примеры завершенными, но также может помочь нам быстро найти ошибки и проблемы в коде, особенно при автоматизированном тестировании. Они могут проверять возвращаемые значения функций, свойства объектов, состояние структур данных и различные другие условия. Кроме того, указанное нами сообщение об ошибке может быть выдано при сбое утверждения. Именно этот механизм позволяет нашим тестировщикам быстро обнаружить общую причину проблемы в неудавшемся тест-кейсе в большом количестве тест-кейсов и кодов, ускоряя работу. цикл устранения проблемы.
Теперь мы дадим подробное объяснение и анализ некоторых методов утверждения в предыдущей среде автоматизации тестирования пользовательского интерфейса в режиме PO.
Наглядный метод утверждения, по ритму аналогичный методу AssertTrue. Это означает «утверждать равенство». В рамках это оператор, используемый для проверки равенства двух значений. При использовании утверждения AssertEqual он сравнивает, равны ли два значения. Если они равны, утверждение проходит и тест продолжается; если они не равны, утверждение не выполняется, тест останавливается и выдается сообщение об ошибке.
self.assertEqual(actual_value, expected_value, "err_msg")
Пример. Чтобы определить, равны ли два элемента, оцениваемый элемент берется с бизнес-страницы и оценивается по установленному ожидаемому значению.
import unittest
from appium import webdriver
class AppElementCatch(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android',
'deviceName': 'device',
'appPackage': 'com.xxxxxx.app',
'appActivity': 'MainActivity'
}
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
def test_element_id(self):
element_b = self.driver.find_element_by_id('element_b_id')
element_a_id = self.driver.find_element_by_id('edt_customer_name').get_attribute('resourceId')
self.assertEqual(element_b.get_attribute('resourceId'), element_a_id, «Идентификатор элемента не соответствует».)
AssertTrue означает «утверждать истинность» или «утверждать истинность значения». Мы передаем условное выражение и ожидаем, что оно истинно. Если условие истинно, утверждение проходит и тест продолжает выполняться, в противном случае тестовый пример не пройден. Обычно AssertTrue используется для проверки того, выполнено ли определенное условие, например, для проверки истинности возвращаемого значения функции, проверки того, установлен ли определенный флаг, оценки истинности определенного условия и определения значения атрибута. Два элемента равны. Действительно подождите.
self.assertTrue(condition, «Условие неверное».)
Пример. Определите, являются ли атрибуты класса двух элементов кнопки на странице одинаковыми. Таким же образом мы можем использовать AssertTrue, чтобы определить, является ли результат того, что мы хотим проверить, истинным. То же самое верно, а другое — верно. ЛОЖЬ.
import unittest
from appium import webdriver
class MyTestCase(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android',
'deviceName': 'device',
'appPackage': 'com.xxxx.app',
'appActivity': 'MainActivity'
}
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
def test_button_class(self):
button1 = self.driver.find_element_by_id('button1_id')
button2 = self.driver.find_element_by_id('button2_id')
button1_class = button1.get_attribute('class')
button2_class = button2.get_attribute('class')
self.assertTrue(button1_class == button2_class, «Значения атрибутов класса у кнопок разные.»)
AssertIn означает «утверждать существование». Обычно он используется для проверки наличия определенного значения в указанном контейнере. Точно так же, как у вас есть контейнер, например список или словарь, и вы хотите проверить, существует ли в нем определенное значение. Вы можете использовать AssertIn, чтобы проверить, существует ли значение в контейнере. Таким образом, использование утверждений AssertIn может помочь вам быстро проверить, находится ли определенное значение в контейнере, и убедиться, что данные программы соответствуют ожиданиям при различных обстоятельствах.
self.assertIn(item, container, «объект не существует в этом контейнере».)
Пример. Мы используем AssertIn, чтобы определить, существует ли компонент раскрывающегося списка на странице в указанном контейнере.
import unittest
from appium import webdriver
class EcommerceTestCase(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android',
'deviceName': 'device',
'appPackage': 'com.xxxx.app',
'appActivity': 'MainActivity'
}
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
def test_dropdown_in_container(self):
dropdown_element = self.driver.find_element_by_id('dropdown_id')
container_element = self.driver.find_element_by_id('container_id')
dropdown_options = dropdown_element.text.split('\n')
container_options = container_element.text.split('\n')
for option in dropdown_options:
self.assertIn(option, container, f"В этом контейнере не существует параметра раскрывающегося списка «{option}».")
AssertIs означает «утверждать тот же объект», который имеет ту же функцию, что и в языках программирования. Один и тот же объект означает, относятся ли два элемента до и после утверждения к одному и тому же объекту. Обычно мы используем его, чтобы проверить, является ли объект, возвращаемый функцией, одним и тем же экземпляром, определить, относятся ли две переменные к одному и тому же объекту, проверить, соответствует ли объект ожиданиям и т. д. Итак, с точки зрения непрофессионала, когда нам нужно проверить идентичность объектов в тесте, чтобы убедиться, что они являются одним и тем же экземпляром, мы можем использовать AssertIs для подтверждения.
self.assertIs(obj1, obj2, «Два объекта не одинаковы».)
Пример: мы используем AssertIs, чтобы проверить, совпадают ли определенные объекты проверки с указанными объектами в списке на бизнес-странице.
import unittest
from appium import webdriver
class FinancialTestCase(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android',
'deviceName': 'device',
'appPackage': 'com.example.app',
'appActivity': 'MainActivity'
}
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
def test_same_product_in_list(self):
# Предположим, что на странице списка финансовых продуктов перейдите find_element Расположение элемента названия продукта
product1_element = self.driver.find_element_by_id('product1_name_id')
product2_element = self.driver.find_element_by_id('product2_name_id')
# Получить текст названия продукта
product1_name = product1_element.text
product2_name = product2_element.text
# использовать assertIs утверждение Проверьте, являются ли два продукта одинаковыми
self.assertIs(product1_name, product2_name, «Указанные объекты не совпадают».)
Некоторые методы утверждения, противоположные приведенным выше утверждениям, такие как AssertNotEqual, AssertNotEqual, AssertNotIn и AssertIsNot, здесь не будут представлены. Сценарии, в которых они используются, противоположны приведенным выше. Вы можете гибко разрабатывать и использовать их в соответствии с вашими предпочтениями. реальные тестовые бизнес-сценарии.
Комбинированные утверждения, как следует из названия, означают, что мы используем несколько методов утверждения в тестовом примере, чтобы объединить их. Объединив утверждения, мы можем проверить фактические результаты более сложных бизнес-сценариев тестирования.
Пример: Например, нам нужно рассчитать процентную ставку по кредиту в определенной финансовой системе (в основном это используется для демонстрации комбинированного утверждения, упрощающего алгоритм и отраслевые правила реального бизнеса), и нам нужно проверить, является ли результат расчета процентная ставка по кредиту правильная. Первое утверждение проверяет, что рассчитанная процентная ставка равна ожидаемой процентной ставке, а второе утверждает, что рассчитанная процентная ставка равна ожидаемой процентной ставке.
import unittest
class LoanTestCase(unittest.TestCase):
def test_interest_calculation(self):
principal_amount = 100000
interest_rate = 0.05
expected_interest_amount = 5000
actual_interest_rate, actual_interest_amount = calculate_loan_interest(principal_amount, interest_rate)
self.assertEqual(actual_interest_rate, interest_rate, «Ошибка расчета процентной ставки по кредиту».)
self.assertEqual(actual_interest_amount, expected_interest_amount, «Сумма процентов по кредиту рассчитана неверно».)
Пример 2. Например, вам необходимо проверить, находится ли норма прибыли инвестиционного продукта в ожидаемом диапазоне. Наше первое утверждение должно проверить, что норма прибыли больше или равна самой низкой ожидаемой норме прибыли, и второе утверждение должно проверить, что норма прибыли меньше или равна самой высокой ожидаемой норме доходности.
import unittest
class InvestmentTestCase(unittest.TestCase):
def test_profit_rate(self):
expected_min_profit_rate = 0.05
expected_max_profit_rate = 0.1
actual_profit_rate = get_investment_profit_rate()
self.assertGreaterEqual(actual_profit_rate, expected_min_profit_rate, «Рабочая прибыль ниже ожидаемого минимума».)
self.assertLessEqual(actual_profit_rate, expected_max_profit_rate, «Прибыль превысила ожидаемый максимум».)
Некоторые учащиеся на данный момент могут этого не понять. Здесь мы используем базовые элементы страницы, чтобы продемонстрировать тестовый сценарий комбинированных утверждений.
Пример 3. Например, если мне нужно проверить, существует ли несколько ожидаемых элементов на странице сведений о продукте, то здесь мы можем использовать комбинированный метод утверждения для подтверждения.
import unittest
from appium import webdriver
class FinancialProductTestCase(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android',
'deviceName': 'device',
'appPackage': 'com.xxxx.app',
'appActivity': 'com.example.app.MainActivity'
}
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
def test_product_details(self):
product_name_element = self.driver.find_element_by_id('txt_product_name')
profit_rate_element = self.driver.find_element_by_id('txt_profit_rate')
term_element = self.driver.find_element_by_id('txt_term')
self.assertIsNotNone(product_name_element, «Элемент названия продукта не найден».)
self.assertIsNotNone(profit_rate_element, «Элемент прибыли не найден».)
self.assertIsNotNone(term_element, «Элемент термина не найден».)
Пример 4. Например, если вам нужно проверить, успешны ли множественные процессы входа в систему торговли фьючерсами для пользователей на странице входа, вы также можете использовать комбинированные утверждения для проверки.
import unittest
from appium import webdriver
class LoginTestCase(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android',
'deviceName': 'device',
'appPackage': 'com.xxxx.app',
'appActivity': 'com.example.app.MainActivity'
}
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
def test_login_flow(self):
username_element = self.driver.find_element_by_id('edt_username')
password_element = self.driver.find_element_by_id('edt_password')
login_button_element = self.driver.find_element_by_id('btn_login')
username_element.send_keys('testuser')
password_element.send_keys('password123')
login_button_element.click()
home_element = self.driver.find_element_by_id('txt_home')
self.assertIsNotNone(username_element, «Компонент ввода имени пользователя не найден».)
self.assertIsNotNone(password_element, «Компонент ввода пароля не найден».)
self.assertIsNotNone(login_button_element, «Кнопка входа не найдена».)
self.assertIsNotNone(home_element, «Обнаружен компонент возврата на домашнюю страницу».)