我有一个模块,其中包含使用py.test编写的测试。 它有许多不同的函数对不同的数据库后端执行相同的操作 - 主要是sqlite和PostgreSQL。
如果安装了数据库,我只想运行PostgreSQL测试。我最初的想法是使用pytest.importorskip
标记并检查是否安装了psycopg2
。这可能有点太成功了,因为即使安装了psycopg2
,它也会在我的所有虚拟机上跳过这些测试。
当我在安装了PostgreSQL的VM上运行py.test -rs
时,我在输出中看到了这一点:
SKIP [1] /home/andy47/pf/test_populate.py:30: could not import 'psycopg2'
SKIP [1] /home/andy47/pf/test_populate.py:25: could not import 'psycopg2'
但是当我运行python时,我可以导入模块:
$ python
>>> import psycopg2
>>> psycopg2.__version__
'2.6 (dt dec pg3 ext lo64)'
这个导入问题可能是由我在virtualenv中运行应用程序引起的吗?