加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

踩坑Django-test

发布时间:2020-12-20 10:44:56 所属栏目:Python 来源:网络整理
导读:在对 Django 项目跑测试用例时.数据库疯狂报错.查来查去原来是没有修改默认字符集为 utf8 . 这里要注意测试时候生成的是临时数据库,数据库的默认字符编码不是 utf8 ,我在linux上自己生成的 test database 已经指定了默认字符集为 utf8 ,原本以为没有问题的,

在对Django项目跑测试用例时.数据库疯狂报错.查来查去原来是没有修改默认字符集为utf8.

这里要注意测试时候生成的是临时数据库,数据库的默认字符编码不是utf8,我在linux上自己生成的test database已经指定了默认字符集为utf8,原本以为没有问题的,但是每次跑测试的时候,还是要将原来的已经存在的测试数据库给删除掉,特别是项目第一次跑测试的时候,还会让你输入yes来确认数据库删除,搞得我还以为每次都需要重新输入确认删除数据库的yes(实际上测试跑成功之后会很自觉的将创建的数据库删除掉,下次跑测试的时候,就不需要再进行确认了).之后新生成的数据库的字符编码就是 mysql默认的了.一般不是utf8,这个时候跑测试就可以看到疯狂报错的场面了.

解决办法很简单,就是将mysql的默认编码修改为utf8.当然在修改的过程中一样有坑要踩.根据网上的帖子去寻找my.cnf文件,基本上和本机linux上的路径对应不上,mysql的安装路径也是不一样的.可以使用whereis mysql来查看mysql安装的路径.找来找去最后直接使用搜索大法了,find / -name my.cnf,发现系统里面只有一个这个样的文件,vi my.cnf,打开发现的确是mysql的配置文件.接下来按照网上的帖子,写入以下内容在文件最后面空行:

[client]                  
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

输入成功重启mysql:

service mysqld restart

如果可以成功就可以了.

之后进入mysql中查看:

mysql>status

看到所有的编码相关都修改为了utf8就大功告成了.

如果不幸看到其他帖子,有可能输入的内容有错,导致mysql无法连接,如:

[client]                  
default-character-set=utf8
[mysqld]
default-character-set=utf8
collation-server=utf8_general_c

那么就需要再把mysqld的default-character-set=utf8改为character-set-server=utf8,重启服务应该成功.
如果还不成功,就查看一下进程,如果还在就杀死进程,再重启服务.

最后,在pycharm上面执行测试的时候,居然会根据光标所在行去找需要进行测试的函数,有时候会看到明明一个TestCase下写了好几个测试函数,却只有一个测试了;或者测试到了不相干的其他函数.那么就要仔细看看是否光标有误了.当然这个问题可以通过pycharm的设置来避免,我还在寻找这个设置项.

参考文章

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读