在设计用例的时候,有些用例操作过程是一样的,只是参数数据输入的不同,如果用例重复的去写操作过程会增加代码量,对于这种多组数据的测试用例,可以使用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成
1.安装ddt模块
2.数据驱动的原理
(1)测试数据为多个字典的list类型
(2)测试类前需要加修饰@ddt.ddt
(3)测试用例方法前需要加修饰@ddt.data()
3.代码:
from selenium import webdriver from common.base import BasePage from page.page_login import LoginPage,login_url from common.read_excel_ddt import ExcelUtil import unittest import ddt case_data=[{"user":u"欧皇林宝","psw":u"xxxx","except":False}, {"user":u"欧皇林宝","psw":u"xxxxxxx.","except":True} ] @ddt.ddt class Login_test(unittest.TestCase): '''登录页面的测试用例''' @classmethod def setUpClass(cls): #只打开一次浏览器 cls.driver=webdriver.Firefox() #实例化page_login中的LoginPage类 cls.login_driver=LoginPage(cls.driver) cls.driver.open(login_url) def setUp(self): #每次都从登录页开始 self.driver.get(login_url) def tearDown(self): #每次清空登录的cookie,数据还原 self.driver.delete_all_cookies() @classmethod def tearDownClass(cls): #关闭浏览器 cls.driver.quit() def login_case(self,user,psw,exc): '''登录的流程''' self.login_driver.input_username(user) self.login_driver.input_password(psw) self.login_driver.click_submit() result=self.login_driver.is_login_sucess()#获取结果 except_result=exc#期望结果 self.assertEqual(result,except_result)#断言 @ddt.data(*case_data)#多个数据 挨个去传 def test_login_01(self,casedata): '''登陆失败用例:输入正确的账户,错误的密码'''
print(case_data)
def test_login_02(self,casedata):
'''登陆失败用例:输入正确的账户,正确的密码'''
print(case_data)
if __name__=="__main__": unittest.main(verbosity=2)