import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
class CorrecaoEfetivaNota(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome('/Users/r13/dev/chromedriver')
def teste_login_avaliador(self):
driver = self.driver
driver.get("")
cpf = driver.find_element_by_xpath('//input[@placeholder="CPF"]')
cpf.send_keys("")
password = driver.find_element_by_xpath('//input[@placeholder="SENHA"]')
password.send_keys("")
login = driver.find_element_by_tag_name('button')
login.click()
driver.implicitly_wait(3)
def teste_buscar_mais_um(self):
driver = self.driver
buscar = driver.find_element_by_xpath("//section[1]/div/div/section[2]/div/div/div[1]/div/div[2]/button")
buscar.click()
def tearDown(self):
self.driver.close()
我正在尝试用Python编写此测试,第一个功能还可以,但是类中的第二个功能未在测试中执行。我该如何组织呢?
答案 0 :(得分:0)
您写道,第一个函数正常,我假设它必须是您所引用的setUp()
函数(前提是您在代码中正确缩进了代码)。
正如安德森(Andersson)所说,您的unittest方法必须以“ test_”而不是“ teste_”开头。提供“ test_”是告诉unittest
该方法应进行测试的方式。
在您的unittest
中,您可能还想测试诸如self.assertEqual(1,1)
之类的东西,否则无论如何您的测试都会通过。
下次,请向我们提供更详尽的错误说明。您是如何致电进行单元测试的? python给您什么错误?您期待什么结果?等等,它可以更快地解决您的问题。
我建议您先进行一个简单的测试,并确保它能够运行:
import unittest
class TestingUnittest(unittest.TestCase):
def setUp(self):
print("SetUp called")
def tearDown(self):
print("tearDown called")
def test_Method(self):
print("Testing 1==1")
self.assertEqual(1,1)
从您的终端拨打此电话:
>>>python -m unittest "name-of-test.py"
答案 1 :(得分:0)
在使用硒使用Python和 unittest 模块时,您必须考虑以下几个事实:
test_method
的缩进不同。driver.close()
方法中的driver.quit()
而不是tearDown(){}
来关闭并破坏 WebDriver 和 Web Client 实例。 __main__
。这是您自己的代码,其中进行了必要的细微修改,这些代码将执行 first方法 teste_login_avaliador()
和 second方法 teste_buscar_mais_um()
(类 CorrecaoEfetivaNota()
:
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
class CorrecaoEfetivaNota(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path=r'C:\WebDrivers\chromedriver.exe')
def teste_login_avaliador(self):
driver = self.driver
driver.get("http://d3dyod5mwyu6xk.cloudfront.net/")
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()
driver.implicitly_wait(3)
def teste_buscar_mais_um(self):
driver = self.driver
buscar = driver.find_element_by_xpath("//section[1]/div/div/section[2]/div/div/div[1]/div/div[2]/button")
buscar.click()
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
注意:尽管两个 test_methods 都被调用,但您仍将面临以下异常:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//section[1]/div/div/section[2]/div/div/div[1]/div/div[2]/button"}
在此行:
buscar = driver.find_element_by_xpath("//section[1]/div/div/section[2]/div/div/div[1]/div/div[2]/button")
按照您的用例的实际 Test步骤可以轻松解决此异常,并且如果需要,您可以提出新的问题/票证。