一、测试数据分离
1、新建testData文件夹,新建login_data.py文件,如下所示:
2、在login_datas.py文件中存放测试用例数据,如下所示:
# 正常场景 success_data = {"mobile": "17839196010", "pwd": "duhui94619"} # 异常用例--手机号异常 phone_data = [ {"mobile": "178391", "pwd": "duhui94619", "check": "请输入正确的邮箱或手机号"}, {"mobile": "178391960101", "pwd": "duhui94619", "check": "请输入正确的邮箱或手机号"}, {"mobile": "ssss", "pwd": "duhui94619", "check": "请输入正确的邮箱或手机号"}, {"mobile": " ", "pwd": "duhui94619", "check": "请输入正确的邮箱或手机号"}, ]
3、修改test_login文件,使用ddt进行参数化,并增加断言,如下所示:
import unittest import ddt as ddt from framework.browser_engine import BrowserEngine from pageObjects.login_page import LoginPage as LP from testDatas import login_datas as LD @ddt.ddt class TestLogin(unittest.TestCase): @classmethod def setUpClass(cls): """ 测试固件setUpClass(),在每个测试类执行之前运行,基本用于初始化driver和页面对象实例化 :return: """ browse = BrowserEngine(cls) cls.driver = browse.open_browser(cls) cls.lp = LP(cls.driver) # 初始化页面的一个页面对象实例。注意,一定要带cls.driver,不然会报错 @classmethod def tearDownClass(cls): """ 测试固件tearDownClass(),测试类结束后的操作,这里基本上都是关闭浏览器 :return: """ cls.driver.quit() ''' def setUp(self): """ 测试固件的setUp(),在每个函数执行前执行,每执行一次test开头的函数,都要执行一次 :return: """ ''' def tearDown(self): """ 测试固件的setUp(),在每个函数执行结束后执行,此处用于函数执行结束后刷新当前页面 :return: """ self.driver.refresh() # 正常场景 def test_login_normal(self, doc=""): """ 这里一定要test开头,把测试逻辑代码封装到一个test开头的方法里。 :return: """ doc = "登录_登录_正常登录" self.lp.loginLink() # 调用页面对象中的方法 self.lp.login(LD.success_data["mobile"], LD.success_data["pwd"]) self.assertTrue(self.lp.get_exist()) self.lp.get_windows_img(doc) # 调用基类的截图方法 # 异常用例---手机号错误 @ddt.data(*LD.phone_data) def test_login_error(self, data): self.lp.loginLink() # 调用页面对象中的方法 self.lp.login(data["mobile"], data["pwd"]) self.assertEqual(self.lp.get_moblie_error(), data["check"]) if __name__ == '__main__': unittest.main()
标签:Python,self,Selenium,ddt,----,lp,login,data,cls From: https://www.cnblogs.com/geqiandeqingmu/p/14982086.html