2013-02-27 9 views
2

Я новичок в py.test. Пока мне нравится то, что я вижу, и хочу интегрировать его в наш процесс CI.тесты теста py.test в конкретном testSuite

В настоящее время мы используем различные виды схемы параметризации для наших тестов, которые я кратко объясню:

  • вместо параметризующий за тест, мы параметризацию в класс
  • говорит params является touple из из из кортежей, каждый из которых представляет собой различный набор параметров.
  • мы создаем для каждого такого tupla другой экземпляр некоторого TestCaseWithParameters, который является классом unittest.TestCase. Что-то вроде этого:
for test_parameters in params: 
     parameterized_test_suite.addTest(ParametrizedTestCase.parametrize(TestCaseWithParameters,param=test_parameters)) 
  • Каждый из этих классов вводится с self.params и запускает все тесты функции его с этими различными Params.
  • Это означает, что если у нас есть сотни кортежей в params и TestSomethingWithParameters, у вас есть десятки тестов, есть много тестов в общей сложности.

Мой вопрос: Как я могу перевести это на py.test?

Я прочитал this статью о pytest_generate_tests крючка, но, кажется, он вводит зависимость на тест функции, и мне это нужно в TestCase ...

Самый простой способ будет сказать py.test бежать специфический parameterized_tes_suite Я создаю уже, но я не нашел способ сделать это ...

Другой способ - сделать аналогичную инъекцию зависимостей на уровне класса TestCase, но я не нашел способ сделать это это тоже.

+0

Возможно, вы захотите прочитать [Parametrizing tests] (http://pytest.org/latest/example/parametrize.html). Дайте мне знать, если у вас возникнут вопросы после прочтения. –

ответ

2

Вы можете легко параметризуете целые классы, используя @pytest.mark.parametrize маркер:

import pytest 

@pytest.mark.parametrize('n', [0, 1]) 
class TestFoo: 

    def test_42(self, n): 
     assert n == 42 

    def test_7(self, n): 
     assert n == 7 

ВИДЕТЬ documentation on the parameterize marker подробности о том, как пройти в нескольких аргументах и ​​т.д. А также взглянуть на то, как apply markers to classes and modules для получения дополнительной информации по этому вопросу ,

 Смежные вопросы

  • Нет связанных вопросов^_^