以前selenium+python自动化测试--登陆 中,几个帐号和密码登陆就要写几个用例,感受很麻烦~,因此下面介绍一下用数据驱动实现不一样用例的登陆。html
话很少说,直接贴代码~~python
文件名称:test_ddtlogin.pyweb
import ddt import unittest from selenium import webdriver from common.base import Base testdata = [ {'user':'','psw':'','exp':'请输入手机号码'}, {'user':'admin','psw':'','exp':'请输入密码'}, {'user':'','psw':'666666','exp':'请输入手机号码'}, {'user':'admin','psw':'666666','exp':'帐号不存在'} ] @ddt.ddt class Testddt(unittest.TestCase): # 定位手机号 username = ("name", "loginName") # 定位密码 psw = ("name", "loginPassWord") # 定位登陆按钮 loginbutton = ("id", "loginBtn") # 定位提示信息 message = ("className", "toast-message") @classmethod def setUpClass(cls): cls.driver = webdriver.Firefox() cls.baseddt = Base(cls.driver) cls.driver.get("不肯透露姓名的url") def setUp(self): self.baseddt.clear(self.username) self.baseddt.clear(self.psw) @classmethod def tearDownClass(cls): cls.driver.quit() # 加载测试数据 @ddt.data(*testdata) def test_01(self,data): username = data['user'] password = data['psw'] exp = data['exp'] #输入手机号 self.baseddt.send(self.username,username) #输入密码 self.baseddt.send(self.psw,password) #点击登陆按钮 self.baseddt.click(self.loginbutton) #获取结果 result = self.baseddt.find(self.message).text print("我是结果:", result) self.assertEqual(result, exp) if __name__ == '__main__': unittest.main()
上面代码运行屡次后,发现最后一个用例执行失败了,以为多是缓存问题,因此仍是改为下面的代码:缓存
import ddt import unittest from selenium import webdriver from common.base import Base testdata = [ {'user':'','psw':'','exp':'请输入手机号码'}, {'user':'admin','psw':'','exp':'请输入密码'}, {'user':'','psw':'666666','exp':'请输入手机号码'}, {'user':'admin','psw':'666666','exp':'帐号不存在'} ] @ddt.ddt class Testddt(unittest.TestCase): # 定位手机号 username = ("name", "loginName") # 定位密码 psw = ("name", "loginPassWord") # 定位登陆按钮 loginbutton = ("id", "loginBtn") # 定位提示信息 message = ("className", "toast-message") @classmethod def setUpClass(cls): cls.driver = webdriver.Firefox() cls.baseddt = Base(cls.driver) def setUp(self): self.driver.get("不肯透露姓名的url") def tearDown(self): self.driver.delete_all_cookies() @classmethod def tearDownClass(cls): cls.driver.quit() # 加载测试数据 @ddt.data(*testdata) def test_01(self,data): username = data['user'] password = data['psw'] exp = data['exp'] #输入手机号 self.baseddt.send(self.username,username) #输入密码 self.baseddt.send(self.psw,password) #点击登陆按钮 self.baseddt.click(self.loginbutton) #获取结果 result = self.baseddt.find(self.message).text print("我是结果:", result) self.assertEqual(result, exp) if __name__ == '__main__': unittest.main()
运行结果:cookie
纯属我的思路,若有错误请在评论区指出,必定当即纠正。很是感谢~ 测试
读取文件操做请看下回分解😜ui