• pom模式+ddt思想+logger+allure 重构jpress


    一、新建page

    1、BasePage

    import logging
    import logging.handlers
    import datetime
    from Lib.ShowapiRequest import ShowapiRequest
    import time
    import os
    from PIL import Image
    
    
    class BasePage(object):
    
        def __init__(self, driver):
            '''
            初始化driver
            :param driver:
            '''
            self.driver = driver
    
        def find_element(self, *loc):
            '''
            根据属性查找
            :param loc:
            :return:
            '''
            return self.driver.find_element(*loc)
    
        def type_text(self, text, *loc):
            '''
            输入文本
            :param text:
            :param loc: (多个参数需放至参数尾)
            :return:
            '''
            self.find_element(*loc).send_keys(text)
    
        def click(self, *loc):
            '''
            点击事件
            :param loc:
            :return:
            '''
            self.find_element(*loc).click()
    
        def clear(self, *loc):
            '''
            清空文本
            :param loc:
            :return:
            '''
            self.find_element(*loc).clear()
    
        def get_title(self):
            '''
            获取title
            :return:
            '''
            return self.driver.title
    
        def get_logger(self):
            '''
            记录日志
            :return:
            '''
            logger = logging.getLogger('mylogger')
            logger.setLevel(logging.DEBUG)
            rf_handler = logging.handlers.TimedRotatingFileHandler(
                'D:TestSoftwarePyCharmPyCharmProjectJpressLogs\all.log', when='midnight', interval=1, backupCount=7,
                atTime=datetime.time(0, 0, 0, 0))
            rf_handler.setFormatter(logging.Formatter('%(%(asctime)s-%(levelname)s-%(message)s'))
    
            f_handler = logging.FileHandler('D:TestSoftwarePyCharmPyCharmProjectJpressLogserror.log')
            f_handler.setLevel(logging.ERROR)
            rf_handler.setFormatter(logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s[:%(lineno)d - %(message)s]'))
    
            logger.addHandler(rf_handler)
            logger.addHandler(f_handler)
            return logger
    
    
        def get_code(self, id):
            '''
            获取验证码
            :param id:
            :return:
            '''
            #   获取验证码图片
            t = time.time()
            #   保存到当前项目下Screen下
            path = os.path.dirname(os.path.dirname(__file__)) + '\Screen'
            picture_name1 = path + '\' + str(t) + '.png'
            self.driver.save_screenshot(picture_name1)
            code = self.driver.find_element_by_id(id)
            #   print(code.location)
            left = code.location['x']
            top = code.location['y']
            right = code.size['width'] + left
            height = code.size['height'] + top
            dpr = self.driver.execute_script('return window.devicePixelRatio')
            #   print(dpr)
            im = Image.open(picture_name1)
            #   抠验证码区域图
            code_img = im.crop((left * dpr, top * dpr, right * dpr, height * dpr))
            picture_name2 = path + '\' + str(t) + '.png'
            code_img.save(picture_name2)
            #   调用验证码识别api xxx xxx
            #   272526                 a924d4e982ae404b8a068b4d1c7784f2
            r = ShowapiRequest("http://route.showapi.com/184-4", "xxx", "xxx")
            r.addFilePara("image", picture_name2)
            r.addBodyPara("typeId", "34")
            r.addBodyPara("convert_to_jpg", "0")
            r.addBodyPara("needMorePrecise", "0")
            res = r.post()
            text = res.json()['showapi_res_body']
            code_text = text['Result']
            return code_text
    

    2、管理员登录page

    from selenium.webdriver.common.by import By
    from Cases.pom.page.BasePage_Utils import BasePage
    from time import sleep
    
    class AdLogin_Page(BasePage):
    
        adName =(By.NAME, 'user')
        adPwd = (By.NAME, 'pwd')
        adCaptcha = (By.NAME, 'captcha')
        adRegister_btn =(By.CLASS_NAME, 'btn')
    
        def __init__(self,driver):
            BasePage.__init__(self, driver)
    
        def admin_Login_Page(self):
            '''
                管理员登录
                :param
            '''
            self.driver.get('http://192.168.242.101:8080/jpress/user/login')
            self.driver.maximize_window()
            self.logger = BasePage.get_logger()
            self.logger.info('测试管理员用户登录')
    
    
        def admin_username_input(self,username):
            '''
            输入管理员名称
            :param username:
            :return:
            '''
            self.clear(*self.adName)
            self.type_text(username, *self.adName)
            self.logger.debug('输入管理员用户名称: %s', username)
    
        def admin_pwd_input(self,pwd):
            '''
            输入管理员密码
            :param pwd:
            :return:
            '''
            self.clear(*self.adPwd)
            self.type_text(pwd, *self.adPwd)
            self.logger.debug('输入管理员用户密码: %s', pwd)
    
    
        def admin_captcha_input(self,captcha):
            '''
    
            :param captcha:
            :return:
            '''
            self.clear(*self.adCaptcha)
            self.type_text(captcha, *self.adCaptcha)
            self.logger.debug('输入管理员用户验证码: %s', captcha)
    
        '''
            pm: admin_login
            param:  
        '''
        def admin_login(self):
            '''
            点击登录
            :return:
            '''
            self.click(*self.adRegister_btn)
            self.logger.debug('点击,管理员用户登录!!!!!')
            sleep(2)
    
    

    3、普通用户登录page

    from selenium.webdriver.common.by import By
    from Cases.pom.page.BasePage_Utils import BasePage
    from time import sleep
    
    class UserLoginPage(BasePage):
    
        userName =(By.NAME, 'user')
        userPwd = (By.NAME, 'pwd')
        userCaptcha = (By.NAME,'captcha')
        userLogin_btn =(By.CLASS_NAME,'btn')
    
    
        def __init__(self,driver):
            BasePage.__init__(self, driver)
    
    
        def user_Login_Page(self):
            '''
            进入登录页
            :return:
            '''
            self.driver.get('http://192.168.242.101:8080/jpress/admin/login')
            self.driver.maximize_window()
            self.logger = BasePage.get_logger()
            self.logger.info('测试用户登录')
    
        def user_username(self,username):
            '''
            输入管理员名称
            :param username:
            :return:
            '''
            self.clear(*self.userName)
            self.type_text(username, *self.userName)
            self.logger.debug('输入普通用户名称: %s', username)
    
    
        def user_pwd(self,pwd):
    
            '''
            输入管理员密码
            :param pwd:
            :return:
            '''
            self.clear(*self.userPwd)
            self.type_text(pwd, *self.userPwd)
            self.logger.debug('输入普通用户密码: %s',pwd)
    
        def user_captcha(self,captcha):
            '''
            输入管理员验证码
            :param captcha:
            :return:
            '''
            self.clear(*self.userCaptcha)
            self.type_text(captcha, *self.userCaptcha)
            self.logger.debug('输入普通用户验证码: %s',captcha)
    
        def user_login(self):
            '''
            点击管理员登录
            :return:
            '''
            self.click(*self.userLogin_btn)
            self.logger.debug('点击,普通用户登录!!!!!')
            sleep(2)
    

    4、普通用户注册page

    from time import sleep
    
    from selenium.webdriver.common.by import By
    
    from Cases.pom.page.BasePage_Utils import BasePage
    
    
    class UserRegisterPage(BasePage):
    
        userName = (By.NAME, 'username')
        userEmail = (By.NAME, 'email')
        userPwd = (By.NAME, 'pwd')
        userConfirmPwd = (By.NAME, 'confirmPwd')
        userCaptcha = (By.NAME, 'captcha')
        user_register_btn = (By.CLASS_NAME, 'btn')
    
    
        def __init__(self, driver):
            '''
                :param 初始化driver
                :return
            '''
            BasePage.__init__(self, driver)
    
    
        def register_page(self):
            '''
                用户注册页
            '''
            self.driver.get('http://192.168.242.101:8080/jpress/user/register')
            self.driver.maximize_window()
            self.logger = BasePage.get_logger()
            self.logger.info('测试普通用户注册!!!')
    
    
        def input_username(self, username):
            '''
                :param username
                :return
            '''
            self.clear(*self.userName)
            self.type_text(username, *self.userName)
    
        def input_email(self, email):
            '''
            :param email:
            :return:
            '''
            self.clear(*self.userEmail)
            self.type_text(email, *self.userEmail)
    
        def input_pwd(self, pwd):
            '''
            :param pwd:
            :return:
            '''
            self.clear(*self.userPwd)
            self.type_text(pwd, *self.userPwd)
    
        def input_confirmPwd(self, confirmPwd):
            '''
            输入确认密码
            :param confirmPwd:
            :return:
            '''
            self.clear(*self.userConfirmPwd)
            self.type_text(confirmPwd, *self.userConfirmPwd)
    
        def input_captcha(self, captcha):
            '''
            输入验证码
            :param captcha:
            :return:
            '''
            self.clear(*self.userCaptcha)
            self.type_text(captcha, *self.userCaptcha)
    
        def click_register_btn(self):
            '''
            点击注册
            :return:
            '''
            self.click(*self.user_register_btn)
            sleep(2)
    
    

    5、文章管理page

    from time import sleep
    
    from selenium.webdriver import ActionChains
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from Cases.pom.page.BasePage_Utils import BasePage
    
    
    class ArticlePage(BasePage):
        '''
            文章管理page
        '''
    
        def __init__(self, login):
            BasePage.__init__(self, login.driver)
            self.login = login
            self.logger = BasePage.get_logger()
            self.logger.info('测试文章管理')
    
        # 文章loc
        click_article_loc = (By.XPATH, '//*[@id="sidebar-menu"]/li[4]/a/span[1]')
        # 文章管理loc
        click_article_manage_loc = (By.XPATH, '//*[@id="sidebar-menu"]/li[4]/ul/li[1]/a')
        # 添加文章按钮loc
        click_add_article_btn_loc = (By.XPATH, '/html/body/div/div/section[3]/div/div/div/div[1]/div/div/a')
    
        # 文章标题
        article_title_loc = (By.ID, 'article-title')
    
        # iframe loc
        iframe_loc = (By.XPATH, '//*[@id="cke_1_contents"]/iframe')
    
        # body loc
        body_loc = (By.XPATH, '/html/body')
    
        # 添加按钮
        add_btn_loc = (By.XPATH, '//*[@id="form"]/div/div[2]/div[1]/div/button[1]')
    
        # 文章链接
        article_link_loc = (By.XPATH, '/html/body/div/div/section[3]/div/div/div/div[2]/table/tbody/tr[2]/td[2]/strong/a')
    
        # 删除文章链接
        del_article_link_loc = (By.XPATH, '/html/body/div/div/section[3]/div/div/div/div[2]/table/tbody/tr[2]/td[2]/div/div/a[3]')
    
        # 文章loc
        select_all_checkbox_loc = (By.XPATH, '/html/body/div/div/section[3]/div/div/div/div[2]/table/tbody/tr[1]/th[1]/input')
    
        # 删除所有按钮
        del_all_btn_loc = (By.ID, 'batchDel')
    
    
        def click_article(self):
            '''
            点击文章菜单
            :return:
            '''
            self.click(*self.click_article_loc)
            self.logger.debug('点击文章菜单')
            sleep(1)
    
        def click_article_manage(self):
            '''
            点击文章管理
            :return:
            '''
            self.click(*self.click_article_manage_loc)
            self.logger.debug('点击文章管理菜单')
            sleep(1)
    
    
        def click_add_article(self):
            '''
            点击添加文章
            :return:
            '''
            self.click(*self.click_add_article_btn_loc)
            self.logger.debug('点击添加文章')
            sleep(1)
    
        def input_article_title(self, title):
            '''
            输入文章标题
            :param title:
            :return:
            '''
            self.type_text(title, *self.article_title_loc)
            self.logger.debug('输入文章标题: %s:', title)
            sleep(1)
    
        def input_body(self, body):
            '''
            输入文章body
            :param body:
            :return:
            '''
            frame1 = self.find_element(*self.iframe_loc)
            self.login.driver.switch_to.frame(frame1)
            self.type_text(body, *self.body_loc)
            self.login.driver.switch_to.default_content()
            self.logger.debug('输入文章内容: %s:', body)
    
        def click_add_btn(self):
            '''
            点击添加按钮
            :return:
            '''
            self.click(*self.add_btn_loc)
            self.logger.debug('点击添加文章按钮')
    
        def del_single_article(self):
            '''
            删除单个文章
            :return:
            '''
            # 点击删除文章
            link = self.find_element(*self.article_link_loc)
            ActionChains(self.login.driver).move_to_element(link).perform()
            sleep(1)
            del_elem = self.find_element(*self.del_article_link_loc)
            self.logger.debug('点击文章下的子菜单垃圾箱')
            del_elem.click()
    
        def del_all_article(self):
            '''
            删除所有文章
            :return:
            '''
            sleep(1)
    
            self.find_element(*self.click_article_manage_loc).click()
            sleep(1)
            # 选中全选
            link = self.find_element(*self.select_all_checkbox_loc)
            link.click()
    
            self.find_element(*self.del_all_btn_loc).click()
            self.logger.debug('删除全部文章')
    
            WebDriverWait(self.login.driver, 5).until(EC.alert_is_present())
            alert = self.login.driver.switch_to.alert
            alert.accept()
    

    6、分类管理page

    from time import sleep
    
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.select import Select
    from Cases.pom.page.BasePage_Utils import BasePage
    
    
    class CategoryPage(BasePage):
        '''
         分类管理页
        '''
    
        def __init__(self, login):
            '''
            获取login
            :param login:
            '''
            BasePage.__init__(self, login.driver)
            self.logger = BasePage.get_logger()
            self.logger.info('测试分类管理页')
    
        click_article_loc = (By.XPATH, '//*[@id="sidebar-menu"]/li[4]/a/span[1]')
        '''
        文章loc
        '''
        click_category_loc = (By.XPATH, '//*[@id="sidebar-menu"]/li[4]/ul/li[3]/a')
        '''
        分类loc
        '''
        category_name_loc = (By.NAME, 'category.title')
        '''
        分类名称loc
        '''
        parent_category_loc = (By.NAME, 'category.pid')
        '''
        父分类loc
        '''
        slug_loc = (By.NAME, 'category.slug')
        '''
        slug loc
        '''
        add_btn_loc = (By.XPATH, '/html/body/div/div/section[2]/div/div[1]/div/form/div[2]/div/div/button')
        '''
        添加按钮
        '''
        def click_article(self):
            '''
            点击文章
            :return:
            '''
            self.click(*self.click_article_loc)
            self.logger.debug('点击文章')
            sleep(1)
    
        def click_category(self):
            '''
            点击分类
            :return:
            '''
            self.click(*self.click_category_loc)
            self.logger.debug('点击分类')
            sleep(1)
    
    
        def input_category_name(self, name):
            '''
            输入分类名称
            :param name
            :return:
            '''
            self.type_text(name, *self.category_name_loc)
            self.logger.debug('输入分类名称')
            sleep(1)
    
        def select_parent_category(self, parent_name):
            '''
            选择父分类
            :param parent_name:
            :return:
            '''
            parent_category_elem = self.find_element(*self.parent_category_loc)
            Select(parent_category_elem).select_by_visible_text(parent_name)
            self.logger.debug('选择父分类')
    
        def input_slug(self, slug):
            '''
            输入slug
            :param slug:
            :return:
            '''
            try:
                self.type_text(slug, *self.slug_loc)
                self.logger.debug('输入slug')
            except:
                self.logger.warning('未找到元素: %s',slug)
    
    
        def click_add_btn(self):
            '''
            点击分类保存按钮
            :return:
            '''
            self.click(*self.add_btn_loc)
            self.logger.debug('点击保存')
    
    

    二、测试

    1、测试管理员登录

    
    
    
    import pytest
    from selenium.webdriver.support.wait import WebDriverWait
    
    from Cases.pom.page.test_AdLogin_Page import AdLogin_Page
    from selenium.webdriver.support import expected_conditions as EC
    from selenium import webdriver
    from time import sleep
    from Cases.pom.page.BasePage_Utils import BasePage
    import allure
    
    
    @allure.feature('测试管理员登录')
    class TestAdminLogin(object):
    
        admin_login_data=[
            # ('admin', '123456', '666', '验证码不正确,请重新输入'),
            ('admin', '123456', '111', 'JPress后台'),
        ]
    
        def setup_class(self) -> None:
            '''
            管理员登录初始化
            :return:
            '''
            self.driver = webdriver.Chrome()
            self.adminLoginPage = AdLogin_Page(self.driver)
            self.adminLoginPage.admin_login()
            self.logger = BasePage.get_logger()
    
        # @pytest.mark.skip()
        @allure.title('管理员登录')
        @allure.step('输入账号/密码/登录/验证码,点击登录')
        @pytest.mark.dependency(name='admin_login')
        @pytest.mark.parametrize('username,pwd,captcha,expected', admin_login_data)
        def test_admin_login(self, username, pwd, captcha, expected):
            '''
            测试管理员登录
            :param username:
            :param pwd:
            :param captcha:
            :param expected:
            :return:
            '''
    
            self.adminLoginPage.admin_username_input(username)
            self.logger.debug('输入管理员名称: %s',username)
            self.adminLoginPage.admin_pwd_input(pwd)
            self.logger.debug('输入管理员密码: %s', pwd)
            if captcha != '666':
                captcha = BasePage.get_code('captchaImg')
            self.adminLoginPage.admin_captcha_input(captcha)
            self.logger.debug('输入管理员验证码: %s', captcha)
            self.adminLoginPage.admin_login()
            self.logger.debug('点击登录按钮!!!!!!')
    
            if captcha != '666':
                WebDriverWait(self.driver, 5).until(EC.title_is(expected))
                assert expected == self.driver.title
            else:
                WebDriverWait(self.driver, 5).until(EC.alert_is_present())
                alert = self.driver.switch_to.alert
    
                assert alert.text == expected
                self.logger.warning('校验alert.text == expected ')
                alert.accept()
    
                sleep(5)
    
    
    if __name__ == '__main__':
        pytest.main(['testAdminLogin.py'])
    
    

    2、测试普通用户登录

    
    import pytest
    from selenium.webdriver.support.wait import WebDriverWait
    from Cases.pom.page.BasePage_Utils import BasePage
    from Cases.pom.page.test_UseLogin_Page import UserLoginPage
    from selenium.webdriver.support import expected_conditions as EC
    from selenium import webdriver
    from time import sleep
    import allure
    
    
    @allure.feature('测试普通用户登录')
    class TestUserLogin(object):
        '''
        测试普通用户登录
        '''
    
        login_data=[
            ('','123456','账号不能为空'),
            ('admin', '123456', '用户中心-2'),
        ]
    
        def setup_class(self) -> None:
            self.driver = webdriver.Chrome()
            self.loginPage = UserLoginPage(self.driver)
            self.loginPage.user_Login_Page()
            self.logger = BasePage.get_logger()
            self.logger.info('开始测试-普通用户登录!')
    
        @allure.title('测试用户登录')
        @allure.step('输入用户名称/密码,点击登录')
        @pytest.mark.parametrize('username, pwd, expected', login_data)
        def test_user_login(self, username, pwd, expected):
            '''
            测试用户登录
            :param username:
            :param pwd:
            :param expected:
            :return:
            '''
            self.loginPage.user_username(username)
            self.logger.debug('输入普通用户名:%s',username)
            self.loginPage.user_pwd(pwd)
            self.logger.debug('输入普通用户名:%s', pwd)
            self.loginPage.user_login()
            self.logger.debug('点击登录')
            sleep(3)
            # 验证
            if username != '':
                # 等待提示框
                WebDriverWait(self.driver, 5).until(EC.title_is(expected))
                sleep(3)
                # 验证
                assert self.driver.title == expected
                self.logger.debug('当用户名不为空时,校验driver.title == expected')
            else:
                # 等待提示框
                WebDriverWait(self.driver, 5).until(EC.alert_is_present())
                alert = self.driver.switch_to.alert
                assert alert.text == expected
                alert.accept()
                self.logger.debug('当用户名为空时,校验driver.title == expected')
    
    
    if __name__ == '__main__':
        pytest.main(['-sv', 'testUserLogin.py'])
    
    
    

    3、测试普通用户注册

    import pytest
    from selenium.webdriver.support.wait import WebDriverWait
    
    from Cases.pom.page.test_UseRegist_Page import UserRegisterPage
    from selenium.webdriver.support import expected_conditions as EC
    from selenium import webdriver
    from time import sleep
    from Cases.pom.page.BasePage_Utils import BasePage
    import allure
    
    
    @allure.feature('测试用户注册')
    class TestUserRegister(object):
        '''
        测试普通用户注册
        '''
    
        login_data = [
            ('test001', 'test001@qq.com', '123456', '123456', '666', '验证码不正确'),
            ('demo007', 'demo006@qq.com', '123456', '123456', '111', '注册成功,点击确定进行登录。'),
        ]
    
        def setup_class(self) -> None:
            self.driver = webdriver.Chrome()
            self.registerPage = UserRegisterPage(self.driver)
            self.registerPage.register_page()
            self.logger = BasePage.get_logger()
            self.logger.info('开始测试-普通用户注册!!!')
    
        @allure.title('测试用户注册')
        @allure.step('输入用户名称/邮箱/密码/确认密码/验证码,点击登录')
        @pytest.mark.parametrize('username,email,pwd,confirmPwd,captcha,expected', login_data)
        def test1_register(self, username, email, pwd, confirmPwd, captcha, expected):
            '''
            测试普通用户注册
            :param username:
            :param email:
            :param pwd:
            :param confirmPwd:
            :param captcha:
            :param expected:
            :return:
            '''
    
            self.registerPage.input_username(username)
            self.logger.debug('输入普通用户名称:%s',username)
            self.registerPage.input_email(email)
            self.logger.debug('输入普通用户邮箱:%s', email)
            self.registerPage.input_pwd(pwd)
            self.logger.debug('输入普通用户密码:%s', pwd)
            self.registerPage.input_confirmPwd(confirmPwd)
            self.logger.debug('输入确认密码:%s', confirmPwd)
    
            if captcha != '666':
                captcha = BasePage.get_code(self.driver, 'captchaimg')
            self.registerPage.input_captcha(captcha)
            self.logger.debug('输入验证码:%s', captcha)
            self.registerPage.click_register_btn()
            self.logger.debug('点击注册按钮')
    
            WebDriverWait(self.driver, 5).until(EC.alert_is_present())
            alert = self.driver.switch_to.alert
            assert alert.text == expected
            self.logger.debug('校验alert.text == expected')
            alert.accept()
            sleep(5)
    
    
    if __name__ == '__main__':
        pytest.main(['-sv', 'testUserRegister.py'])
    
    

    4、测试文章管理

    import pytest
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from Cases.pom.page.test_Article_Page import ArticlePage
    from selenium.webdriver.support import expected_conditions as EC
    from Cases.pom.pageTest.testAdLogin import TestAdminLogin
    from Cases.pom.page.BasePage_Utils import BasePage
    from time import sleep
    import allure
    
    
    @allure.feature('测试文章管理')
    class TestArticle(object):
        '''
        测试文章管理
        '''
        article_data = [
            ('我的文章', '我的文章内容', '文章保存成功。')
        ]
    
        def setup_class(self) -> None:
            self.login = TestAdminLogin()
            self.articlePage = ArticlePage(self.login)
            self.logger = BasePage.get_logger()
    
        @allure.title('测试添加文章')
        @allure.step('添加文章标题、内容,点击发布')
        @pytest.mark.dependency(depends=["admin_login"], scope="module")
        @pytest.mark.parametrize('title, content, expected', article_data)
        def test_add_ok(self, title, content, expected):
            '''
            测试添加文章
            :param title:
            :param content:
            :param expected:
            :return:
            '''
            self.articlePage.click_article()
            self.logger.debug('点击文章')
            self.articlePage.click_article_manage()
            self.logger.debug('点击文章管理')
            self.articlePage.click_add_article()
            self.logger.debug('点击添加文章')
            sleep(1)
    
            self.articlePage.input_article_title(title)
            self.logger.debug('输入文章标题:%s',title)
            self.articlePage.input_body(content)
            self.logger.debug('输入文章内容:%s', content)
            self.articlePage.click_add_btn()
            self.logger.debug('点击发布按钮')
    
            loc = (By.CLASS_NAME, 'toast-message')
    
            WebDriverWait(self.login.driver, 5).until(EC.visibility_of_element_located(loc))
            msg = self.login.driver.find_element(*loc).text
            assert msg == expected
            sleep(2)
    
        @allure.title('测试删除单个文章')
        @allure.step('选择文章,点击垃圾箱删除')
        @pytest.mark.dependency(depends=["admin_login"], scope="module")
        def test_delete_one_article_ok(self):
            '''
            测试删除单个文章
            :return:
            '''
            # 接上一个添加文章测试,不用再点击文章链接,直接点击文章管理
            self.articlePage.click_article_manage()
            self.logger.debug('点击文章管理')
            self.articlePage.del_single_article()
            self.logger.debug('删除文章')
            sleep(3)
    
        @allure.title('测试删除所有文章')
        @allure.step('全选文章,点击删除')
        @pytest.mark.dependency(depends=["admin_login"], scope="module")
        def test_delete_all_article_ok(self):
            '''
            测试删除所有文章
            :return:
            '''
            self.articlePage.del_all_article()
            self.logger.debug('删除所有文章')
    
    
    if __name__ == '__main__':
        pytest.main(['testArticle.py'])
    
    

    5、测试分类管理

    import pytest
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    from Cases.pom.page.BasePage_Utils import BasePage
    from Cases.pom.page.test_Catefory_Page import CategoryPage
    from selenium.webdriver.support import expected_conditions as EC
    from Cases.pom.pageTest.testAdLogin import TestAdminLogin
    from time import sleep
    import allure
    
    
    @allure.feature('测试分类管理')
    class TestCategory(object):
        '''
        测试分类管理
        '''
    
        category_data = [
            ('','python', 'test', '分类名称不能为空'),
            ('test','python', 'test', ''),
        ]
    
        def setup_class(self) -> None:
            self.login = TestAdminLogin()
            self.categoryPage = CategoryPage(self.login)
            self.logger = BasePage.get_logger()
            self.logger.info('测试分类管理!!!!')
    
        @allure.title('添加分类')
        @allure.step('输入分类标题、内容、slug点击发布')
        @pytest.mark.dependency(depends=["admin_login"], scope="module")
        @pytest.mark.parametrize('name,parent,slug,expected', category_data)
        def test_add_category(self, name, parent, slug, expected):
            '''
            测试分类
            :param name:
            :param parent:
            :param slug:
            :param expected:
            :return:
            '''
    
            if name == '':
                self.categoryPage.click_article()
                self.logger.debug('点击文章')
                self.categoryPage.click_category()
                self.logger.debug('点击分类')
    
            self.categoryPage.input_category_name(name)
            self.logger.debug('输入分类名称: %s',name)
    
            self.categoryPage.select_parent_category(parent)
            self.logger.debug('选择父分类: %s', parent)
            self.categoryPage.input_slug(slug)
            self.logger.debug('输入slug: %s', slug)
            self.categoryPage.click_add_btn()
            self.logger.debug('点击添加')
    
            if name == '':
                loc = (By.CLASS_NAME, 'toast-message')
                WebDriverWait(self.login.driver, 5).until(EC.visibility_of_element_located(loc))
                msg = self.login.driver.find_element(*loc).text
                assert msg == expected
                self.logger.debug('校验:assert msg == expected')
                sleep(5)
            else:
                assert 1 == 1
    
    if __name__ == '__main__':
        pytest.main(['testCategory.py'])
    
    
  • 相关阅读:
    [php]php设计模式 Command(命令模式)
    [php]php设计模式 Observer(观察者模式)
    [转]Ubuntu 系统安装极点五笔
    [转] 关于开源协议
    上传大小限制设置
    php开启安全模式后禁用的函数
    [php]php设计模式 Template (模板模式)
    [php]php设计模式 Singleton(单例模式)
    [php]php设计模式 Strategy(策略模式)
    [转]调优您的 LAMP 应用程序的 5 种简单方法
  • 原文地址:https://www.cnblogs.com/c-jw/p/14042299.html
Copyright © 2020-2023  润新知