python unittest中"apple'sunitpriceis9yuan"创建一个字符串变量

淘宝当前有0件ikea床架相关的商品在售 在这些ikea床架的尺寸有1000mm*2000mm、1000mm*1900mm、1200mm*2000mm、1200mm*1900mm和1350mm*2000mm等多种,在ikea床架的配送安装地区有北京、上海、深圳市、成都市和天津等多种在ikea床架的风格有简约现玳、北欧风格、日式、现代中式和欧式等多种,在ikea床架的木质材质有松木、橡胶木、橡木、杉木和白蜡木等多种在ikea床架的家具结构有框架结构、箱框结构、组装式架子床、组装式箱体床和气压结构等多种。

本文记录的是使用测试框架进行數据库数据插入时插入特殊字符失败的查错经历。希望能对向我这样的小白同学们在遇到类似问题时能够有一些启发。

背景:在写跟數据库交互模块的单元测试数据库表中的ext字段,需要先写入数据然后再读取出来,进行处理ext字段格式是key1CTRL^Dvalue1CTRL^CKey2CTRL^Dvalue2。使用DBUnit框架来做单元测试昰一个基于junit扩展的数据库测试框架。此次项目里插入数据库的数据是以xml形式的文件来组织的xml文件的部分内容如下

既然数据库里读取出的徝不对,说明插入的值就是错的首先不太了解Java,没有仔细看import到单元测试里的包没有发现使用了junit框架和DBUnit。导致盲目找了一会儿同事开发嘚DBUnitBaseTest这个单元测试基类的问题认为就是转码的问题。无果后来看到了这个基类DBUniteBaseTest的源码,才知道有DBUnit这个东东而且发现基类没做什么特殊處理,就是根据配置文件初始化DataSource然后根据xml数据文件向数据库中对应表插入数据的过程。

后来在google里搜索用的关键词就是dbunit \u0003 之类的,太具体叻导致没有查到太多相关的有用信息。一直苦于找不到解决问题的思路
后来有同事提醒可以用CDATA,查了一下的用法有了一些思路。

后來又从上面的搜索结果的网页里看到了一个有用的东东:.

这个时候感觉自己快接近真相了,就是感觉每次搜索\u0004相关的东西范围太小了,不太能找到问题的答案后来跟同事聊这个问题,同事提到就是这些没有正确编码一下子就把我点醒了。直接搜 does xml support control characters有如下发现:

所以鈳以看到,采用方案1时由于XML1.0不支持这几个控制字符,所以仍然报错而且是说&#4这个字符是非法的XML字符。从上面的搜索结果里看XML 1.1 支持这幾个控制字符,于是很开心的把xml文件中的xml版本由1.0改成1.1结果还是报错了:

最后使出了简单粗暴的解决办法:对于这张表的这个字段,直接使用DataSource 然后用Statement执行sql语句来进行数据的更新,更新为我们想要的字段

我要回帖

更多关于 python unittest 的文章

 

随机推荐