2013-08-07 16 views
7

Czy biblioteka testów jednostkowych dla Pythona (szczególnie 3.x, nie obchodzi mnie 2.x), czy dekorator jest dostępny tylko dla użytkownika root?Test jednostki tylko dla użytkownika root w python

Mam tę funkcję testowania.

def test_blabla_as_root(): 
    self.assertEqual(blabla(), 1) 

Funkcja blabla może być wykonywana tylko przez root. Chcę tylko dekoratora dla użytkownika root, więc zwykły użytkownik pominie ten test:

@support.root_only 
def test_blabla_as_root(): 
    self.assertEqual(blabla(), 1) 

Czy taki dekorator istnieje? Mamy jednak dekorator @ support.cpython_only.

Odpowiedz

6

Jeśli używasz Unittest, możesz pominąć testy lub całe testy używając unittest.skipIf i unittest.skipUnless.

Tutaj można zrobić:

import os 

@unittest.skipUnless(os.getuid() == 0) # Root has an uid of 0 
def test_bla_as_root(self): 
    ... 

które mogłyby zostać uproszczone, a (mniej czytelny):

@unittest.skipIf(os.getuid()) 
Powiązane problemy