2013-07-02 17 views
9

Mam klasę do testowania niektórych z mojego kodu. Chciałbym parametrize konfigurację i ponownie uruchomić klasę z różnymi parametrami:py.test klasy testowania parametrami

class TestNormalLTEPlasma: 


    def setup(self, t=10000): 
     self.plasma = plasma.LTEPlasma.from_abundance(t, {'Si':1.0}, 1e-13, atom_data, 10*86400) 

    def test_beta_rad(self): 
     assert self.plasma.beta_rad == 1/(10000 * constants.k_B.cgs.value) 

    def test_t_electron(self): 
     assert self.plasma.t_electron == 0.9 * self.plasma.t_rad 

    def test_saha_calculation_method(self): 
     assert self.plasma.calculate_saha == self.plasma.calculate_saha_lte 

chciałabym aby uruchomić tę klasę począwszy od t = 2000 t = 20000 w krokach 1000

+0

Czego próbowałeś? Są dokumenty dla [sparametryzowanych funkcji testowych] (http://pytest.org/latest/parametrize.html#parametrized-test-functions) i dla [fixtures] (http://pytest.org/latest/fixture.html# fixture), które właśnie to robią. –

Odpowiedz

15

Zamiast konfiguracji funkcja utwórz sparametryzowanego urządzenie testowe:

ts = range(2000, 20001, 1000) # This creates a list of numbers from 2000 to 20000 in increments of 1000. 

@pytest.fixture(params=ts) 
def plasma(request): 
    return plasma.LTEPlasma.from_abundance(request.param, {'Si':1.0}, 1e-13, atom_data, 10*86400) 

a „sparametryzowanego Oprawa test” jest jedną gdzie, kiedy go użyć w przypadku testowego, pytest stworzy nowy przypadek testowy dla każdego parametru i uruchomić każdy osobno.

użyć urządzenia badawczego dodając argument funkcji o nazwie „plazma” do każdej z funkcji testowych, które chcą go:

class TestNormalLTEPlasma: 

    def test_beta_rad(self, plasma): 
     assert plasma.beta_rad == 1/(10000 * constants.k_B.cgs.value) 

    def test_t_electron(self, plasma): 
     assert plasma.t_electron == 0.9 * plasma.t_rad 

    def test_saha_calculation_method(self, plasma): 
     assert plasma.calculate_saha == plasma.calculate_saha_lte 

pytest dba o zbieranie urządzeń, zbierając funkcje testowe, zastanawianie się, który test funkcje potrzebują jakich urządzeń i przekazują wartości urządzeń do funkcji testowych do wykonania.

Zapoznaj się z dokumentami, aby uzyskać więcej informacji: http://pytest.org/latest/fixture.html#fixture-parametrize

Powiązane problemy