UnitTest测试固件、参数parameterized
1、UnitTest的使用:
(1)、setUp()、teardown()每个测试用例都执行一次
import unittest
from selenium import webdriver
class TestUi(unittest.TestCase):
def setUp(self) -> None:
print('开始执行')
def tearDown(self) -> None:
print('执行结束')
def test_login_001(self):
pass
def test_login_002(self):
pass
if __name__ == '__main__':
unittest.main()
例:
from selenium import webdriver
import unittest
import time as t
class TestSina(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
'''初始化'''
cls.driver=webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.get('https://mail.sina.com.cn/')
cls.driver.implicitly_wait(30)
@classmethod
def tearDownClass(cls) -> None:
cls.driver.quit()
def test_sina_001(self):
isLogin=self.driver.find_element_by_id('store1')
#验证
self.assertEqual(isLogin.is_selected(),True)
def test_sina_002(self):
self.driver.find_element_by_link_text('登录').click()
t.sleep(3)
#注意定位,容易出错
divText=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
self.assertEqual(divText.text,'请输入邮箱名')
def test_sina_003(self):
self.driver.find_element_by_id('freename').send_keys('lyl123@sina.com')
self.driver.find_element_by_link_text('登录').click()
t.sleep(3)
divText=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[2]')
self.assertEqual(divText.text=='请输入密码',True)
def test_sina_004(self):
# 先获取注册页面的窗口
nowHander = self.driver.current_window_handle
# 点击注册页面,跳转到注册的页面
self.driver.find_element_by_link_text('注册').click()
# 获取所有窗口
allHanders = self.driver.window_handles
# 对所有的窗口进行循环处理
for handler in allHanders:
# 判断当前窗口(如果不是当前窗口)
if nowHander != handler:
# 获取当前窗口
self.driver.switch_to.window(handler)
# 断言
self.assertEqual(self.driver.current_url, 'https://mail.sina.com.cn/register/regmail.php')
self.driver.close()
if __name__=='__main__':
unittest.main(verbosity=2)
(2)、setUpClass()、teardownClass()只执行一次
import unittest
from selenium import webdriver
class TestUi(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
print('开始执行')
@classmethod
def tearDownClass(cls) -> None:
print('执行结束')
def test_login_001(self):
pass
def test_login_002(self):
pass
if __name__ == '__main__':
unittest.main()
例:
from selenium import webdriver
import unittest
import time as t
class TestSina(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
'''初始化'''
cls.driver=webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.get('https://mail.sina.com.cn/')
cls.driver.implicitly_wait(30)
@classmethod
def tearDownClass(cls) -> None:
cls.driver.quit()
def test_sina_001(self):
isLogin=self.driver.find_element_by_id('store1')
#验证
self.assertEqual(isLogin.is_selected(),True)
def test_sina_002(self):
self.driver.find_element_by_link_text('登录').click()
t.sleep(3)
#注意定位,容易出错
divText=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
self.assertEqual(divText.text,'请输入邮箱名')
def test_sina_003(self):
#先获取注册页面的窗口
nowHander=self.driver.current_window_handle
#点击注册页面,跳转到注册的页面
self.driver.find_element_by_link_text('注册').click()
#获取所有窗口
allHanders=self.driver.window_handles
#对所有的窗口进行循环处理
for handler in allHanders:
#判断当前窗口(如果不是当前窗口)
if nowHander!= handler:
#获取当前窗口
self.driver.switch_to.window(handler)
#断言
self.assertEqual(self.driver.current_url,'https://mail.sina.com.cn/register/regmail.php')
self.driver.close()
#关闭注册页面后在返回到登录页面(才能继续执行下一步)
self.driver.switch_to.window(nowHander)
def test_sina_004(self):
self.driver.find_element_by_id('freename').send_keys('lyl123@sina.com')
self.driver.find_element_by_link_text('登录').click()
t.sleep(3)
divText=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[2]')
self.assertEqual(divText.text=='请输入密码',True)
if __name__=='__main__':
unittest.main(verbosity=2)
2、安装parameterized(参数化)
在电脑搜索栏中输入cmd(打开命令提示符),在管理员权限下--->输入pip3 install parameterized(自动安装)
3、param使用
import unittest
from parameterized import parameterized,param
def add(a,b):
return a+b
class AddTest(unittest.TestCase):
def setUp(self) -> None:
pass
def tearDown(self) -> None:
pass
@parameterized.expand([
param(1,1,2),
param(2,2,4),
param(1.0,2.0,3.0),
param('ni',' hao','ni hao'),
])
def test_add(self,a,b,result):
self.assertEqual(add(a,b),result)
if __name__ == '__main__':
unittest.main(verbosity=2)
(1)、 Sina email()实战
import unittest
from parameterized import parameterized,param
from selenium import webdriver
import time as t
class UITest(unittest.TestCase):
def setUp(self) -> None:
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('https://mail.sina.com.cn/')
self.driver.implicitly_wait(30)
#清理(退出)
def tearDown(self) -> None:
self.driver.quit()
@parameterized.expand([
param('','','请输入邮箱名'),
param('lyl2580@sina.com',123,'登录名或密码错误'),
param('lyl',' 369','您输入的邮箱名格式不正确'),
])
def test_sina(self,username,password,divText):
self.driver.find_element_by_id('freename').send_keys(username)
self.driver.find_element_by_id('freepassword').send_keys(password)
self.driver.find_element_by_link_text('登录').click()
t.sleep(3)
errorText=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
self.assertEqual(errorText.text,divText)
if __name__ == '__main__':
unittest.main(verbosity=2)
(2)、网易email(实战)
import unittest
from parameterized import parameterized,param
from selenium import webdriver
import time as t
class UITest(unittest.TestCase):
def setUp(self) -> None:
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.get('https://mail.163.com/')
self.driver.implicitly_wait(30)
self.driver.switch_to.frame(0)
#清理(退出)
def tearDown(self) -> None:
self.driver.quit()
@parameterized.expand([
param('','','请输入帐号'),
param('lyl2580','','请输入密码'),
param('1542#$^%&^','15263','帐号格式错误'),
param('lyl@163.com',' 369','请先进行验证'),
])
def test_wangyi(self,username,password,divText):
self.driver.find_element_by_name('email').send_keys(username)
self.driver.find_element_by_name('password').send_keys(password)
self.driver.find_element_by_link_text('登 录').click()
t.sleep(3)
errorText=self.driver.find_element_by_xpath('//*[@id="nerror"]')
self.assertEqual(errorText.text,divText)
if __name__ == '__main__':
unittest.main(verbosity=2)
浙公网安备 33010602011771号