这次在进行注册页面的封装时,没有继承BasePage基础页面,而是直接调用poium测试库来实现Page功能
关乎poium测试库的使用这里略过。。
在编写注册测试用例时也用到了ddt模块的实现数据驱动参数化的功能,现实一个测试函数来验证多种情况,
在函数里面要做的就是对json文件种读取出来的name进行判断。
1 import os, sys, time 2 from poium import Page, PageElement 3 4 base_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 5 6 sys.path.append(base_dir + '\public') 7 ''' 8 利用poium测试库来进行Page封装,真真的实现元素定位和元素操作分离。。。。 9 ''' 10 11 class Enorllpage(Page): 12 13 """支持的定位方法Please use a locator:'id_'、'name'、'class_name'、'css'、'xpath'、'link_text'、'partial_link_text'.""" 14 15 clause = PageElement(name='submit') #条款 16 userna_box = PageElement(name='username') #名称 17 email_box = PageElement(name='email') #邮箱 18 password_box = PageElement(id_='password') #密码 19 pwd_confirm = PageElement(name='password_confirm') #再次确认密码 20 confirm = PageElement(name='submit') #提交 21 out = PageElement(id_='logout') 22 23 '''用例断言''' 24 enorll_succeed = PageElement(id_='myprofile') 25 26 '''您所选择的会员名称已被注册使用. 请改别的会员名称.''' 27 enorll_fail = PageElement(xpath="//table[@class='forumline']/tbody/tr[7]/td/span/font") 28 29 def Enorll_fail_assert(self): 30 error = self.driver.switch_to.alert.text 31 time.sleep(0.5) 32 self.driver.switch_to.alert.accept() 33 return error
1 from EnorllPage import Enorllpage 2 import os 3 import sys 4 import time 5 import unittest 6 import ddt 7 import random 8 from browser import Browser 9 from img import create_img 10 11 '''LoginPage路径''' 12 base_dir = os.path.dirname((os.path.abspath(__file__))) 13 sys.path.append(base_dir + '\home_page') 14 15 '''browser路径''' 16 BASE_DIR = os.path.dirname(os.path.dirname( 17 os.path.dirname(os.path.abspath(__file__)))) 18 sys.path.append(BASE_DIR + '\driver') 19 20 '''导入截图程序''' 21 img_dir = os.path.dirname(((os.path.dirname(os.path.abspath(__file__))))) 22 sys.path.append(img_dir + '\pubilc') 23 24 25 @ddt.ddt 26 class Enorlltest(Browser): 27 @ddt.file_data(base_dir + '\CaseData\enorlluser.json') 28 def test_case(self, name, email, pwd, pwd_, ): 29 obj = Enorllpage(self.driver) 30 obj.get("http://192.168.117.9:8080/jforum/user/insert.page") 31 obj.clause.click() 32 if name == "" and email == "": 33 name = ''.join(i for i in random.sample('zyxwvutsrqponmlkjihgfedcbaABCDEFGHIJKLMNOPQRSTUVWX', 5)) 34 email = ''.join(str(i) for i in random.sample(range(0, 11), 10)) + '@qq.com' 35 36 obj.userna_box.send_keys(name) 37 obj.email_box = email 38 obj.password_box = pwd 39 obj.pwd_confirm = pwd_ 40 obj.confirm.click() 41 assert obj.enorll_succeed.text == '个人资料' 42 create_img(self.driver, '注册成功.png') 43 obj.out.click() 44 '''失败的用例''' 45 if name == "DADDAA": 46 obj.userna_box.send_keys(name) 47 obj.email_box = email 48 obj.password_box = pwd 49 obj.pwd_confirm = pwd_ 50 obj.confirm.click() 51 error_test = obj.Enorll_fail_assert() 52 assert error_test == '两次输入的密码不合' 53 create_img(self.driver, '密码不一致.png') 54 time.sleep(1) 55 56 elif name == '': 57 obj.userna_box.send_keys(name) 58 obj.email_box = email 59 obj.password_box = pwd 60 obj.pwd_confirm = pwd_ 61 obj.confirm.click() 62 error_test = obj.Enorll_fail_assert() 63 assert error_test, '请填写会员名称输入框' 64 create_img(self.driver, '用户名为空.png') 65 66 elif name == 'admin': 67 obj.userna_box.send_keys(name) 68 obj.email_box = email 69 obj.password_box = pwd 70 obj.pwd_confirm = pwd_ 71 obj.confirm.click() 72 error_test = obj.enorll_fail.text 73 assert '会员名称已被注册使用' in error_test 74 create_img(self.driver, '会员重名.png') 75 76 elif name == "zxcv": 77 obj.userna_box.send_keys(name) 78 obj.email_box = email 79 obj.password_box = pwd 80 obj.pwd_confirm = pwd_ 81 obj.confirm.click() 82 error_test = obj.Enorll_fail_assert() 83 assert error_test, '请正确的填写电子邮件输入框' 84 create_img(self.driver, '邮箱输入框为空.png') 85 86 elif name == "replace": 87 obj.userna_box.send_keys(name) 88 obj.email_box = email 89 obj.password_box = pwd 90 obj.pwd_confirm = pwd_ 91 obj.confirm.click() 92 error_test = obj.Enorll_fail_assert() 93 assert error_test, '请正确的填写电子邮件输入框' 94 create_img(self.driver, '邮箱格式错误.png') 95 96 elif name == "split": 97 obj.userna_box.send_keys(name) 98 obj.email_box = email 99 obj.password_box = pwd 100 obj.pwd_confirm = pwd_ 101 obj.confirm.click() 102 error_test = obj.Enorll_fail_assert() 103 assert error_test, '请填写密码输入框' 104 create_img(self.driver, '密码输入框为空.png') 105 106 107 if __name__ == "__main__": 108 unittest.main()