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

class loginAvaliador(unittest.TestCase):

def setUp(self):
    self.driver = webdriver.Chrome('/Users/r13/dev/chromedriver')

def login_avaliador(self):
    driver = self.driver
    driver.get("http://d3dyod5mwyu6xk.cloudfront.net/")
    assert "FGV" in driver.title
    cpf = driver.find_element_by_xpath('//input[@placeholder="CPF"]')
    cpf.send_keys("27922797885")
    password = driver.find_element_by_xpath('//input[@placeholder="SENHA"]')
    password.send_keys("enccejaregular")
    login = driver.find_element_by_tag_name('button')
    login.click()
    assert "No results found." not in driver.page_source

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

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

当我尝试运行此测试脚本时,它返回“在 0.000 秒内运行 0 个测试”,为什么会这样?我是 python 新手,正在编写这个测试脚本,所以我找不到错误

4

2 回答 2

0

在使用Selenium处理 Python 的unittest模块时,您必须考虑以下几个事实:

  • 您需要注意缩进。class和的缩进test_method是不同的。
  • 当您定义以@Teststest 开头的测试名称时,例如

    def test_login_avaliador(self):
    
  • 始终driver.quit()tearDown(){}方法内调用以优雅地关闭和销毁WebDriverWeb Client实例。

  • 这是您自己的代码,并进行了必要的小修改:

    import unittest
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    class loginAvaliador(unittest.TestCase):
    
        def setUp(self):
            self.driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe')
    
        def test_login_avaliador(self):
            driver = self.driver
            driver.get("http://d3dyod5mwyu6xk.cloudfront.net/")
            assert "FGV" in driver.title
            cpf = driver.find_element_by_xpath('//input[@placeholder="CPF"]')
            cpf.send_keys("27922797885")
            password = driver.find_element_by_xpath('//input[@placeholder="SENHA"]')
            password.send_keys("enccejaregular")
            login = driver.find_element_by_tag_name('button')
            login.click()
            assert "No results found." not in driver.page_source
    
        def tearDown(self):
            self.driver.quit()
    
    if __name__ == "__main__":
        unittest.main()
    
  • 执行结果:

    C:\path\to\PyPrograms>python -m unittest 52560471_unittest.py
    
    DevTools listening on ws://127.0.0.1:12022/devtools/browser/078fc4e9-3ca6-4bbb-b318-0b8f04318d32
    .
    ----------------------------------------------------------------------
    Ran 1 test in 40.796s
    
    OK
    
于 2018-09-28T20:47:21.980 回答
0

使用 unittest 模块,您需要使用它们内置的断言方法。而不仅仅是写作

assert a not in b

你写

self.assertNotIn("No results found.",driver.page_source)

例如。有关所有断言方法的列表,请参见此处: https ://docs.python.org/2/library/unittest.html#unittest.TestCase

于 2018-09-28T18:02:47.440 回答