selenium之Page Objects 实战二

接上篇内容进行优化:

https://mp.csdn.net/mp_blog/creation/editor/129996766

5.优化:data文件夹存放测试数据

单独把错误的信息和测试地址单独的分离出来,在data目录下创建ui.xml文件,在该文件中编写需要分离的数据

<?xml version="1.0" encoding="utf-8" ?>
<DataDriven>
    <!--# 单独把错误的信息和测试地址单独的分离出来,在data目录下创建ui.xml文件,在该文件中编写需要分离的数据,代码如下:-->
    <url>https://mail.sina.com.cn/#</url>
    <divText emailNull="请输入邮箱名" emailFormat="您输入的邮箱名格式不正确"></divText>

</DataDriven>

6.优化:读取xml文件的内容

# -*- coding:utf-8 -*-
import os

import xml.dom.minidom
from xml.dom import minidom
"""
读取xml文件的内容
"""

class OperationXml(object):
    def dir_base(self, fileName, filePath='data'):
        """获取data文件夹下的文件"""
        """ :param fileName:要读的文件名称
        :param fileName:要读的文件名对应的文件夹"""
        return os.path.join(os.path.dirname(os.path.dirname(__file__)), filePath, fileName)

    def getXmlData(self, value):
        """获取xml单节点中的数据"""
        dom = xml.dom.minidom.parse(self.dir_base('ui.xml'))
        db = dom.documentElement
        name = db.getElementsByTagName(value)
        nameValue = name(0)
        return nameValue.firstChild.data

    def getXmlUser(self, parent, child):
        """获取子节点中的数据"""
        """:param parent:xml 文件中父节点的名称
        :param child:xml 文件中子节点的名称"""
        dom = xml.dom.minidom.parse(self.dir_base('ui.xml'))
        db = dom.documentElement
        itemlist = db.getElementsByTagName(parent)
        item = itemlist[0]
        return item.getAttribute(child)

7.优化:重构刚才test_sina.py的代码

重构刚才test_sina.py的代码。直接从xml文件中读取url和错误信息

如果不使用data中的测试数据的话,直接执行1-4和第10步就行。为了代码优化执行后面的步骤。

建议使用data文件的测试数据

通过代码方式可以把测试URL,返回的错误信息分离到xml中,即使某些时候由于某些情况需要修改,只需要在xml文件中修改对应的值就可以了。

import unittest
from page.sina import *
from page.init import *
import time as t
from utils.operationXml import *
from selenium import webdriver

"""
重构刚才test_sina.py的代码。直接从xml文件中读取url和错误信息,实现代码如下:
"""


class SinaTest(unittest.TestCase, Sina, OperationXml):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)
        self.driver.get(self.getXmlData('url'))

    def tearDown(self):
        self.driver.quit()

    def test_sinLogin_001(self, parent='divText', value='emailNull'):
        """登录业务:账号密码为空验证"""
        self.login(",")
        self.assertEqual(self.getLoginError(), self.getXmlUser(parent, value))

    def test_sinaLogin_002(self, parent='divText', value='emaiFormat'):
        """登录业务:输入不规范邮箱"""
        self.login('wuyq1303', 'as888')
        self.assertEqual(self.getLoginError, self.getXmlUser(parent, value))


if __name__ == '__main__':
    unittest.main(verbosity=2)

8.优化:测试固件进行分离

import unittest
from selenium import webdriver
from utils.operationXml import *
"""
测试固件单独分离出来
"""

class Init(unittest.TestCase, OperationXml):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)
        self.driver.get('https://mail.sina.com.cn/')

    def tearDown(self):
        self.driver.quit()

9.优化:test_sina.py

测试层中的SinaTest测试类只需要继承init模块中的init类就可以了

class SinaTest(Init, Sina):
    def test_sinaLogin_001(self, parent='divText', value='emailNull'):
        """登录业务:账号密码为空验证"""
        self.login("")
        self.assertEqual(self.getLoginError, self.getXmlUser(parent, value))

    def test_sinaLogin_002(self, parent='divText', value='emailFormat'):
        """登录业务:输入不规范邮箱名"""
        self.login('wuya1303', 'asd888')
        self.assertEqual(self.getLoginError, self.getXmlUser(parent, value))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值