1.为什么要实现参数化
实现脚本与测试数据的分离。减少代码量使得代码更加的简洁。
2.安装
注意:UnitTest 框架本身并不具备参数化功能, 因此需要安装第三方插件
安装:pip install parameterized
验证:
pip list -->只要包名及对应版本号正常显示即可
也可以在 PyCharm 中, 检查解释器包列表内是否存在对应的包名及版本号
3.代码演示
依然用QQ邮箱做演示。
定位当前url如下代码所示
def type_chenggong(self):
return self.driver.current_url
import unittest #导入unittest框架
from selenium import webdriver
from object import Login
from parameterized import parameterized #导包
# import time
# from HTMLTestRunner import HTMLTestRunner
class Test_login(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
# self.driver.implicitly_wait(10)
self.login = Login(self.driver)
def tearDown(self):
self.driver.quit()
def user_login_verify(self,username,password ):
self.login.user_login(username,password)
@parameterized.expand([['','******','你还没有输入帐号!'], ['145070016','','你还没有输入密码.!']]) #添加装饰器中,装饰器的最外层必须是列表形式的。列表内可以是元组或者列表
def test_1(self,x,y,z): #所有测试数据使用变量替换
self.user_login_verify(username=x,password=y)
po = self.login.duanyan()
self.assertEqual(po,z) #断言
@parameterized.expand([['1450700616', '******','https://mail.qq.com/cgi-bin/frame_html']])
def test_2(self,a,b,c):
self.user_login_verify(username=a,password=b)
po1 = self.login.type_chenggong()
self.assertIn(c,po1) #该断言方法对比前者是否包含后者,用于对比邮箱登录后的url是否正确
if __name__ == '__main__':
unittest.main()
跳过功能使用
应有场景:对未完成的代码或不符合版本的测试方法或测试类执行跳过操作
实现方法:
在想要执行跳过的测试方法或测试类上方添加装饰器并调用方法即可
方法:
@unittest.skip(‘跳过原因’) -->直接跳过
@unittest.skipIf(成立的条件, “跳过原因”) -->符合条件跳过
这里博主就不演示在方法与上面类似直接添加在用例方法前面就可以了。