我正在尝试用解析XML中不同元素的特定方法编写一些单元测试。但是我在单元测试中解析“测试”xml文件时遇到了一些问题。
我的问题并不是与XML/XSD文件有关,而是关于如何在单元测试中正确解析它们。
这是我到目前为止的代码:
import unittest
from lxml import etree
from Directory.method_in_class import ClassName #changed the names for security
class TestXmlData(unittest.TestCase):
def setUp(self):
self.method_in_class = ClassName()
XSDDoc = etree.parse("dir/testxsd.xsd")
rootXSD = XSDDoc.getroot()
def test_whatever(self):
# Test whatever
if __name__ == '__main__':
unittest.main()
即使我在实现方法中以同样的方式进行解析,我也会得到以下错误:
错误:读取文件“dir/testxsd.xsd”时出错:无法加载外部实体“dir/testxsd.xsd”
我尝试了一些其他的选择,比如从这个答案加载文件,但是这样做会给我带来一个错误:
import unittest
from lxml import etree
import os
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
class TestSpecData(unittest.TestCase):
def setUp(self):
my_data_path = os.path.join(THIS_DIR, os.pardir, 'dir/testxsd.xsd')
rootXSD = my_data_path.getroot()
def test_whatever(self):
data = sum(1, 2)
self.assertEqual(data, 3)
if __name__ == '__main__':
unittest.main()
AttributeError:“str”对象没有属性“getRoot”
我也试过这个答案,但是我对Django不熟悉,所以有很多错误。
在编辑后的第二个版本中,您将对字符串而不是解析的XML树调用getroot
。不过,如果您使用绝对路径正确解析文件,这可以解决您的问题。
架构示例(test.xsd)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
<xs:element name="config" type="xs:string" />
</xs:schema>
Python代码(test.py
)
import unittest
from lxml import etree
import os
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
class TestSpecData(unittest.TestCase):
def setUp(self):
my_data_path = os.path.join(THIS_DIR, 'data/test.xsd')
tree = etree.parse(my_data_path)
root = tree.getroot()
def test_whatever(self):
data = sum([1, 2])
self.assertEqual(data, 3)
if __name__ == '__main__':
unittest.main()
输出
假设包含test.py
的文件夹test.xsd
位于名为data
的子文件夹中,并且在修复测试中的错误(添加列表括号)之后,输出为
$ python test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
我正在学习Spring,正在进行单元测试,bean在XML配置文件中指定。我想知道我是如何告诉它在文件系统中使用文件的。 将运行以下代码*: 豆子。xml文件与测试类位于同一个包中。 但是在使用的时候 它给了我这个错误信息: 组织。springframework。豆。工厂BeanDefinitionStoreException:IOException解析来自类路径资源[Users/pabernat
我想解析以下网站的地址:https://filialen.migros.ch/de/center:46.8202、6.9575/zoom:8/ null 有什么建议吗? 我的问题类似于前面的问题:如何在Python中解析具有相同类名的网站的多个属性?对于Selenium-debugging:在点(X,Y)不能单击元素
本文向大家介绍Python单元测试实例详解,包括了Python单元测试实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python单元测试。分享给大家供大家参考,具体如下: 在Python中进行单元测试需要用到自动单元测试框架PyUnit,Python2.1及其以后的版本都将PyUnit作为一个标准模块(即python的unittest模块),如果你很out,那么你需要从PyUni
本文向大家介绍详解python单元测试框架unittest,包括了详解python单元测试框架unittest的使用技巧和注意事项,需要的朋友参考一下 一:unittest是python自带的一个单元测试框架,类似于java的junit,基本结构是类似的。 基本用法如下: 1.用import unittest导入unittest模块 2.定义一个继承自unittest.TestCase的测试用例类
本文向大家介绍python单元测试unittest实例详解,包括了python单元测试unittest实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python单元测试unittest用法。分享给大家供大家参考。具体分析如下: 单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情。虽然会很快熟悉内容,但是修改和调试将是一件痛苦
本文向大家介绍Python单元测试及unittest框架用法实例解析,包括了Python单元测试及unittest框架用法实例解析的使用技巧和注意事项,需要的朋友参考一下 例题取用登录模块:代码如下 单元测试是什么: 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证 如何进行单元测试: 第一我们得写出测试用例,而测试用例主要的要素为(编号,标题,前置条件,操作步骤,