LoginPage.py实现登录页面的封装,test_login.py编写登录测试用例,
登录测试要填入参数,且要验证多种情况所以要编写多条测试函数,
为了实现一条测试函数验证多种测试情况,可以利用数据参数化来实现。{笔者使用bbt模块读取json文件来实现}
登录用户数据___Userdata.json
{
"admin登录成功": {"name": "admin", "password": "admin"},
"jack登录成功": {"name": "jack", "password": "123456"},
"abc登录失败": {"name": "abc", "password": "123456"}
}
1 from BasePage import Page 2 import os 3 import sys 4 5 base_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 6 7 sys.path.append(base_dir + '\public') 8 9 10 class Loginpage(Page): 11 url = "http://192.168.117.9:8080/jforum/user/login.page" 12 13 def username(self, parames): 14 self.by_name("username").send_keys(parames) 15 16 def password(self, pwd): 17 self.by_name("password").send_keys(pwd) 18 19 def submit(self): 20 self.by_name("login").click() 21 22 def out(self): 23 self.by_id('logout').click() 24 25 """获取断言点""" 26 27 def assetr_succeed(self): 28 return self.by_id("myprofile").text 29 30 def assetr_fialed(self): 31 return self.by_id('invalidlogin').text
1 from LoginPage import Loginpage 2 import os, sys, time, unittest, ddt 3 from browser import Browser 4 from img import create_img 5 6 '''LoginPage路径''' 7 base_dir = os.path.dirname((os.path.abspath(__file__))) 8 sys.path.append(base_dir + '\home_page') 9 10 '''browser路径''' 11 BASE_DIR = os.path.dirname(os.path.dirname( 12 os.path.dirname(os.path.abspath(__file__)))) 13 sys.path.append(BASE_DIR + '\driver') 14 15 '''导入截图程序''' 16 img_dir = os.path.dirname(((os.path.dirname(os.path.abspath(__file__))))) 17 sys.path.append(img_dir + '\pubilc') 18 19 20 @ddt.ddt 21 class Logintest(Browser): 22 23 @ddt.file_data(base_dir + '\CaseData\Userdata.json') # 利用ddt模式来实现数据的参数化 24 def test_case(self, name, password): 25 obj = Loginpage(self.driver) 26 obj.open() 27 obj.username(name) 28 obj.password(password) 29 obj.submit() 30 if name != "abc": 31 self.assertEqual(obj.assetr_succeed(), "个人资料") 32 time.sleep(2) 33 create_img(self.driver, name + ".png") 34 obj.out() 35 else: 36 self.assertEqual(obj.assetr_fialed(), "您输入了无效的用户名或错误的密码") 37 create_img(self.driver, name + ".png") 38 39 time.sleep(2) 40 41 42 if __name__ == "__main__": 43 unittest.main()