接上篇内容进行优化:
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))