Python psycopg2测试由于语言原因导致的测试模块断言错误?

Python psycopg2测试由于语言原因导致的测试模块断言错误?,python,centos7,psycopg2,Python,Centos7,Psycopg2,我刚刚在centos7上安装了一台新的postgresql server,并从另一台centos7服务器连接到它。我运行了psycopg2 tests.unittest.main来检查这个模块。一切正常,除了: [myuser@myserver dbatools]$ python3 -c "from psycopg2 import tests; tests.unittest.main(defaultTest='tests.test_suite')" [...] ================

我刚刚在centos7上安装了一台新的postgresql server,并从另一台centos7服务器连接到它。我运行了psycopg2 tests.unittest.main来检查这个模块。一切正常,除了:

[myuser@myserver dbatools]$ python3 -c "from psycopg2 import tests; tests.unittest.main(defaultTest='tests.test_suite')" 
[...]
======================================================================
FAIL: test_diagnostics_values (psycopg2.tests.test_module.ExceptionsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib64/python3.4/site-packages/psycopg2/tests/test_module.py", line 189, in test_diagnostics_values
    self.assertEqual(e.diag.severity, 'ERROR')
AssertionError: 'ERREUR' != 'ERROR'
- ERREUR
?    ^^
+ ERROR
?    ^


----------------------------------------------------------------------
Ran 641 tests in 27.328s

FAILED (failures=1, skipped=62)
起初,两台服务器都有LANG=fr_fr.UTF-8(法语中Erreur=error)。 所以我把它改成了en_US.UTF-8:

localectl set-locale LANG=en_US.utf8
现在我有:

[myuser@myserver dbatools]$ localectl
   System Locale: LANG=en_US.utf8
       VC Keymap: fr
      X11 Layout: fr
[myuser@myserver dbatools]$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=en_US.utf8
此处出现异常(psycopg2/tests/test_module.py):

我查看了github上的源代码,找到了psycopg2.Error的定义,但实际上找不到它

在python3外壳中:

>>> import locale
>>> locale.getlocale()
('en_US', 'UTF-8')
>>> locale.getdefaultlocale()
('en_US', 'UTF-8')
>>> from psycopg2 import tests, __version__ as psycopg2_version
>>> print(psycopg2_version)
2.7.1 (dt dec pq3 ext lo64)
>>> tests.unittest.main(defaultTest='tests.test_suite')
#Same error

有人在运行psycopg2测试时遇到过这种错误吗?为什么在我将所有内容更改为en_US之后,它会返回一个法语单词?

嗯,实际上这确实是一个与语言相关的错误,但在postgresql server设置中

发件人:

异常psycopg2。错误

诊断

和来自:

PQresultErrorField()函数中的所有可用信息都作为属性由对象公开,例如严重性属性返回PG_DIAG_严重性代码

所以

然后:

[myuser@myserver dbatools]$ python3 -c "from psycopg2 import tests; tests.unittest.main(defaultTest='tests.test_suite')"
----------------------------------------------------------------------
Ran 641 tests in 24.979s

OK (skipped=62)

实际上,这确实是一个与语言相关的错误,但在postgresql server设置中

发件人:

异常psycopg2。错误

诊断

和来自:

PQresultErrorField()函数中的所有可用信息都作为属性由对象公开,例如严重性属性返回PG_DIAG_严重性代码

所以

然后:

[myuser@myserver dbatools]$ python3 -c "from psycopg2 import tests; tests.unittest.main(defaultTest='tests.test_suite')"
----------------------------------------------------------------------
Ran 641 tests in 24.979s

OK (skipped=62)
[myuser@mypostgresqlserver data]# grep fr_FR /data/postgresql.conf
lc_messages = 'fr_FR.UTF-8'                     # locale for system error message
lc_monetary = 'fr_FR.UTF-8'                     # locale for monetary formatting
lc_numeric = 'fr_FR.UTF-8'                      # locale for number formatting
lc_time = 'fr_FR.UTF-8'                         # locale for time formatting
[myuser@mypostgresqlserver data]# vim /data/postgresql.conf
[myuser@mypostgresqlserver data]# grep lc_messages /data/postgresql.conf
lc_messages = 'en_US.UTF-8'                     # locale for system error message
[myuser@mypostgresqlserver data]# systemctl restart postgresql-9.6.service
[myuser@myserver dbatools]$ python3 -c "from psycopg2 import tests; tests.unittest.main(defaultTest='tests.test_suite')"
----------------------------------------------------------------------
Ran 641 tests in 24.979s

OK (skipped=62)