2012-07-12 101 views
1

標題幾乎說明了它。我遇到的問題與python 2.5到python unittest python中的更改有關。當我用python運行測試腳本時更改Ned Batchelder的覆蓋工具的默認版本的python

python _tester.py 

它工作正常。但是,當我嘗試使用覆蓋率工具

coverage erase; coverage run _tester.py; coverage html -d html_cov_report 

它崩潰說assertRaisesRegexp不是我的TestCase子類的屬性。我發現這是因爲覆蓋率工具使用python 2.5和unittest.TestCase.assertRaisesRegexp在2.5中不存在。

無論如何,有人可以告訴我如何更改覆蓋率使用的Python?

編輯:覆蓋雞蛋是在/Library/Python/2.5/site-packages。這很重要嗎?

回答

0

coverage腳本應該有一個shebang可以更改爲正確的版本的Python。

編輯:如果你將它安裝在python 2.5中,可能最容易切換到使用python 2.7進行安裝。

+0

有一個在覆蓋DIR至少36個文件,您可以更改默認的Python到Python 2.7。我查看了看起來像是「運行」模塊的那些模塊(__init__.py,exec_file.py,...),但沒有在頂部看到任何shebang。我應該添加一個嗎? – Harrison 2012-07-12 21:25:29

+0

請不要嘗試編輯coverage.py文件。只需將其重新安裝到您想要的Python安裝中即可。 – 2012-07-13 12:38:02

1

我想的4個選項(有什麼應該做恕我直言順序):

  1. 您可以在python2.7安裝coverage,而不是Python 2.5的。
  2. 我認爲這應該是固定的,如果你運行coverage腳本使用python 2.7:/path/to/python2.7 /path/to/coverage ...,假設python2.5是默認的。
  3. 使用unittest2
  4. 我相信coverage腳本家當應該/usr/bin/env python
+0

我用easy_install來安裝覆蓋範圍(我在Mac上)。有沒有一種方法可以指定使用easy_install安裝它的哪個版本的python? – Harrison 2012-07-12 21:27:41

+0

你的默認python是什麼? ''python -V''。 – mouad 2012-07-12 21:29:15

+0

$ python -V Python 2.7.1 – Harrison 2012-07-12 21:33:31