Новичок в Pytest, и ему трудно понять, как правильно использовать приборы - PullRequest
0 голосов
/ 02 июня 2018

Попытка реорганизовать какой-то старый ужасный тестовый код и сделать это с помощью Pytest.Тесты выглядят примерно так:

Test/
    Tests_a/
        test_a_foo.py
        test_a_bar.py
        test_a_baz.py
   Tests_b/
       test_b_1.py
       test_b_2.py
       test_b_3.py

Мы хотим запустить Tests_a и Tests_b по отдельности, поэтому я могу просто вызвать pytest Tests_a и pytest Tests_b.

Нам нужно некоторое значениегенерировать один раз и использовать в большинстве тестов.

common_value1 = "something" + random() common_value2 = "something2" + random() ...

Сейчас я делаю это, делая каждую из этих переменных своим собственным приспособлением в conftest.py.Итак, у меня есть

@pytest.fixture(scope="session")
def common_value1():
    return "something" + random()

Пока это работает, но мне интересно, есть ли лучший способ?У нас много этих общих значений, поэтому раздражает заполнение контеста этими переменными.

`

`

Другая проблема в том, что у меня есть какая-то общая утилитафункции, которые я хочу разбить на корневом уровне тестов.У меня проблема в том, что некоторые из этих утилит требуют этих общих ценностей.Возможно ли для не тестовых функций получить приборы?

Итак, у меня есть util.py, который имеет что-то вроде:

def do_common_thing(passed_in_value):
    print(common_value1 + passed_in_value)

Какой правильный способ получить common_value1?Я попытался также превратить эту функцию в фиксатор и взять common_value1 в качестве параметра, но это не так.Единственный способ заставить его работать, это заставить сами тесты получить common_value1 и передать его в do_common_thing (), но это особенно раздражает, когда таких значений много.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...