Python试图在找不到期望值时使测试失败

2024-04-24 16:28:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序,用户可以创建列表…一旦他们创建了一个列表,它将显示在他们的应用程序主页上的表格。只有用户创建的列表应该显示在表的“创建者”列中。你知道吗

我试图让测试失败,如果找不到预期的名称,就打印出来。你知道吗

 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)

Tags: 用户namebrowser名称应用程序列表namescontext
1条回答
网友
1楼 · 发布于 2024-04-24 16:28:05

如果我正确理解您的问题,您希望验证显示的列表实际上是由用户创建的。有几种方法可以做到这一点,下面的例子可以改进。你知道吗

  • 我们有一个setUp(),用来在我们 开始我们的测试、配置文件、首选项等

  • 然后test\u show\u only\u user\u created\u lists()是我们测试的重点, 我们拥有我们正在测试的功能的地方(你可能有 如果必须这样做,请将剩余代码放在本节中 检查列表前的任何操作)

  • 然后我们有了tearDown(),我们用它来完成剩下的任务 测试,在这种情况下,我们只是关闭浏览器。

只有在循环完成之后,我们才能使用我们方便的单元测试库和断言。但我们必须确保填充“expected\u name”变量。你知道吗

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

相关问题 更多 >