Python Selenium - Попытка провалить тест, когда ожидаемое значение не найдено - PullRequest
2 голосов
/ 01 июля 2019

У меня есть приложение, в котором пользователи могут создавать списки ... как только они создадут список, оно будет отображаться в таблице на их домашней странице приложения.В списке «Создано» таблицы должны отображаться только те списки, которые создает пользователь.

Я пытаюсь выполнить тест неудачно и распечатать, если ожидаемое имя не найдено.

 users_names = context.browser.find_elements_by_xpath("//tr//td[7]")

expected_name = "%s" % name

for name in expected_name:
    if name.text != expected_name:
        print("Failed\n", users_names)

1 Ответ

0 голосов
/ 01 июля 2019

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

  • У нас есть setUp (), который используется, чтобы подготовить все, прежде чем мы начать наш тест, профили, предпочтения и т. д.

  • Тогда test_show_only_user_created_lists () является основой нашего теста, где мы храним функциональность того, что мы тестируем (вы можете иметь разместить оставшийся код в этом разделе, если вам нужно было сделать что-нибудь до проверки списка)

  • Тогда у нас есть tearDown (), который мы используем, чтобы завершить наш оставшийся test, в этом случае мы просто закрываем наш браузер.

Мы могли бы использовать нашу удобную библиотеку модульных тестов и подтверждение только после завершения нашего цикла. Но мы должны убедиться, что заполняем нашу переменную 'Ожидаемое_имя'.

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class listTest(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_show_only_user_created_lists(self):
        driver = self.driver
        driver.get("http://yoursite.com")
        users_names = driver.find_elements_by_xpath("//tr//td[7]")

        testOutcome = 1

        for name in users_names:
            if name.text != expected_name:
              testOutcome = 0

        ### Assert ####
        self.assertTrue(testOutcome)

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

Затем мы можем запустить наш тест с помощью следующей команды с указанием пропусков или неудач:

python selenium-python-test.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...