2011-09-07 11 views
7

çalışıp çalışmadığını gösteren koşullu değişkenler, üretim veritabanından farklı bir veritabanını yüklemesi gereken bir kurulum işlevine sahip olan nosetest'ler çalıştırıyorum. Kullanmakta olduğum ORM, bir model için veritabanının tanımda ayarlanmasını gerektiren bir peewee'dir.Python: Nosetest'in

Bu nedenle bir koşullu değişken belirlemeliyim, ancak nosetest dosyasının dosyayı çalıştırıp çalıştırmadığını kontrol etmek için hangi koşulun kullanılacağını bilmiyorum.

sys.modules numaralı telefondan nose denetleyebileceğiniz Yığın Taşması'nı okuyorum ancak burnun çalışıp çalışmadığını kontrol etmenin daha kesin bir yolu olup olmadığını merak ediyorum.

cevap

9

Belki hangi komutun çalıştığını görmek için sys.argv[0]'u inceliyor musunuz?

+2

'import sys; sınama = sys.argv [0] .sağlar ('nosetest') ' – msiemens

0

sys.argv'yi incelemek işe yarayabilir, ancak burnunuzu ya nosetests ya da python -m nose ile çalıştırabilirsiniz, ki bu size farklı bir sonuç verecektir.

Yığını denetlemek ve kodun nose adlı bir paket aracılığıyla çağrılıp çağrılmadığını görmek için daha sağlam bir yol olduğunu düşünüyorum.

örnek kod:

import inspect 
import unittest 


def is_called_by_nose(): 
    stack = inspect.stack() 
    return any(x[0].f_globals['__name__'].startswith('nose.') for x in stack) 


class TestFoo(unittest.TestCase): 
    def test_foo(self): 
     self.assertTrue(is_called_by_nose()) 

Örnek kullanım:

$ python -m nose test_caller 
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.009s 

OK 
$ nosetests test_caller 
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.009s 

OK 
$ python -m unittest test_caller 
F 
====================================================================== 
FAIL: test_foo (test_caller.TestFoo) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "test_caller.py", line 14, in test_foo 
    self.assertTrue(is_called_by_nose()) 
AssertionError: False is not true 

---------------------------------------------------------------------- 
Ran 1 test in 0.004s 

FAILED (failures=1)